enhance(backend): 個人宛のお知らせはわかったを押すとアーカイブするように (#14762)

* enhance(backend): 個人宛のお知らせはわかったを押すとアーカイブするように

* Update Changelog

* enhance(frontend): アーカイブ済みのものを読み込めるように

* Update Changelog

* fix changelog

* 🎨
This commit is contained in:
かっこかり 2024-10-14 11:23:26 +09:00 committed by GitHub
parent 521d92014d
commit 8b7290d6b0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 19 additions and 0 deletions

View File

@ -9,10 +9,12 @@
### Client ### Client
- Enhance: l10nの更新 - Enhance: l10nの更新
- Enhance: アーカイブした個人宛のお知らせを表示・編集できるように
- Fix: メールアドレス不要でCaptchaが有効な場合にアカウント登録完了後自動でのログインに失敗する問題を修正 - Fix: メールアドレス不要でCaptchaが有効な場合にアカウント登録完了後自動でのログインに失敗する問題を修正
### Server ### Server
- Feat: モデレータ権限を持つユーザが全員7日間活動しなかった場合は自動的に招待制へと移行するように ( #13437 ) - Feat: モデレータ権限を持つユーザが全員7日間活動しなかった場合は自動的に招待制へと移行するように ( #13437 )
- Enhance: 個人宛のお知らせは「わかった」を押すと自動的にアーカイブされるように
- Fix: `admin/emoji/update`エンドポイントのidのみ指定した時不正なエラーが発生するバグを修正 - Fix: `admin/emoji/update`エンドポイントのidのみ指定した時不正なエラーが発生するバグを修正
- Fix: RBT有効時、リートのリアクションが反映されない問題を修正 - Fix: RBT有効時、リートのリアクションが反映されない問題を修正

View File

@ -209,6 +209,13 @@ export class AnnouncementService {
return; return;
} }
const announcement = await this.announcementsRepository.findOneBy({ id: announcementId });
if (announcement != null && announcement.userId === user.id) {
await this.announcementsRepository.update(announcementId, {
isActive: false,
});
}
if ((await this.getUnreadAnnouncements(user)).length === 0) { if ((await this.getUnreadAnnouncements(user)).length === 0) {
this.globalEventService.publishMainStream(user.id, 'readAllAnnouncements'); this.globalEventService.publishMainStream(user.id, 'readAllAnnouncements');
} }

View File

@ -153,6 +153,12 @@ SPDX-License-Identifier: AGPL-3.0-only
<div v-else-if="tab === 'announcements'" class="_gaps"> <div v-else-if="tab === 'announcements'" class="_gaps">
<MkButton primary rounded @click="createAnnouncement"><i class="ti ti-plus"></i> {{ i18n.ts.new }}</MkButton> <MkButton primary rounded @click="createAnnouncement"><i class="ti ti-plus"></i> {{ i18n.ts.new }}</MkButton>
<MkSelect v-model="announcementsStatus">
<template #label>{{ i18n.ts.filter }}</template>
<option value="active">{{ i18n.ts.active }}</option>
<option value="archived">{{ i18n.ts.archived }}</option>
</MkSelect>
<MkPagination :pagination="announcementsPagination"> <MkPagination :pagination="announcementsPagination">
<template #default="{ items }"> <template #default="{ items }">
<div class="_gaps_s"> <div class="_gaps_s">
@ -254,11 +260,15 @@ const filesPagination = {
userId: props.userId, userId: props.userId,
})), })),
}; };
const announcementsStatus = ref<'active' | 'archived'>('active');
const announcementsPagination = { const announcementsPagination = {
endpoint: 'admin/announcements/list' as const, endpoint: 'admin/announcements/list' as const,
limit: 10, limit: 10,
params: computed(() => ({ params: computed(() => ({
userId: props.userId, userId: props.userId,
status: announcementsStatus.value,
})), })),
}; };
const expandedRoles = ref([]); const expandedRoles = ref([]);