forked from vergnet/application-amicale
		
	
		
			
				
	
	
		
			106 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import i18n from 'i18n-js';
 | |
| import { ApiRejectType } from './WebData';
 | |
| 
 | |
| export enum REQUEST_STATUS {
 | |
|   SUCCESS = 200,
 | |
|   TOKEN_SAVE = 4,
 | |
|   TOKEN_RETRIEVE = 5,
 | |
|   BAD_INPUT = 400,
 | |
|   FORBIDDEN = 403,
 | |
|   CONNECTION_ERROR = 404,
 | |
|   SERVER_ERROR = 500,
 | |
|   UNKNOWN = 999,
 | |
| }
 | |
| 
 | |
| export enum API_REQUEST_CODES {
 | |
|   SUCCESS = 0,
 | |
|   BAD_CREDENTIALS = 1,
 | |
|   BAD_TOKEN = 2,
 | |
|   NO_CONSENT = 3,
 | |
|   BAD_INPUT = 400,
 | |
|   FORBIDDEN = 403,
 | |
|   UNKNOWN = 999,
 | |
| }
 | |
| 
 | |
| export function getErrorMessage(
 | |
|   props: Partial<ApiRejectType>,
 | |
|   message?: string,
 | |
|   icon?: string
 | |
| ) {
 | |
|   let fullMessage = {
 | |
|     message: '',
 | |
|     icon: '',
 | |
|   };
 | |
|   if (props.code === undefined) {
 | |
|     switch (props.status) {
 | |
|       case REQUEST_STATUS.BAD_INPUT:
 | |
|         fullMessage.message = i18n.t('errors.badInput');
 | |
|         fullMessage.icon = 'alert-circle-outline';
 | |
|         break;
 | |
|       case REQUEST_STATUS.FORBIDDEN:
 | |
|         fullMessage.message = i18n.t('errors.forbidden');
 | |
|         fullMessage.icon = 'lock';
 | |
|         break;
 | |
|       case REQUEST_STATUS.CONNECTION_ERROR:
 | |
|         fullMessage.message = i18n.t('errors.connectionError');
 | |
|         fullMessage.icon = 'access-point-network-off';
 | |
|         break;
 | |
|       case REQUEST_STATUS.SERVER_ERROR:
 | |
|         fullMessage.message = i18n.t('errors.serverError');
 | |
|         fullMessage.icon = 'server-network-off';
 | |
|         break;
 | |
|       case REQUEST_STATUS.TOKEN_SAVE:
 | |
|         fullMessage.message = i18n.t('errors.tokenSave');
 | |
|         fullMessage.icon = 'alert-circle-outline';
 | |
|         break;
 | |
|       case REQUEST_STATUS.TOKEN_RETRIEVE:
 | |
|         fullMessage.message = i18n.t('errors.tokenRetrieve');
 | |
|         fullMessage.icon = 'alert-circle-outline';
 | |
|         break;
 | |
|       default:
 | |
|         fullMessage.message = i18n.t('errors.unknown');
 | |
|         fullMessage.icon = 'alert-circle-outline';
 | |
|         break;
 | |
|     }
 | |
|   } else {
 | |
|     switch (props.code) {
 | |
|       case API_REQUEST_CODES.BAD_CREDENTIALS:
 | |
|         fullMessage.message = i18n.t('errors.badCredentials');
 | |
|         fullMessage.icon = 'account-alert-outline';
 | |
|         break;
 | |
|       case API_REQUEST_CODES.BAD_TOKEN:
 | |
|         fullMessage.message = i18n.t('errors.badToken');
 | |
|         fullMessage.icon = 'account-alert-outline';
 | |
|         break;
 | |
|       case API_REQUEST_CODES.NO_CONSENT:
 | |
|         fullMessage.message = i18n.t('errors.noConsent');
 | |
|         fullMessage.icon = 'account-remove-outline';
 | |
|         break;
 | |
|       case API_REQUEST_CODES.BAD_INPUT:
 | |
|         fullMessage.message = i18n.t('errors.badInput');
 | |
|         fullMessage.icon = 'alert-circle-outline';
 | |
|         break;
 | |
|       case API_REQUEST_CODES.FORBIDDEN:
 | |
|         fullMessage.message = i18n.t('errors.forbidden');
 | |
|         fullMessage.icon = 'lock';
 | |
|         break;
 | |
|       default:
 | |
|         fullMessage.message = i18n.t('errors.unknown');
 | |
|         fullMessage.icon = 'alert-circle-outline';
 | |
|         break;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (props.code !== undefined) {
 | |
|     fullMessage.message += `\n\nCode {${props.status}:${props.code}}`;
 | |
|   } else {
 | |
|     fullMessage.message += `\n\nCode {${props.status}}`;
 | |
|   }
 | |
|   if (message) {
 | |
|     fullMessage.message = message;
 | |
|   }
 | |
|   if (icon) {
 | |
|     fullMessage.icon = icon;
 | |
|   }
 | |
|   return fullMessage;
 | |
| }
 |