From ac95dad30e304766fa0eb0d50edaab744b9b74e6 Mon Sep 17 00:00:00 2001 From: n08i40k Date: Sun, 6 Oct 2024 17:46:14 +0400 Subject: [PATCH] 1.3.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Фикс подписки пользователя на уведомления. --- package-lock.json | 4 ++-- package.json | 2 +- src/firebase-admin/firebase-admin.controller.ts | 12 +++++++----- src/firebase-admin/firebase-admin.service.ts | 10 +++++++--- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3a27871..3170904 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "schedule-parser-next", - "version": "1.3.1", + "version": "1.3.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "schedule-parser-next", - "version": "1.3.1", + "version": "1.3.2", "license": "UNLICENSED", "dependencies": { "@nestjs/cache-manager": "^2.2.2", diff --git a/package.json b/package.json index a233765..ae60f73 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "schedule-parser-next", - "version": "1.3.1", + "version": "1.3.2", "description": "", "author": "N08I40K", "private": true, diff --git a/src/firebase-admin/firebase-admin.controller.ts b/src/firebase-admin/firebase-admin.controller.ts index 59c3e48..ad684e0 100644 --- a/src/firebase-admin/firebase-admin.controller.ts +++ b/src/firebase-admin/firebase-admin.controller.ts @@ -20,7 +20,8 @@ import { isSemVer } from "class-validator"; @Controller("api/v1/fcm") @UseGuards(AuthGuard) export class FirebaseAdminController { - private readonly defaultTopics = new Set(["schedule-update", "app-update"]); + private readonly oldTopics = new Set(["app-update", "schedule-update"]); + private readonly defaultTopics = new Set(["common"]); constructor(private readonly firebaseAdminService: FirebaseAdminService) {} @@ -37,10 +38,11 @@ export class FirebaseAdminController { await this.firebaseAdminService.updateToken(user, token) ).userDto; - await this.firebaseAdminService.subscribe( - updatedUser, - this.defaultTopics, - ); + await this.firebaseAdminService + .subscribe(updatedUser, this.defaultTopics, true) + .then((userDto) => + this.firebaseAdminService.unsubscribe(userDto, this.oldTopics), + ); } @Post("update-callback/:version") diff --git a/src/firebase-admin/firebase-admin.service.ts b/src/firebase-admin/firebase-admin.service.ts index d7a8b19..6111206 100644 --- a/src/firebase-admin/firebase-admin.service.ts +++ b/src/firebase-admin/firebase-admin.service.ts @@ -81,12 +81,16 @@ export class FirebaseAdminService implements OnModuleInit { }); } - async subscribe(user: UserDto, topics: Set): Promise { + async subscribe( + user: UserDto, + topics: Set, + force: boolean = false, + ): Promise { const fcm = user.fcm; const currentTopics = new Set(fcm.topics); for (const topic of topics) { - if (fcm.topics.includes(topic)) continue; + if (fcm.topics.includes(topic) && !force) continue; await this.messaging.subscribeToTopic(fcm.token, topic); currentTopics.add(topic); @@ -106,7 +110,7 @@ export class FirebaseAdminService implements OnModuleInit { version: string, topics: Set, ): Promise { - await this.subscribe(userDto, topics).then(async (userDto) => { + await this.subscribe(userDto, topics, true).then(async (userDto) => { await this.usersService.update({ where: { id: userDto.id }, data: { version: version },