From 1057295d5df871fcc0cc76eb0f7dc535ab9ab178 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun, 26 Jul 2026 10:04:13 +0900 Subject: [PATCH] wip --- packages/frontend/src/components/MkMenu.vue | 2 ++ packages/frontend/src/preferences/utility.ts | 20 +++++++++++++++++++- packages/frontend/src/types/menu.ts | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/frontend/src/components/MkMenu.vue b/packages/frontend/src/components/MkMenu.vue index 055fbba992..4d0ddc2e89 100644 --- a/packages/frontend/src/components/MkMenu.vue +++ b/packages/frontend/src/components/MkMenu.vue @@ -191,6 +191,7 @@ SPDX-License-Identifier: AGPL-3.0-only role="menuitem" tabindex="0" :class="['_button', $style.item, { [$style.danger]: item.danger, [$style.active]: unref(item.active) }]" + :disabled="unref(item.disabled)" @click.prevent="unref(item.active) ? close(false) : clicked(item.action, $event)" @mouseenter.passive="onItemMouseEnter" @mouseleave.passive="onItemMouseLeave" @@ -702,6 +703,7 @@ function guardMouseMove(ev: MouseEvent) { &:disabled { cursor: not-allowed; + opacity: 0.5; } &.danger { diff --git a/packages/frontend/src/preferences/utility.ts b/packages/frontend/src/preferences/utility.ts index d697283c5a..7f65738384 100644 --- a/packages/frontend/src/preferences/utility.ts +++ b/packages/frontend/src/preferences/utility.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { ref, watch } from 'vue'; +import { computed, ref, watch } from 'vue'; import { mergeProfiles } from './manager.js'; import type { PreferencesProfile } from './manager.js'; import type { MenuItem } from '@/types/menu.js'; @@ -73,12 +73,30 @@ export function getPreferencesProfileMenu(): MenuItem[] { text: i18n.ts._preferencesBackup.autoBackup, caption: i18n.ts._preferencesBackup.autoBackup_description, ref: autoBackupEnabled, + }, { + type: 'button', + icon: 'ti ti-cloud-up', + text: i18n.ts._preferencesBackup.forceBackup, + disabled: computed(() => !autoBackupEnabled.value), + action: () => { + cloudBackup(); + }, + }, { + type: 'divider', }, { type: 'switch', icon: 'ti ti-cloud-down', text: i18n.ts._preferencesBackup.autoSync, caption: i18n.ts._preferencesBackup.autoSync_description, ref: autoSyncEnabled, + }, { + type: 'button', + icon: 'ti ti-cloud-down', + text: i18n.ts._preferencesBackup.forceSync, + disabled: computed(() => !autoSyncEnabled.value), + action: () => { + cloudSync(); + }, }], }, { text: i18n.ts.export, diff --git a/packages/frontend/src/types/menu.ts b/packages/frontend/src/types/menu.ts index 1c037d80d7..3a534f1de4 100644 --- a/packages/frontend/src/types/menu.ts +++ b/packages/frontend/src/types/menu.ts @@ -23,6 +23,7 @@ export interface MenuButton { danger?: boolean; active?: boolean | ComputedRef; avatar?: Misskey.entities.User; + disabled?: boolean | Ref; action: MenuAction; }