로그인하면 해당 브라우저의 FCM 토큰을 받고,
이 토큰을 유저 DB에 저장해서 접속한 최신 브라우저를 기억한다.
새로운 브라우저로 들어왔는지 검사하고 만약 새로운 브라우저라면 로그인 시 유저 DB에 있는 브라우저의 FCM 토큰을 최신 브라우저의 토큰으로 변경해주고,
해당 유저가 가지고있는 스케줄을 검색한 뒤, 해당 스케줄에 대한 알림을 새로운 브라우저 토큰을 사용해서 CronJob을 통해 알림 스케줄을 추가해준다.
// UserService - Login
if (user.token !== loginDto.token) {
await this.userRepository.update({ id: user.id }, { token: loginDto.token });
const schedules = await this.scheduleRepository.find({
where: {
ptTime: Raw((alias) => `${alias} > NOW()`),
userId: user.id
},
})
for(let schedule of schedules) {
const cronJobId = uuidv4();
let date = schedule.ptTime;
date.setMinutes(date.getMinutes() - 10);
// this.schedulerRegistry.deleteCronJob(schedule.cronJobId);
await this.messageService.addCronJob(loginDto.token, 'PT를 준비해주세요! 10분 뒤 시작합니다!',
`날짜 : ${schedule.ptTime.toLocaleString()}`,
date, cronJobId)
}
}
추가로 포그라운드 알림과 알림 메세지 클릭 시 해당 사이트로 이동 기능까지 구현해보려 한다.