mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 04:57:52 +00:00
ITOTEAM-523 notification status
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { NotificationInputDTO } from './dto/NotificationInputDTO';
|
||||
import { RemoteNotificationService } from './datasource/remote-notification.service'
|
||||
import { FirebasePushNotificationService } from './datasource/firebase-push-notification.service'
|
||||
import { LocalNotificationService } from './datasource/local-notification.service'
|
||||
import { SessionStore } from 'src/app/store/session.service';
|
||||
import { NotificationListMapper } from '../domain/mapper/notificationListMapper';
|
||||
import { NotificationListChanges } from './async/changes/notificationListChange';
|
||||
import { NotificationTable } from './infra/db/notification.db';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class NotificationRepositoryService {
|
||||
|
||||
constructor(
|
||||
private RemoteNotificationService: RemoteNotificationService,
|
||||
private FirebasePushNotificationService: FirebasePushNotificationService,
|
||||
private LocalNotificationService: LocalNotificationService
|
||||
) {
|
||||
|
||||
this.FirebasePushNotificationService.onReceiveForeground(async (data)=> {
|
||||
console.log('FirebasePushNotificationService', data)
|
||||
|
||||
this.init()
|
||||
|
||||
})
|
||||
|
||||
|
||||
this.init()
|
||||
}
|
||||
|
||||
async init() {
|
||||
const result = await this.getNotification({
|
||||
PageNumber: "1",
|
||||
PageSize: "50",
|
||||
userId: SessionStore.user.UserId.toString()
|
||||
})
|
||||
|
||||
if(result.isOk()) {
|
||||
console.log('notification-list', result.value.data.result)
|
||||
|
||||
if(result.value.data.result.length >= 1) {
|
||||
const localList = await this.LocalNotificationService.getNotification()
|
||||
const serverList = NotificationListMapper(result.value)
|
||||
const { insert, update } = NotificationListChanges(localList, serverList)
|
||||
|
||||
console.log({insert, update})
|
||||
this.LocalNotificationService.addNotifications(insert)
|
||||
|
||||
this.LocalNotificationService.updateNotifications(update)
|
||||
// this.LocalNotificationService.addNotifications.
|
||||
} else {
|
||||
this.LocalNotificationService.clear()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
async getNotification(queryParameter: NotificationInputDTO) {
|
||||
return await this.RemoteNotificationService.getNotification(queryParameter)
|
||||
}
|
||||
|
||||
getNotificationLive() {
|
||||
return this.LocalNotificationService.getNotificationLive()
|
||||
}
|
||||
|
||||
async notificationStatus(item: NotificationTable) {
|
||||
await this.RemoteNotificationService.notificationStatus(item.notificationId)
|
||||
item.status = true
|
||||
this.LocalNotificationService.updateNotification(item)
|
||||
this
|
||||
this.init()
|
||||
return
|
||||
}
|
||||
|
||||
async localNotificationStatus(item: NotificationTable) {
|
||||
item.status = true
|
||||
this.LocalNotificationService.updateNotification(item)
|
||||
this.init()
|
||||
return
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user