2020-11-05 16:58:23 +00:00
|
|
|
import shim from '../../../shim';
|
|
|
|
import MigrationHandler from '../MigrationHandler';
|
2021-01-22 17:41:11 +00:00
|
|
|
import Setting from '../../../models/Setting';
|
2021-01-29 18:45:11 +00:00
|
|
|
import { reg } from '../../../registry';
|
2021-12-13 10:32:22 +01:00
|
|
|
import { appTypeToLockType } from '../LockHandler';
|
2021-08-12 16:54:10 +01:00
|
|
|
const { useEffect, useState } = shim.react();
|
2020-08-02 12:28:50 +01:00
|
|
|
|
|
|
|
export interface SyncTargetUpgradeResult {
|
2020-11-12 19:29:22 +00:00
|
|
|
done: boolean;
|
2024-04-05 12:16:49 +01:00
|
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied
|
2020-11-12 19:29:22 +00:00
|
|
|
error: any;
|
2020-08-02 12:28:50 +01:00
|
|
|
}
|
|
|
|
|
2020-11-12 19:13:28 +00:00
|
|
|
export default function useSyncTargetUpgrade(): SyncTargetUpgradeResult {
|
2020-11-05 16:58:23 +00:00
|
|
|
const [upgradeResult, setUpgradeResult] = useState({
|
2020-08-02 12:28:50 +01:00
|
|
|
done: false,
|
|
|
|
error: null,
|
|
|
|
});
|
|
|
|
|
|
|
|
async function upgradeSyncTarget() {
|
2020-08-29 19:12:02 +01:00
|
|
|
reg.logger().info('useSyncTargetUpgrade: Starting process...');
|
|
|
|
|
2020-08-02 12:28:50 +01:00
|
|
|
let error = null;
|
|
|
|
try {
|
2020-08-29 19:12:02 +01:00
|
|
|
reg.logger().info('useSyncTargetUpgrade: Acquire synchronizer...');
|
2020-08-02 12:28:50 +01:00
|
|
|
const synchronizer = await reg.syncTarget().synchronizer();
|
|
|
|
|
2020-08-29 19:12:02 +01:00
|
|
|
reg.logger().info('useSyncTargetUpgrade: Create migration handler...');
|
2020-08-02 12:28:50 +01:00
|
|
|
const migrationHandler = new MigrationHandler(
|
|
|
|
synchronizer.api(),
|
2021-08-12 16:54:10 +01:00
|
|
|
reg.db(),
|
2020-08-02 12:28:50 +01:00
|
|
|
synchronizer.lockHandler(),
|
2021-12-13 10:32:22 +01:00
|
|
|
appTypeToLockType(Setting.value('appType')),
|
2023-08-22 11:58:53 +01:00
|
|
|
Setting.value('clientId'),
|
2020-08-02 12:28:50 +01:00
|
|
|
);
|
|
|
|
|
2020-08-29 19:12:02 +01:00
|
|
|
reg.logger().info('useSyncTargetUpgrade: Start upgrade...');
|
2020-08-02 12:28:50 +01:00
|
|
|
await migrationHandler.upgrade();
|
|
|
|
} catch (e) {
|
|
|
|
error = e;
|
|
|
|
}
|
|
|
|
|
2020-08-29 19:12:02 +01:00
|
|
|
reg.logger().info('useSyncTargetUpgrade: Error:', error);
|
|
|
|
|
2020-08-02 12:28:50 +01:00
|
|
|
if (!error) {
|
|
|
|
Setting.setValue('sync.upgradeState', Setting.SYNC_UPGRADE_STATE_IDLE);
|
|
|
|
await Setting.saveAll();
|
|
|
|
}
|
|
|
|
|
|
|
|
setUpgradeResult({
|
|
|
|
done: true,
|
|
|
|
error: error,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2023-02-20 12:02:29 -03:00
|
|
|
useEffect(() => {
|
2020-11-25 14:40:25 +00:00
|
|
|
void upgradeSyncTarget();
|
2020-08-02 12:28:50 +01:00
|
|
|
}, []);
|
|
|
|
|
|
|
|
return upgradeResult;
|
|
|
|
}
|