summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/page-push.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/server/api/endpoints/page-push.ts')
-rw-r--r--packages/backend/src/server/api/endpoints/page-push.ts51
1 files changed, 33 insertions, 18 deletions
diff --git a/packages/backend/src/server/api/endpoints/page-push.ts b/packages/backend/src/server/api/endpoints/page-push.ts
index 6dd3ede85a..1b0299c3c6 100644
--- a/packages/backend/src/server/api/endpoints/page-push.ts
+++ b/packages/backend/src/server/api/endpoints/page-push.ts
@@ -1,6 +1,10 @@
-import { publishMainStream } from '@/services/stream.js';
-import { Users, Pages } from '@/models/index.js';
-import define from '../define.js';
+import { Inject, Injectable } from '@nestjs/common';
+import { PagesRepository } from '@/models/index.js';
+import type { UsersRepository } from '@/models/index.js';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import { UserEntityService } from '@/core/entities/UserEntityService.js';
+import { GlobalEventService } from '@/core/GlobalEventService.js';
+import { DI } from '@/di-symbols.js';
import { ApiError } from '../error.js';
export const meta = {
@@ -27,19 +31,30 @@ export const paramDef = {
} as const;
// eslint-disable-next-line import/no-default-export
-export default define(meta, paramDef, async (ps, user) => {
- const page = await Pages.findOneBy({ id: ps.pageId });
- if (page == null) {
- throw new ApiError(meta.errors.noSuchPage);
- }
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> {
+ constructor(
+ @Inject(DI.pagesRepository)
+ private pagesRepository: PagesRepository,
+
+ private userEntityService: UserEntityService,
+ private globalEventService: GlobalEventService,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ const page = await this.pagesRepository.findOneBy({ id: ps.pageId });
+ if (page == null) {
+ throw new ApiError(meta.errors.noSuchPage);
+ }
- publishMainStream(page.userId, 'pageEvent', {
- pageId: ps.pageId,
- event: ps.event,
- var: ps.var,
- userId: user.id,
- user: await Users.pack(user.id, { id: page.userId }, {
- detail: true,
- }),
- });
-});
+ this.globalEventService.publishMainStream(page.userId, 'pageEvent', {
+ pageId: ps.pageId,
+ event: ps.event,
+ var: ps.var,
+ userId: me.id,
+ user: await this.userEntityService.pack(me.id, { id: page.userId }, {
+ detail: true,
+ }),
+ });
+ });
+ }
+}