1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-24 10:27:10 +02:00
joplin/ReactNativeClient/lib/services/synchronizer/gui/useSyncTargetUpgrade.ts

58 lines
1.4 KiB
TypeScript

import { useEffect, useState } from 'react';
import MigrationHandler from 'lib/services/synchronizer/MigrationHandler';
const Setting = require('lib/models/Setting');
const { reg } = require('lib/registry');
export interface SyncTargetUpgradeResult {
done: boolean,
error: any,
}
export default function useSyncTargetUpgrade():SyncTargetUpgradeResult {
const [upgradeResult, setUpgradeResult] = useState<SyncTargetUpgradeResult>({
done: false,
error: null,
});
async function upgradeSyncTarget() {
reg.logger().info('useSyncTargetUpgrade: Starting process...');
let error = null;
try {
reg.logger().info('useSyncTargetUpgrade: Acquire synchronizer...');
const synchronizer = await reg.syncTarget().synchronizer();
reg.logger().info('useSyncTargetUpgrade: Create migration handler...');
const migrationHandler = new MigrationHandler(
synchronizer.api(),
synchronizer.lockHandler(),
Setting.value('appType'),
Setting.value('clientId')
);
reg.logger().info('useSyncTargetUpgrade: Start upgrade...');
await migrationHandler.upgrade();
} catch (e) {
error = e;
}
reg.logger().info('useSyncTargetUpgrade: Error:', error);
if (!error) {
Setting.setValue('sync.upgradeState', Setting.SYNC_UPGRADE_STATE_IDLE);
await Setting.saveAll();
}
setUpgradeResult({
done: true,
error: error,
});
}
useEffect(function() {
upgradeSyncTarget();
}, []);
return upgradeResult;
}