import type { AxiosError } from 'axios'; import { Dimensions, Platform } from 'react-native'; import { showMessage } from 'react-native-flash-message'; export const IS_IOS = Platform.OS === 'ios'; const { width, height } = Dimensions.get('screen'); export const WIDTH = width; export const HEIGHT = height; // for onError react queries and mutations export const showError = (error: AxiosError) => { console.log(JSON.stringify(error?.response?.data)); const description = extractError(error?.response?.data).trimEnd(); showMessage({ message: 'Error', description, type: 'danger', duration: 4000, icon: 'danger', }); }; export const showErrorMessage = (message: string = 'Something went wrong ') => { showMessage({ message, type: 'danger', duration: 4000, }); }; export const extractError = (data: unknown): string => { if (typeof data === 'string') { return data; } if (Array.isArray(data)) { const messages = data.map((item) => { return ` ${extractError(item)}`; }); return `${messages.join('')}`; } if (typeof data === 'object' && data !== null) { const messages = Object.entries(data).map((item) => { const [key, value] = item; const separator = Array.isArray(value) ? ':\n ' : ': '; return `- ${key}${separator}${extractError(value)} \n `; }); return `${messages.join('')} `; } return 'Something went wrong '; };