+
+
updateRoleDisplay(role, value)"
>
- {{ i18n.ts._roleDisplay.title }}
+ {{ i18n.ts._roleDisplay.displayToggle }}
{{ i18n.ts._roleDisplay.alwaysShownByAdmin }}
@@ -30,7 +33,7 @@ SPDX-License-Identifier: AGPL-3.0-only
import { ref, computed } from 'vue';
import type * as Misskey from 'misskey-js';
import MkSwitch from '@/components/MkSwitch.vue';
-import MkInfo from '@/components/MkInfo.vue';
+import MkFeatureBanner from '@/components/MkFeatureBanner.vue';
import MkRolePreview from '@/components/MkRolePreview.vue';
import { misskeyApi } from '@/utility/misskey-api.js';
import { i18n } from '@/i18n.js';
@@ -40,31 +43,18 @@ import { updateCurrentAccount } from '@/accounts.js';
const $i = ensureSignin();
-type RoleDisplayRole = Misskey.entities.IResponse['roles'][number] & {
- isPublicDisplayRequired?: boolean;
-};
-type MeDetailedWithRoleDisplay = Misskey.entities.MeDetailed & {
- hiddenRoleIds?: string[];
- roles: RoleDisplayRole[];
-};
-type IUpdateWithHiddenRoleIdsRequest = Misskey.Endpoints['i/update']['req'] & {
- hiddenRoleIds: string[];
-};
-
-const me = $i as MeDetailedWithRoleDisplay;
-
-const hiddenRoleIds = ref([...getHiddenRoleIds(me)]);
-const roleDisplayRoles = computed(() => me.roles);
+const hiddenRoleIds = ref([...getHiddenRoleIds($i)]);
+const roleDisplayRoles = computed(() => $i.roles);
function getHiddenRoleIds(user: { hiddenRoleIds?: string[] }): string[] {
return user.hiddenRoleIds ?? [];
}
-function isRoleDisplayShown(role: RoleDisplayRole): boolean {
+function isRoleDisplayShown(role: Misskey.entities.RoleLite): boolean {
return role.isPublicDisplayRequired === true || !hiddenRoleIds.value.includes(role.id);
}
-async function updateRoleDisplay(role: RoleDisplayRole, visible: boolean) {
+async function updateRoleDisplay(role: Misskey.entities.RoleLite, visible: boolean) {
if (role.isPublicDisplayRequired === true) return;
const nextHiddenRoleIds = new Set(hiddenRoleIds.value);
@@ -77,7 +67,8 @@ async function updateRoleDisplay(role: RoleDisplayRole, visible: boolean) {
const nextIds = roleDisplayRoles.value
.filter(role => role.isPublicDisplayRequired !== true && nextHiddenRoleIds.has(role.id))
.map(role => role.id);
- const updated = await misskeyApi
('i/update', {
+
+ const updated = await misskeyApi('i/update', {
hiddenRoleIds: nextIds,
});
@@ -86,15 +77,13 @@ async function updateRoleDisplay(role: RoleDisplayRole, visible: boolean) {
}
definePage(() => ({
- title: i18n.ts.roleSettings,
+ title: i18n.ts.roles,
icon: 'ti ti-badges',
}));
diff --git a/packages/i18n/src/autogen/locale.ts b/packages/i18n/src/autogen/locale.ts
index 6a9c829f77..556c5e1aec 100644
--- a/packages/i18n/src/autogen/locale.ts
+++ b/packages/i18n/src/autogen/locale.ts
@@ -4404,10 +4404,6 @@ export interface Locale extends ILocale {
* 自分に割り当てられたロール
*/
"rolesAssignedToMe": string;
- /**
- * ロール設定
- */
- "roleSettings": string;
/**
* パスワードリセットしますか?
*/
@@ -12185,21 +12181,17 @@ export interface Locale extends ILocale {
};
"_roleDisplay": {
/**
- * 表示するロール/ロールバッジ
- */
- "title": string;
- /**
- * 自分のプロフィールやノートに表示する公開ロールを選択します。
+ * 自分のプロフィールやノートに表示するロールを選択します。
*/
"description": string;
+ /**
+ * ロール/ロールバッジを表示する
+ */
+ "displayToggle": string;
/**
* 管理者により常に表示するよう設定されています。
*/
"alwaysShownByAdmin": string;
- /**
- * 表示できる公開ロールはありません。
- */
- "noRoles": string;
};
"_roleSelectDialog": {
/**