diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 86d6c92d1a..3970d1bbcd 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1422,6 +1422,8 @@ append: "末尾に追加" prepend: "先頭に追加" urlPreviewSensitiveList: "サムネイルの表示を制限するURL" urlPreviewSensitiveListDescription: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります。スラッシュで囲むと正規表現になります。一致した場合、サムネイルが表示されなくなります。" +latestBackupAt: "最終バックアップ" +latestSyncAt: "最終同期" _imageEditing: _vars: diff --git a/packages/frontend/src/preferences/utility.ts b/packages/frontend/src/preferences/utility.ts index 0c6e6631f1..ab6e0be04f 100644 --- a/packages/frontend/src/preferences/utility.ts +++ b/packages/frontend/src/preferences/utility.ts @@ -66,11 +66,13 @@ export function getPreferencesProfileMenu(): MenuItem[] { type: 'switch', icon: 'ti ti-cloud-up', text: i18n.ts._preferencesBackup.autoBackup, + caption: i18n.ts.latestBackupAt + ': ' + (store.s.latestPreferencesBackupAt ? new Date(store.s.latestPreferencesBackupAt).toLocaleString() : '-'), ref: autoBackupEnabled, }, { type: 'switch', icon: 'ti ti-cloud-down', text: i18n.ts._preferencesBackup.autoSync, + caption: i18n.ts.latestSyncAt + ': ' + (store.s.latestPreferencesSyncAt ? new Date(store.s.latestPreferencesSyncAt).toLocaleString() : '-'), ref: autoSyncEnabled, }, { text: i18n.ts.export, @@ -173,6 +175,8 @@ export async function cloudSync() { miLocalStorage.setItem('preferences', JSON.stringify(mergeProfiles(prefer.profile, cloudProfile))); prefer.reloadProfile(); + + store.set('latestPreferencesSyncAt', Date.now()); } export async function cloudBackup() { @@ -200,6 +204,8 @@ export async function cloudBackup() { key: prefer.profile.name, value: currentProfile, }); + + store.set('latestPreferencesBackupAt', Date.now()); } export async function listCloudBackups() { diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts index 84ed36abcd..6ff8f08511 100644 --- a/packages/frontend/src/store.ts +++ b/packages/frontend/src/store.ts @@ -122,6 +122,14 @@ export const store = markRaw(new Pizzax('base', { where: 'device', default: true, }, + latestPreferencesBackupAt: { + where: 'device', + default: 0, + }, + latestPreferencesSyncAt: { + where: 'device', + default: 0, + }, })); // TODO: 他のタブと永続化されたstateを同期 diff --git a/packages/i18n/src/autogen/locale.ts b/packages/i18n/src/autogen/locale.ts index c373700317..c1aa6460de 100644 --- a/packages/i18n/src/autogen/locale.ts +++ b/packages/i18n/src/autogen/locale.ts @@ -5703,6 +5703,14 @@ export interface Locale extends ILocale { * スペースで区切るとAND指定になり、改行で区切るとOR指定になります。スラッシュで囲むと正規表現になります。一致した場合、サムネイルが表示されなくなります。 */ "urlPreviewSensitiveListDescription": string; + /** + * 最終バックアップ + */ + "latestBackupAt": string; + /** + * 最終同期 + */ + "latestSyncAt": string; "_imageEditing": { "_vars": { /**