diff --git a/android/app/build.gradle b/android/app/build.gradle index ca3869d6..a01b10a8 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -96,7 +96,7 @@ android { applicationId "com.minibits_wallet" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 58012 + versionCode 58013 versionName "0.1.9" } diff --git a/package.json b/package.json index 1e9fda8b..a41ff28c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "minibits_wallet", - "version": "0.1.9-beta.18", + "version": "0.1.9-beta.19", "private": true, "scripts": { "android:clean": "cd android && ./gradlew clean", diff --git a/src/screens/ExportBackupScreen.tsx b/src/screens/ExportBackupScreen.tsx index f68ec7ec..c6e1b557 100644 --- a/src/screens/ExportBackupScreen.tsx +++ b/src/screens/ExportBackupScreen.tsx @@ -32,7 +32,7 @@ import { ProofsStoreSnapshot } from '../models/ProofsStore' import { getSnapshot } from 'mobx-state-tree' import { ContactsStoreSnapshot } from '../models/ContactsStore' import { MintsStoreSnapshot } from '../models/MintsStore' -import { TransactionsStoreSnapshot } from '../models/TransactionsStore' +import { Database } from '../services' interface ExportBackupScreenProps extends SettingsStackScreenProps<'ExportBackup'> {} @@ -44,7 +44,6 @@ export const ExportBackupScreen: FC = const { mintsStore, contactsStore, - transactionsStore, proofsStore } = useStores() @@ -59,12 +58,21 @@ export const ExportBackupScreen: FC = const [isEcashInBackup, setIsEcashInBackup] = useState(true) const [isMintsInBackup, setIsMintsInBackup] = useState(true) const [isContactsInBackup, setIsContactsInBackup] = useState(true) - const [isTransactionsInBackup, setIsTransactionsInBackup] = useState(true) + useEffect(() => { const loadProofs = async () => { setIsLoading(true) - // log.trace('[loadProofs]', {proofs: proofsStore.proofs}) + + // fix if rootStore migration failed and some proofs are missing urls + if (proofsStore.allProofs.some(proof => proof.mintUrl.length === 0 )) { + for (const mint of mintsStore.allMints) { + for(const keysetId of mint.keysetIds) { + Database.updateProofsMintUrl(keysetId, mint.mintUrl) + } + } + } + // full refresh of proofs from DB in case the state is broken await proofsStore.loadProofsFromDatabase() @@ -88,10 +96,6 @@ export const ExportBackupScreen: FC = const toggleBackupContanctsSwitch = () => setIsContactsInBackup(previousState => !previousState) - - const toggleBackupTransactionsSwitch = () => - setIsTransactionsInBackup(previousState => !previousState) - const copyBackup = function () { try { @@ -115,10 +119,6 @@ export const ExportBackupScreen: FC = lastPendingReceivedCheck: undefined } - let exportedTransactionsStore: TransactionsStoreSnapshot = { - transactions: [] - } - if(isEcashInBackup) { // This is emptied in snapshot postprocess! exportedProofsStore = { @@ -138,15 +138,10 @@ export const ExportBackupScreen: FC = exportedContactsStore = getSnapshot(contactsStore) } - if(isTransactionsInBackup) { - exportedTransactionsStore = getSnapshot(transactionsStore) - } - const exportedSnapshot = { proofsStore: exportedProofsStore, mintsStore: exportedMintsStore, - contactsStore: exportedContactsStore, - transactionsStore: exportedTransactionsStore + contactsStore: exportedContactsStore, } log.trace({exportedSnapshot}) @@ -477,21 +472,6 @@ export const ExportBackupScreen: FC = topSeparator /> )} - {contactsStore.count > 0 && ( - - - - } - topSeparator - /> - )} } style={[$card]} diff --git a/src/screens/ImportBackupScreen.tsx b/src/screens/ImportBackupScreen.tsx index ec15b517..96cc0ae4 100644 --- a/src/screens/ImportBackupScreen.tsx +++ b/src/screens/ImportBackupScreen.tsx @@ -77,8 +77,7 @@ export const ImportBackupScreen: FC> = obser const [walletSnapshot, setWalletSnapshot] = useState<{ proofsStore: ProofsStoreSnapshot, mintsStore: MintsStoreSnapshot, - contactsStore: ContactsStoreSnapshot, - transactionsStore: TransactionsStoreSnapshot + contactsStore: ContactsStoreSnapshot, } | undefined>(undefined) // type tbd const [profileToRecover, setProfileToRecover] = useState(undefined) const [isLoading, setIsLoading] = useState(false) @@ -140,6 +139,8 @@ export const ImportBackupScreen: FC> = obser // Used by Import backup flow const onPasteBackup = async function () { try { + setStatusMessage('Inserting backup...') + setIsLoading(true) const maybeBackup = await Clipboard.getString() if(!maybeBackup) { @@ -149,6 +150,8 @@ export const ImportBackupScreen: FC> = obser const cleaned = maybeBackup.trim() setBackup(cleaned) + setStatusMessage('') + setIsLoading(false) } catch (e: any) { handleError(e) } @@ -163,13 +166,12 @@ export const ImportBackupScreen: FC> = obser const snapshot = JSON.parse(decoded) as { proofsStore: ProofsStoreSnapshot, mintsStore: MintsStoreSnapshot, - contactsStore: ContactsStoreSnapshot, - transactionsStore: TransactionsStoreSnapshot + contactsStore: ContactsStoreSnapshot, } // log.trace('[getWalletSnapshot]', {snapshot}) - if(!snapshot.proofsStore || !snapshot.mintsStore || !snapshot.contactsStore || !snapshot.transactionsStore) { + if(!snapshot.proofsStore || !snapshot.mintsStore || !snapshot.contactsStore) { throw new Error('Wrong backup format.') } @@ -259,8 +261,7 @@ export const ImportBackupScreen: FC> = obser applySnapshot(proofsStore, walletSnapshot.proofsStore) applySnapshot(mintsStore, walletSnapshot.mintsStore) - applySnapshot(contactsStore, walletSnapshot.contactsStore) - applySnapshot(transactionsStore, walletSnapshot.transactionsStore) + applySnapshot(contactsStore, walletSnapshot.contactsStore) log.trace('After import', {rootStore}) @@ -341,6 +342,7 @@ export const ImportBackupScreen: FC> = obser const numIconColor = useThemeColor('textDim') const textHint = useThemeColor('textDim') const inputBg = useThemeColor('background') + const loadingBg = useThemeColor('background') const headerTitle = useThemeColor('headerTitle') if(mnemonicExists && !isAddressOnlyRecovery) { @@ -582,7 +584,7 @@ export const ImportBackupScreen: FC> = obser /> {error && } {info && } - {isLoading && } + {isLoading && } ) }