From 841d3ef7cb0c231b30c227edc8c69957c9d0ae69 Mon Sep 17 00:00:00 2001 From: Nitish Ramakrishnan <69108657+niccolopaganini@users.noreply.github.com> Date: Sun, 5 Nov 2023 13:03:24 -0700 Subject: [PATCH] Update emailService.ts --- www/js/control/emailService.ts | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/www/js/control/emailService.ts b/www/js/control/emailService.ts index 61a34fcab..657451d19 100644 --- a/www/js/control/emailService.ts +++ b/www/js/control/emailService.ts @@ -4,29 +4,30 @@ import { logInfo, logDebug, displayError } from "../plugin/logger"; import 'cordova-plugin-email-composer'; function getEmailConfig() { - return async () => { + return new Promise(async (resolve, reject) => { try { logInfo("About to get email config"); let url = "json/emailConfig.json"; let response = await fetch(url); let emailConfigData = await response.json(); logDebug("emailConfigString = " + JSON.stringify(emailConfigData.address)); - return emailConfigData.address; + resolve(emailConfigData.address); } catch (err) { try { let url = "json/emailConfig.json.sample"; let response = await fetch(url); let emailConfigData = await response.json(); logDebug("default emailConfigString = " + JSON.stringify(emailConfigData.address)); - return emailConfigData.address; + resolve(emailConfigData.address); } catch (err) { displayError(err, "Error while reading default email config"); + reject(err); } } - }; + }); } -function hasAccount() { +async function hasAccount() { return new Promise((resolve, reject) => { window['cordova'].plugins['email'].hasAccount(hasAct => { resolve(hasAct); @@ -37,7 +38,7 @@ function hasAccount() { function sendEmail(database: string, emailConfig: string | null) { let parentDir = "unknown"; - if (window['ionic'].Platform.isIOS() && !hasAct) { + if (window['ionic'].Platform.isIOS() && !(await hasAccount())) { alert(i18next.t('email-service.email-account-not-configured')); return; } @@ -76,13 +77,14 @@ function sendEmail(database: string, emailConfig: string | null) { function EmailHelper() { const [emailConfig, setEmailConfig] = useState(null); - // Fetch email config when the component mounts useEffect(() => { - getEmailConfig().then((config) => { - setEmailConfig(config); - }).catch((err) => { - displayError(err, "Error while reading email config"); - }); + getEmailConfig() + .then((config) => { + setEmailConfig(config); + }) + .catch((err) => { + displayError(err, "Error while reading email config"); + }); }, []); return ( @@ -93,3 +95,5 @@ function EmailHelper() { ); } + +export default EmailHelper;