fix: better handle import errors

This commit is contained in:
Baptiste Grob
2020-09-09 16:54:31 +02:00
parent c3ad129016
commit 553f057dbf

View File

@@ -375,9 +375,11 @@ class AccountMenuCtrl extends PureViewCtrl<{}, AccountMenuState> {
if (!data) {
return;
}
if (data.auth_params || data.keyParams) {
const version = data.keyParams?.version || data.auth_params?.version;
if (!this.application!.protocolService!.supportedVersions().includes(version)) {
if (data.version || data.auth_params || data.keyParams) {
const version = data.version || data.keyParams?.version || data.auth_params?.version;
if (
!this.application!.protocolService!.supportedVersions().includes(version)
) {
await this.setState({ importData: null });
alertDialog({ text: STRING_UNSUPPORTED_BACKUP_FILE_VERSION });
return;
@@ -419,12 +421,19 @@ class AccountMenuCtrl extends PureViewCtrl<{}, AccountMenuState> {
loading: true
}
});
const errorCount = await this.importJSONData(data, password);
const result = await this.application!.importData(
data,
password
);
this.setState({
importData: null
});
if (errorCount > 0) {
const message = StringImportError(errorCount);
if ('error' in result) {
this.application!.alertService!.alert(
result.error
);
} else if (result.errorCount) {
const message = StringImportError(result.errorCount);
this.application!.alertService!.alert(
message
);
@@ -435,14 +444,6 @@ class AccountMenuCtrl extends PureViewCtrl<{}, AccountMenuState> {
}
}
async importJSONData(data: BackupFile, password?: string) {
const { errorCount } = await this.application!.importData(
data,
password
);
return errorCount;
}
async downloadDataArchive() {
this.application!.getArchiveService().downloadBackup(this.getState().mutable.backupEncrypted);
}