This commit is contained in:
syuilo 2023-08-10 16:46:08 +09:00
parent 17bb39c760
commit afc3c3f0c7
5 changed files with 13 additions and 3 deletions

View File

@ -330,7 +330,7 @@ watch: "ウォッチ"
unwatch: "ウォッチ解除"
accept: "許可"
reject: "拒否"
normal: "常"
normal: "常"
instanceName: "サーバー名"
instanceDescription: "サーバーの紹介"
maintainerName: "管理者の名前"
@ -1095,6 +1095,7 @@ expired: "期限切れ"
doYouAgree: "同意しますか?"
beSureToReadThisAsItIsImportant: "重要ですので必ずお読みください。"
iHaveReadXCarefullyAndAgree: "「{x}」の内容をよく読み、同意します。"
dialog: "ダイアログ"
_announcement:
forExistingUsers: "既存ユーザーのみ"

View File

@ -111,6 +111,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
display: announcement.display,
isActive: announcement.isActive,
forExistingUsers: announcement.forExistingUsers,
needConfirmationToRead: announcement.needConfirmationToRead,
userId: announcement.userId,
reads: reads.get(announcement)!,
}));
});

View File

@ -83,7 +83,7 @@ export async function mainBoot() {
}
});
for (const announcement of $i.announcements.filter(x => x.display === 'dialog')) {
for (const announcement of ($i.unreadAnnouncements ?? []).filter(x => x.display === 'dialog')) {
popup(defineAsyncComponent(() => import('@/components/MkAnnouncementDialog.vue')), {
announcement,
}, {}, 'closed');

View File

@ -19,6 +19,11 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkInput v-model="announcement.imageUrl">
<template #label>{{ i18n.ts.imageUrl }}</template>
</MkInput>
<MkRadios v-model="announcement.display">
<option value="normal">{{ i18n.ts.normal }}</option>
<option value="banner">{{ i18n.ts.banner }}</option>
<option value="dialog">{{ i18n.ts.dialog }}</option>
</MkRadios>
<MkSwitch v-model="announcement.forExistingUsers">
{{ i18n.ts._announcement.forExistingUsers }}
<template #caption>{{ i18n.ts._announcement.forExistingUsersDescription }}</template>
@ -46,6 +51,8 @@ import XHeader from './_header_.vue';
import MkButton from '@/components/MkButton.vue';
import MkInput from '@/components/MkInput.vue';
import MkTextarea from '@/components/MkTextarea.vue';
import MkSwitch from '@/components/MkSwitch.vue';
import MkRadios from '@/components/MkRadios.vue';
import * as os from '@/os';
import { i18n } from '@/i18n';
import { definePageMetadata } from '@/scripts/page-metadata';

View File

@ -104,7 +104,7 @@ export type MeDetailed = UserDetailed & {
noCrawle: boolean;
receiveAnnouncementEmail: boolean;
usePasswordLessLogin: boolean;
announcements: Announcement[];
unreadAnnouncements: Announcement[];
[other: string]: any;
};