+
{{ i18n.ts.adminPermissionsDescription }}
-
@@ -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"