diff --git a/packages/backend/src/core/AnnouncementService.ts b/packages/backend/src/core/AnnouncementService.ts
index bf7ab49b88..482aeee39f 100644
--- a/packages/backend/src/core/AnnouncementService.ts
+++ b/packages/backend/src/core/AnnouncementService.ts
@@ -75,9 +75,15 @@ export class AnnouncementService {
const packed = (await this.packMany([announcement]))[0];
- this.globalEventService.publishBroadcastStream('announcementCreated', {
- announcement: packed,
- });
+ if (values.userId) {
+ this.globalEventService.publishMainStream(values.userId, 'announcementCreated', {
+ announcement: packed,
+ });
+ } else {
+ this.globalEventService.publishBroadcastStream('announcementCreated', {
+ announcement: packed,
+ });
+ }
return {
raw: announcement,
diff --git a/packages/backend/src/server/api/stream/types.ts b/packages/backend/src/server/api/stream/types.ts
index 1f0dea03b1..751a23de8d 100644
--- a/packages/backend/src/server/api/stream/types.ts
+++ b/packages/backend/src/server/api/stream/types.ts
@@ -108,6 +108,9 @@ export interface MainStreamTypes {
driveFileCreated: Packed<'DriveFile'>;
readAntenna: Antenna;
receiveFollowRequest: Packed<'User'>;
+ announcementCreated: {
+ announcement: Packed<'Announcement'>;
+ };
}
export interface DriveStreamTypes {
diff --git a/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue b/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue
new file mode 100644
index 0000000000..ce41b3116d
--- /dev/null
+++ b/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue
@@ -0,0 +1,145 @@
+
+
+
+