Уведомления об обновлении приложения.
This commit is contained in:
2024-10-06 02:43:13 +04:00
parent 6ffe39a4a9
commit 2efceeaec4
13 changed files with 106 additions and 15 deletions

View File

@@ -1,4 +1,6 @@
import {
BadRequestException,
Body,
Controller,
HttpCode,
HttpStatus,
@@ -12,11 +14,13 @@ import { UserFromTokenPipe } from "../auth/auth.pipe";
import { UserDto } from "../dto/user.dto";
import { ResultDto } from "../utility/validation/class-validator.interceptor";
import { FirebaseAdminService } from "./firebase-admin.service";
import { FcmPostUpdateDto } from "../dto/fcm.dto";
import { isSemVer } from "class-validator";
@Controller("api/v1/fcm")
@UseGuards(AuthGuard)
export class FirebaseAdminController {
private readonly defaultTopics = new Set(["schedule-update"]);
private readonly defaultTopics = new Set(["schedule-update", "app-update"]);
constructor(private readonly firebaseAdminService: FirebaseAdminService) {}
@@ -38,4 +42,37 @@ export class FirebaseAdminController {
this.defaultTopics,
);
}
@Post("update-callback/:version")
@HttpCode(HttpStatus.OK)
@ResultDto(null)
async updateCallback(
@UserToken(UserFromTokenPipe) userDto: UserDto,
@Param("version") version: string,
) {
if (!isSemVer(version)) {
throw new BadRequestException(
"version must be a Semantic Versioning Specification",
);
}
await this.firebaseAdminService.updateApp(
userDto,
version,
this.defaultTopics,
);
}
@Post("post-update")
@HttpCode(HttpStatus.OK)
@ResultDto(null)
async postUpdate(@Body() postUpdateDto: FcmPostUpdateDto): Promise<void> {
await this.firebaseAdminService.sendByTopic("app-update", {
data: {
type: "app-update",
version: postUpdateDto.version,
downloadLink: postUpdateDto.downloadLink,
},
});
}
}