-
-
-
-
-
{{ i18n.ts._auth.denied }}
-
-
-
{{ i18n.ts._auth.callback }}
-
{{ i18n.ts._auth.pleaseGoBack }}
-
-
-
-
{{ i18n.tsx._auth.permission({ name }) }}
-
{{ i18n.ts._auth.permissionAsk }}
-
- - {{ i18n.ts._permissions[p] }}
-
-
-
{{ i18n.tsx._auth.shareAccess({ name }) }}
-
{{ i18n.ts._auth.shareAccessAsk }}
-
- {{ i18n.ts.cancel }}
- {{ i18n.ts.accept }}
-
-
+
+
+
+
+
+
+
+
{{ i18n.ts._auth.byClickingYouWillBeRedirectedToThisUrl }}
+
{{ callback }}
+
+
+
-
-
{{ i18n.ts._auth.pleaseLogin }}
-
-
-
-
+
+
diff --git a/packages/frontend/src/pages/my-clips/index.vue b/packages/frontend/src/pages/my-clips/index.vue
index ece998a7a5..acf37a9a2f 100644
--- a/packages/frontend/src/pages/my-clips/index.vue
+++ b/packages/frontend/src/pages/my-clips/index.vue
@@ -77,15 +77,15 @@ async function create() {
clipsCache.delete();
- pagingComponent.value.reload();
+ pagingComponent.value?.reload();
}
function onClipCreated() {
- pagingComponent.value.reload();
+ pagingComponent.value?.reload();
}
function onClipDeleted() {
- pagingComponent.value.reload();
+ pagingComponent.value?.reload();
}
const headerActions = computed(() => []);
diff --git a/packages/frontend/src/pages/my-lists/list.vue b/packages/frontend/src/pages/my-lists/list.vue
index 804a5ae8f8..69e404bd85 100644
--- a/packages/frontend/src/pages/my-lists/list.vue
+++ b/packages/frontend/src/pages/my-lists/list.vue
@@ -110,7 +110,7 @@ function addUser() {
listId: list.value.id,
userId: user.id,
}).then(() => {
- paginationEl.value.reload();
+ paginationEl.value?.reload();
});
});
}
@@ -126,7 +126,7 @@ async function removeUser(item, ev) {
listId: list.value.id,
userId: item.userId,
}).then(() => {
- paginationEl.value.removeItem(item.id);
+ paginationEl.value?.removeItem(item.id);
});
},
}], ev.currentTarget ?? ev.target);
diff --git a/packages/frontend/src/pages/oauth.vue b/packages/frontend/src/pages/oauth.vue
index 733e34eb2c..8719a769e5 100644
--- a/packages/frontend/src/pages/oauth.vue
+++ b/packages/frontend/src/pages/oauth.vue
@@ -4,40 +4,28 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
-
-
-
-
-
-
{{ i18n.tsx._auth.permission({ name }) }}
-
{{ i18n.ts._auth.permissionAsk }}
-
- - {{ i18n.ts._permissions[p] }}
-
-
-
{{ i18n.tsx._auth.shareAccess({ name }) }}
-
{{ i18n.ts._auth.shareAccessAsk }}
-
+
+
+
+
+
-
-
{{ i18n.ts._auth.pleaseLogin }}
-
-
-
-
+
+
diff --git a/packages/frontend/src/pages/page-editor/els/page-editor.el.image.vue b/packages/frontend/src/pages/page-editor/els/page-editor.el.image.vue
index 1cfe7a6d2d..c3ad6657b0 100644
--- a/packages/frontend/src/pages/page-editor/els/page-editor.el.image.vue
+++ b/packages/frontend/src/pages/page-editor/els/page-editor.el.image.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
- $emit('remove')">
+ emit('remove')">
{{ i18n.ts._pages.blocks.image }}
@@ -61,6 +61,7 @@ const props = defineProps<{
id: string;
url: string;
name: string;
+ roleIdsThatCanBeUsedThisDecoration: string[];
};
}>();
@@ -83,6 +84,7 @@ const emit = defineEmits<{
const dialog = shallowRef>();
const exceeded = computed(() => ($i.policies.avatarDecorationLimit - $i.avatarDecorations.length) <= 0);
+const locked = computed(() => props.decoration.roleIdsThatCanBeUsedThisDecoration.length > 0 && !$i.roles.some(r => props.decoration.roleIdsThatCanBeUsedThisDecoration.includes(r.id)));
const angle = ref((props.usingIndex != null ? $i.avatarDecorations[props.usingIndex].angle : null) ?? 0);
const flipH = ref((props.usingIndex != null ? $i.avatarDecorations[props.usingIndex].flipH : null) ?? false);
const offsetX = ref((props.usingIndex != null ? $i.avatarDecorations[props.usingIndex].offsetX : null) ?? 0);
@@ -108,7 +110,7 @@ const decorationsForPreview = computed(() => {
});
function cancel() {
- dialog.value.close();
+ dialog.value?.close();
}
async function update() {
@@ -118,7 +120,7 @@ async function update() {
offsetX: offsetX.value,
offsetY: offsetY.value,
});
- dialog.value.close();
+ dialog.value?.close();
}
async function attach() {
@@ -128,12 +130,12 @@ async function attach() {
offsetX: offsetX.value,
offsetY: offsetY.value,
});
- dialog.value.close();
+ dialog.value?.close();
}
async function detach() {
emit('detach');
- dialog.value.close();
+ dialog.value?.close();
}
diff --git a/packages/frontend/src/pages/settings/privacy.vue b/packages/frontend/src/pages/settings/privacy.vue
index e277dfad71..da3d36b31a 100644
--- a/packages/frontend/src/pages/settings/privacy.vue
+++ b/packages/frontend/src/pages/settings/privacy.vue
@@ -45,17 +45,89 @@ SPDX-License-Identifier: AGPL-3.0-only
- {{ i18n.ts.lockdown }}
+ {{ i18n.ts.lockdown }}{{ i18n.ts.beta }}
- {{ i18n.ts._accountSettings.requireSigninToViewContents }}{{ i18n.ts.beta }}
+ {{ i18n.ts._accountSettings.requireSigninToViewContents }}
{{ i18n.ts._accountSettings.requireSigninToViewContentsDescription1 }}
{{ i18n.ts._accountSettings.requireSigninToViewContentsDescription2 }}
{{ i18n.ts._accountSettings.requireSigninToViewContentsDescription3 }}
+
+
+ {{ i18n.ts._accountSettings.makeNotesFollowersOnlyBefore }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ i18n.ts._accountSettings.makeNotesFollowersOnlyBeforeDescription }}
+ {{ i18n.ts._accountSettings.mayNotEffectForFederatedNotes }}
+
+
+
+
+ {{ i18n.ts._accountSettings.makeNotesHiddenBefore }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ i18n.ts._accountSettings.makeNotesHiddenBeforeDescription }}
+ {{ i18n.ts._accountSettings.mayNotEffectForFederatedNotes }}
+
+
@@ -87,7 +159,7 @@ SPDX-License-Identifier: AGPL-3.0-only