diff --git a/apps/mobile/app/components/launcher/index.js b/apps/mobile/app/components/launcher/index.js
index 696c94461..81aa2b548 100644
--- a/apps/mobile/app/components/launcher/index.js
+++ b/apps/mobile/app/components/launcher/index.js
@@ -102,7 +102,8 @@ const Launcher = React.memo(
if (db.migrations.required() && !verifyUser) {
presentSheet({
component: ,
- onClose: () => {
+ onClose: async () => {
+ await db.init();
loadNotes();
},
disableClosing: true
@@ -117,10 +118,6 @@ const Launcher = React.memo(
}
}, [loadNotes, verifyUser]);
- // useEffect(() => {
- // hideSplashScreen();
- // }, [verifyUser]);
-
useEffect(() => {
if (!loading) {
doAppLoadActions();
diff --git a/apps/mobile/app/components/sheets/migrate/index.tsx b/apps/mobile/app/components/sheets/migrate/index.tsx
index 80de17231..0d2370720 100644
--- a/apps/mobile/app/components/sheets/migrate/index.tsx
+++ b/apps/mobile/app/components/sheets/migrate/index.tsx
@@ -20,22 +20,92 @@ along with this program. If not, see .
import React, { useState } from "react";
import { View } from "react-native";
import { db } from "../../../common/database";
+import { MMKV } from "../../../common/database/mmkv";
import BackupService from "../../../services/backup";
-import { eSendEvent, ToastEvent } from "../../../services/event-manager";
+import {
+ eSendEvent,
+ presentSheet,
+ ToastEvent
+} from "../../../services/event-manager";
import { useThemeStore } from "../../../stores/use-theme-store";
import { eCloseProgressDialog } from "../../../utils/events";
import { sleep } from "../../../utils/time";
import { Dialog } from "../../dialog";
import DialogHeader from "../../dialog/dialog-header";
import { presentDialog } from "../../dialog/functions";
+import SheetProvider from "../../sheet-provider";
import { Button } from "../../ui/button";
import { Notice } from "../../ui/notice";
import Seperator from "../../ui/seperator";
import { ProgressBarComponent } from "../../ui/svg/lazy";
import Paragraph from "../../ui/typography/paragraph";
+import { Issue } from "../github/issue";
+
+const alertMessage = `Read carefully before continuing:
+
+It is required that you download and save a backup of your data.
+
+Some merge conflicts in your notes after a migration are expected. It is recommended that you resolve them carefully. But if you are feeling reckless and want to risk losing some data, you can logout log back in.
+
+If you face any other issues or are unsure about what to do, feel free to reach out to us via https://discord.com/invite/zQBK97EE22 or email us at support@streetwriters.co`;
+
+export const makeError = (
+ stack: string,
+ component: string
+) => `Please let us know what happened. What steps we can take to reproduce the issue here.
+
+_______________________________
+Stacktrace: In ${component}::${stack}`;
+
export default function Migrate() {
const colors = useThemeStore((state) => state.colors);
const [loading, setLoading] = useState(false);
+ const [_error, _setError] = useState();
+ const [reset, setReset] = useState(false);
+
+ const reportError = (error: Error) => {
+ _setError(error);
+ presentSheet({
+ context: "local",
+ component: (
+
+ )
+ });
+ };
+
+ const startMigration = async () => {
+ try {
+ setLoading(true);
+ const backupSaved = await BackupService.run(false, "local");
+ if (!backupSaved) {
+ ToastEvent.show({
+ heading: "Migration failed",
+ message: "You must download a backup of your data before migrating.",
+ context: "local"
+ });
+ setLoading(false);
+ return;
+ }
+ await db.migrations?.migrate();
+ eSendEvent(eCloseProgressDialog);
+ setLoading(false);
+ await sleep(500);
+ presentDialog({
+ title: "Migration successful",
+ paragraph:
+ "Your data has been migrated. If you face any issues after the migration please reach out to us via email or Discord.",
+ context: "global",
+ negativeText: "Ok"
+ });
+ } catch (e) {
+ setLoading(false);
+ reportError(e as Error);
+ }
+ };
return (
-
+
{loading ? (
<>
@@ -94,35 +154,51 @@ If you face any other issues or are unsure about what to do, feel free to reach
>
+ ) : _error ? (
+ <>
+
+ An error occured while migrating your data. You can logout of your
+ account and try to relogin. However this is not recommended as it
+ may result in some data loss if your data was not synced.
+
+
+ {reset ? (
+
+ App data has been cleared. Kindly relaunch the app to login again.
+
+ ) : (
+