文件
mynode/packages/lib/services/synchronizer/gui/useSyncTargetUpgrade.ts
chen 301194963b
一些检查失败了
automerge / automerge (push) Has been cancelled
react-native-android-build-apk / AssembleRelease (push) Has been cancelled
Build macOS M1 / Main (push) Has been cancelled
Joplin Continuous Integration / Main (macos-15-intel) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-11-vs2026-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-2025) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04-arm) (push) Has been cancelled
Joplin UI tests / Main (ubuntu-22.04) (push) Has been cancelled
Joplin UI tests / Main (windows-2025) (push) Has been cancelled
Joplin UI tests / Mobile (push) Has been cancelled
Close stale issues / ProcessStaleIssues (push) Has been cancelled
feat: Initial clean release of CHM
2026-11-04 11:29:39 +08:00

61 行
1.5 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;
error: Error | null;
}
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;
}