From d7120b7ff8ab334100e9482bfd6b43bb5154fc40 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Sun, 22 Jun 2025 11:39:49 -0400 Subject: [PATCH] replace enable/disable all buttons with toggles --- locales/index.d.ts | 8 ++ .../src/components/MkTokenGenerateWindow.vue | 115 +++++++++++------- sharkey-locales/en-US.yml | 2 + 3 files changed, 80 insertions(+), 45 deletions(-) diff --git a/locales/index.d.ts b/locales/index.d.ts index 5c94d7174f..5cd9865aa5 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -13617,6 +13617,14 @@ export interface Locale extends ILocale { * Are you sure you want to create a token with no permissions? */ "tokenHasNoPermissionsConfirm": string; + /** + * Enable all read-only permissions + */ + "enableAllRead": string; + /** + * Enable all write/edit permissions + */ + "enableAllWrite": string; } declare const locales: { [lang: string]: Locale; diff --git a/packages/frontend/src/components/MkTokenGenerateWindow.vue b/packages/frontend/src/components/MkTokenGenerateWindow.vue index f340e84733..0b8a5dbee0 100644 --- a/packages/frontend/src/components/MkTokenGenerateWindow.vue +++ b/packages/frontend/src/components/MkTokenGenerateWindow.vue @@ -68,15 +68,19 @@ SPDX-License-Identifier: AGPL-3.0-only -
+
{{ i18n.ts.permissionsDescription }}
-
- {{ i18n.ts.enableAll }} - {{ i18n.ts.disableAll }} +
+ {{ i18n.ts.enableAllRead }} + {{ i18n.ts.enableAllWrite }}
- {{ i18n.ts._permissions[kind] }} +
+ +
+ {{ i18n.ts._permissions[kind] }} +
@@ -84,22 +88,26 @@ SPDX-License-Identifier: AGPL-3.0-only -
+
{{ i18n.ts.adminPermissionsDescription }}
-
- {{ i18n.ts.enableAll }} - {{ i18n.ts.disableAll }} +
+ {{ i18n.ts.enableAllRead }} + {{ i18n.ts.enableAllWrite }}
- - {{ i18n.ts._permissions[kind] }} - +
+ +
+ + {{ i18n.ts._permissions[kind] }} + +
@@ -142,7 +150,12 @@ const emit = defineEmits<{ }>(); const defaultPermissions = Misskey.permissions.filter(p => !p.startsWith('read:admin') && !p.startsWith('write:admin')); +const defaultReadPermissions = defaultPermissions.filter(p => p.startsWith('read:')); +const defaultWritePermissions = defaultPermissions.filter(p => p.startsWith('write:')); + const adminPermissions = Misskey.permissions.filter(p => p.startsWith('read:admin') || p.startsWith('write:admin')); +const adminReadPermissions = adminPermissions.filter(p => p.startsWith('read:')); +const adminWritePermissions = adminPermissions.filter(p => p.startsWith('write:')); const dialog = useTemplateRef('dialog'); const name = ref(props.initialName); @@ -174,6 +187,42 @@ if (props.initialPermissions) { } } +const enableAllRead = computed({ + get() { + return defaultReadPermissions.every(p => permissionSwitches.value[p]); + }, + set(value: boolean) { + defaultReadPermissions.forEach(p => permissionSwitches.value[p] = value); + }, +}); + +const enableAllWrite = computed({ + get() { + return defaultWritePermissions.every(p => permissionSwitches.value[p]); + }, + set(value: boolean) { + defaultWritePermissions.forEach(p => permissionSwitches.value[p] = value); + }, +}); + +const enableAllReadAdmin = computed({ + get() { + return adminReadPermissions.every(p => permissionSwitchesForAdmin.value[p]); + }, + set(value: boolean) { + adminReadPermissions.forEach(p => permissionSwitchesForAdmin.value[p] = value); + }, +}); + +const enableAllWriteAdmin = computed({ + get() { + return adminWritePermissions.every(p => permissionSwitchesForAdmin.value[p]); + }, + set(value: boolean) { + adminWritePermissions.forEach(p => permissionSwitchesForAdmin.value[p] = value); + }, +}); + async function ok(): Promise { if (props.withSharedAccess === true && grantees.value.length < 1) { await os.alert({ @@ -207,34 +256,6 @@ async function ok(): Promise { dialog.value?.close(); } -function disableAll(): void { - for (const p in permissionSwitches.value) { - permissionSwitches.value[p] = false; - } -} - -function disableAllAdmin(): void { - if (iAmAdmin) { - for (const p in permissionSwitchesForAdmin.value) { - permissionSwitchesForAdmin.value[p] = false; - } - } -} - -function enableAll(): void { - for (const p in permissionSwitches.value) { - permissionSwitches.value[p] = true; - } -} - -function enableAllAdmin(): void { - if (iAmAdmin) { - for (const p in permissionSwitchesForAdmin.value) { - permissionSwitchesForAdmin.value[p] = true; - } - } -} - async function addGrantee(): Promise { const user = await os.selectUser({ localOnly: true, @@ -273,4 +294,8 @@ function removeGrantee(index: number) { .grantee > :first-child { flex: 1; } + +.divider { + border-bottom: 1px solid var(--MI_THEME-divider); +} diff --git a/sharkey-locales/en-US.yml b/sharkey-locales/en-US.yml index 5e3ae3ac18..828f2924b5 100644 --- a/sharkey-locales/en-US.yml +++ b/sharkey-locales/en-US.yml @@ -719,3 +719,5 @@ grantSharedAccessNoSelection2: "No shared access users were selected. Please add grantSharedAccessSuccess: "Shared access granted" grantSharedAccessSuccess2: "Shared access has been granted to {num} users." tokenHasNoPermissionsConfirm: "Are you sure you want to create a token with no permissions?" +enableAllRead: "Enable all read-only permissions" +enableAllWrite: "Enable all write/edit permissions"