mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-24 10:27:10 +02:00
62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
import shim from '../../../shim';
|
|
import MigrationHandler from '../MigrationHandler';
|
|
import Setting from '../../../models/Setting';
|
|
import { reg } from '../../../registry';
|
|
import { appTypeToLockType } from '../LockHandler';
|
|
const { useEffect, useState } = shim.react();
|
|
|
|
export interface SyncTargetUpgradeResult {
|
|
done: boolean;
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied
|
|
error: any;
|
|
}
|
|
|
|
export default function useSyncTargetUpgrade(): SyncTargetUpgradeResult {
|
|
const [upgradeResult, setUpgradeResult] = useState({
|
|
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(),
|
|
reg.db(),
|
|
synchronizer.lockHandler(),
|
|
appTypeToLockType(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(() => {
|
|
void upgradeSyncTarget();
|
|
}, []);
|
|
|
|
return upgradeResult;
|
|
}
|