|
import checkUserDebugMode from '@salesforce/apex/UserDebugMode.checkUserDebugMode'; |
|
|
|
/** |
|
* Get User Debug Mode from Apex and store in sessionStorage. |
|
* @returns {Promise<boolean>} |
|
*/ |
|
const getUserDebugMode = async () => { |
|
let userDebugMode = sessionStorage.getItem('userDebugMode'); |
|
|
|
// If the sessionStorage is not set, |
|
// get the User's Debug settings from Apex. |
|
if (!userDebugMode) { |
|
userDebugMode = await checkUserDebugMode(); |
|
|
|
// Convert boolean to string for sessionStorage. |
|
userDebugMode = |
|
typeof userDebugMode === 'boolean' ? `${userDebugMode}` : undefined; |
|
|
|
sessionStorage.setItem('userDebugMode', userDebugMode); |
|
|
|
if (userDebugMode === 'true') { |
|
// eslint-disable-next-line no-console |
|
console.log('%cUser Debug Mode Enabled', 'color:green'); |
|
} |
|
} |
|
|
|
// Convert string to boolean. |
|
return userDebugMode === 'true'; |
|
}; |
|
|
|
/** |
|
* Sends console message based on debug mode. |
|
*/ |
|
class debugUtil { |
|
/** |
|
* Sends console message based on debug mode. |
|
* @param {string} type |
|
* @param messages |
|
* @returns {Promise<void>} |
|
*/ |
|
static logMessage = async (type, messages) => { |
|
const isDebugMode = await getUserDebugMode(); |
|
|
|
if (isDebugMode) { |
|
const args = Array.prototype.slice.call(messages); |
|
// eslint-disable-next-line no-console,prefer-spread |
|
console[type].apply(console, args); |
|
} |
|
}; |
|
|
|
/** |
|
* Sends console.log messages based on debug mode. |
|
*/ |
|
static log(...args) { |
|
this.logMessage('log', args); |
|
} |
|
|
|
/** |
|
* Sends console.warn messages based on debug mode. |
|
*/ |
|
static warn(...args) { |
|
this.logMessage('warn', args); |
|
} |
|
|
|
/** |
|
* Sends console.error messages based on debug mode. |
|
*/ |
|
static error(...args) { |
|
this.logMessage('error', args); |
|
} |
|
} |
|
|
|
export { getUserDebugMode, debugUtil }; |