summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/sw
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-09-18 03:27:08 +0900
committerGitHub <noreply@github.com>2022-09-18 03:27:08 +0900
commitb75184ec8e3436200bacdcd832e3324702553d20 (patch)
tree8b7e316f29e95df921db57289c8b8da476d18f07 /packages/backend/src/server/api/endpoints/sw
parentUpdate ROADMAP.md (diff)
downloadsharkey-b75184ec8e3436200bacdcd832e3324702553d20.tar.gz
sharkey-b75184ec8e3436200bacdcd832e3324702553d20.tar.bz2
sharkey-b75184ec8e3436200bacdcd832e3324702553d20.zip
なんかもうめっちゃ変えた
Diffstat (limited to 'packages/backend/src/server/api/endpoints/sw')
-rw-r--r--packages/backend/src/server/api/endpoints/sw/register.ts77
-rw-r--r--packages/backend/src/server/api/endpoints/sw/unregister.ts26
2 files changed, 63 insertions, 40 deletions
diff --git a/packages/backend/src/server/api/endpoints/sw/register.ts b/packages/backend/src/server/api/endpoints/sw/register.ts
index 437f8874ff..73a084c2ad 100644
--- a/packages/backend/src/server/api/endpoints/sw/register.ts
+++ b/packages/backend/src/server/api/endpoints/sw/register.ts
@@ -1,7 +1,9 @@
-import { fetchMeta } from '@/misc/fetch-meta.js';
-import { genId } from '@/misc/gen-id.js';
-import { SwSubscriptions } from '@/models/index.js';
-import define from '../../define.js';
+import { Inject, Injectable } from '@nestjs/common';
+import { IdService } from '@/core/IdService.js';
+import { SwSubscriptionsRepository } from '@/models/index.js';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import { MetaService } from '@/core/MetaService.js';
+import { DI } from '@/di-symbols.js';
export const meta = {
tags: ['account'],
@@ -38,35 +40,46 @@ export const paramDef = {
} as const;
// eslint-disable-next-line import/no-default-export
-export default define(meta, paramDef, async (ps, user) => {
- // if already subscribed
- const exist = await SwSubscriptions.findOneBy({
- userId: user.id,
- endpoint: ps.endpoint,
- auth: ps.auth,
- publickey: ps.publickey,
- });
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> {
+ constructor(
+ @Inject(DI.swSubscriptionsRepository)
+ private swSubscriptionsRepository: SwSubscriptionsRepository,
- const instance = await fetchMeta(true);
+ private idService: IdService,
+ private metaService: MetaService,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ // if already subscribed
+ const exist = await this.swSubscriptionsRepository.findOneBy({
+ userId: me.id,
+ endpoint: ps.endpoint,
+ auth: ps.auth,
+ publickey: ps.publickey,
+ });
- if (exist != null) {
- return {
- state: 'already-subscribed' as const,
- key: instance.swPublicKey,
- };
- }
+ const instance = await this.metaService.fetch(true);
+
+ if (exist != null) {
+ return {
+ state: 'already-subscribed' as const,
+ key: instance.swPublicKey,
+ };
+ }
- await SwSubscriptions.insert({
- id: genId(),
- createdAt: new Date(),
- userId: user.id,
- endpoint: ps.endpoint,
- auth: ps.auth,
- publickey: ps.publickey,
- });
+ await this.swSubscriptionsRepository.insert({
+ id: this.idService.genId(),
+ createdAt: new Date(),
+ userId: me.id,
+ endpoint: ps.endpoint,
+ auth: ps.auth,
+ publickey: ps.publickey,
+ });
- return {
- state: 'subscribed' as const,
- key: instance.swPublicKey,
- };
-});
+ return {
+ state: 'subscribed' as const,
+ key: instance.swPublicKey,
+ };
+ });
+ }
+}
diff --git a/packages/backend/src/server/api/endpoints/sw/unregister.ts b/packages/backend/src/server/api/endpoints/sw/unregister.ts
index c19e06b879..feb6730154 100644
--- a/packages/backend/src/server/api/endpoints/sw/unregister.ts
+++ b/packages/backend/src/server/api/endpoints/sw/unregister.ts
@@ -1,5 +1,7 @@
-import { SwSubscriptions } from '@/models/index.js';
-import define from '../../define.js';
+import { Inject, Injectable } from '@nestjs/common';
+import { SwSubscriptionsRepository } from '@/models/index.js';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import { DI } from '@/di-symbols.js';
export const meta = {
tags: ['account'],
@@ -18,9 +20,17 @@ export const paramDef = {
} as const;
// eslint-disable-next-line import/no-default-export
-export default define(meta, paramDef, async (ps, user) => {
- await SwSubscriptions.delete({
- userId: user.id,
- endpoint: ps.endpoint,
- });
-});
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> {
+ constructor(
+ @Inject(DI.swSubscriptionsRepository)
+ private swSubscriptionsRepository: SwSubscriptionsRepository,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ await this.swSubscriptionsRepository.delete({
+ userId: me.id,
+ endpoint: ps.endpoint,
+ });
+ });
+ }
+}