-
-
valuesItemUpdated(updated)" @remove="removeItem(cond)"/>
+
+
{{ i18n.ts.add }}
@@ -75,7 +75,7 @@ import { deepClone } from '@/scripts/clone.js';
import { rolesCache } from '@/cache.js';
const emit = defineEmits<{
- (ev: 'update:modelValue', value: any): void;
+ (ev: 'update:modelValue', value: Misskey.entities.RoleCondFormulaValue): void;
(ev: 'remove'): void;
}>();
@@ -95,24 +95,38 @@ function assertValueNot(f: Misskey.entities.RoleCondFormulaValue): f is Misskey.
const dndParentEl = shallowRef
();
const v = ref(deepClone(props.modelValue));
-const values = computed({
+const valueKv = computed(() => {
+ if (assertLogicFormula(v.value)) {
+ return Object.fromEntries(v.value.values.map(v => [v.id, v] as const));
+ } else {
+ return [];
+ }
+});
+
+const valueIds = computed({
get: () => {
if (assertLogicFormula(v.value)) {
- return v.value.values;
+ return v.value.values.map(v => v.id);
} else {
return [];
}
},
set: (newVal) => {
if (assertLogicFormula(v.value)) {
- v.value.values = newVal;
+ v.value.values = newVal.map(id => {
+ if (assertLogicFormula(v.value)) {
+ return v.value.values.find(v => v.id === id) ?? null;
+ } else {
+ return null;
+ }
+ }).filter(v => v !== null);
}
}
});
dragAndDrop({
parent: dndParentEl,
- values,
+ values: valueIds,
group: 'roleFormula',
dragHandle: '.drag-handle',
plugins: [animations()],
@@ -154,15 +168,15 @@ function addValue() {
v.value.values.push({ id: uuid(), type: 'isRemote' });
}
-function valuesItemUpdated(item) {
+function valuesItemUpdated(item: Misskey.entities.RoleCondFormulaValue) {
if (!assertLogicFormula(v.value)) return;
const i = v.value.values.findIndex(_item => _item.id === item.id);
v.value.values[i] = item;
}
-function removeItem(item: Misskey.entities.RoleCondFormulaValue) {
+function removeItem(itemId: string) {
if (!assertLogicFormula(v.value)) return;
- v.value.values = v.value.values.filter(_item => _item.id !== item.id);
+ v.value.values = v.value.values.filter(_item => _item.id !== itemId);
}
function removeSelf() {
diff --git a/packages/frontend/src/pages/admin/server-rules.vue b/packages/frontend/src/pages/admin/server-rules.vue
index 69a09756fa..48124ef5e2 100644
--- a/packages/frontend/src/pages/admin/server-rules.vue
+++ b/packages/frontend/src/pages/admin/server-rules.vue
@@ -11,17 +11,17 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts._serverRules.description }}
-
- {{ i18n.ts.add }}
+ {{ i18n.ts.add }}
{{ i18n.ts.save }}
@@ -32,6 +32,7 @@ SPDX-License-Identifier: AGPL-3.0-only