diff --git a/apps/mobile/app/common/filesystem/upload.js b/apps/mobile/app/common/filesystem/upload.js index bef25c8ae..96cbbe3b9 100644 --- a/apps/mobile/app/common/filesystem/upload.js +++ b/apps/mobile/app/common/filesystem/upload.js @@ -76,6 +76,9 @@ export async function uploadFile(filename, data, cancelToken) { let result = status >= 200 && status < 300 && text.length === 0; useAttachmentStore.getState().remove(filename); if (result) { + DatabaseLogger.info( + `File upload status: ${filename}, ${status}, ${text}` + ); let attachment = db.attachments.attachment(filename); if (!attachment) return result; if ( @@ -84,8 +87,13 @@ export async function uploadFile(filename, data, cancelToken) { ) { RNFetchBlob.fs.unlink(`${cacheDir}/${filename}`).catch(console.log); } + } else { + const fileInfo = await RNFetchBlob.fs.stat(uploadFilePath); + throw new Error( + `${status}, ${text}, name: ${fileInfo.filename}, length: ${fileInfo}` + ); } - DatabaseLogger.info(`File upload status: ${filename}, ${status}, ${text}`); + return result; } catch (e) { useAttachmentStore.getState().remove(filename); diff --git a/apps/mobile/app/hooks/use-app-events.js b/apps/mobile/app/hooks/use-app-events.js index 8add889c0..8cf63ca19 100644 --- a/apps/mobile/app/hooks/use-app-events.js +++ b/apps/mobile/app/hooks/use-app-events.js @@ -58,7 +58,8 @@ import { setEmailVerifyMessage, setLoginMessage, setRateAppMessage, - setRecoveryKeyMessage + setRecoveryKeyMessage, + setUpdateAvailableMessage } from "../services/message"; import PremiumService from "../services/premium"; import SettingsService from "../services/settings"; @@ -424,9 +425,7 @@ export const useAppEvents = () => { await PremiumService.setPremiumStatus(); setLastSynced(await db.lastSynced()); await useDragState.getState().init(); - if (!user) { - return setLoginMessage(); - } + if (!user) return; let userEmailConfirmed = SettingsService.get().userEmailConfirmed; setUser(user); @@ -623,7 +622,6 @@ export const useAppEvents = () => { }; const doAppLoadActions = async () => { - await sleep(500); if (SettingsService.get().sessionExpired) { eSendEvent(eLoginSessionExpired); return; @@ -632,6 +630,10 @@ const doAppLoadActions = async () => { await useMessageStore.getState().setAnnouncement(); if (NewFeature.present()) return; if (await checkAppUpdateAvailable()) return; + if (!(await db.user.getUser())) { + setLoginMessage(); + return; + } if (await checkForRateAppRequest()) return; if (await PremiumService.getRemainingTrialDaysStatus()) return; if (SettingsService.get().introCompleted) { @@ -652,9 +654,8 @@ const checkAppUpdateAvailable = async () => { ? await getGithubVersion() : await checkVersion(); if (!version || !version?.needsUpdate) return false; - presentSheet({ - component: (ref) => - }); + + setUpdateAvailableMessage(version); return true; } catch (e) { return false; diff --git a/apps/mobile/app/services/message.js b/apps/mobile/app/services/message.js index dfc84517c..11cc8459c 100644 --- a/apps/mobile/app/services/message.js +++ b/apps/mobile/app/services/message.js @@ -25,9 +25,10 @@ import { eOpenRateDialog, eOpenRecoveryKeyDialog } from "../utils/events"; -import { eSendEvent } from "./event-manager"; +import { eSendEvent, presentSheet } from "./event-manager"; import PremiumService from "./premium"; import SettingsService from "./settings"; +import { Update } from "../components/sheets/update"; const rateAppMessage = { visible: true, @@ -136,3 +137,21 @@ const autoBackupsOff = { export function setAutobackOffMessage() { useMessageStore.getState().setMessage(autoBackupsOff); } + +const updateAvailableMessage = (version) => ({ + visible: true, + message: "New update available", + actionText: "Tap here to update to the latest version", + onPress: () => { + presentSheet({ + component: (ref) => + }); + }, + data: {}, + icon: "update", + type: "normal" +}); + +export function setUpdateAvailableMessage(version) { + useMessageStore.getState().setMessage(updateAvailableMessage(version)); +}