UNPKG

fonteva-design-guide

Version:

## Dev, Build and Test

67 lines (58 loc) 2.17 kB
import { publishEvent } from 'c/pubsub'; var serviceCallPromise = {}; const getValue = (functionCall, args, forceCall) => { let trace = Error().stack; return new Promise((resolve, reject) => { const customError = args.customError; delete args.customError; let cacheString = functionCall.toString() + JSON.stringify(args); if (serviceCallPromise[cacheString] == null || forceCall) { serviceCallPromise[cacheString] = functionCall(args) .then(result => { const error = isSyslogError(result, args, trace, customError); if (error) { reject(error); } else { resolve(result); return result; } }) .catch(error => { reject(error); }); } else { serviceCallPromise[cacheString].then(result => { resolve(result); return result; }); } }); }; const isSyslogError = (result, params, trace, customError) => { if (result != null && result.sysLog != null) { if (customError) { result.sysLog.cleanMessage = result.sysLog.exMessage.replace(/\(Class\..*$/, ''); return result; } let debug = sessionStorage.getItem('fon.log'); let verbose = debug === 'debug'; if (verbose) { console.groupCollapsed('stack trace'); console.log(trace); console.groupEnd(); console.groupCollapsed('action parameters'); console.log(JSON.stringify(params, null, ' ')); console.groupEnd(); console.groupCollapsed('return value'); console.log(JSON.stringify(result, null, ' ')); console.groupEnd(); } publishEvent('toast', { message: result.message, variant: 'error' }); return result.message; } return false; }; export { getValue };