base notification detection on date only

This commit is contained in:
Nicolas Constant 2019-04-02 21:42:38 -04:00
parent 66df78074b
commit 4b96178901
No known key found for this signature in database
GPG Key ID: 1E9F677FB01A5688
3 changed files with 21 additions and 18 deletions

View File

@ -115,7 +115,7 @@ export interface Mention {
export interface Notification {
id: string;
type: 'mention' | 'reblog' | 'favourite' | 'follow';
created_at: Date;
created_at: string;
account: Account;
status?: Status;
}

View File

@ -98,40 +98,44 @@ export class UserNotificationService {
const currentNotifications = userNotification.notifications;
const currentMentions = userNotification.mentions;
const lastMention = userNotification.mentions[0];
const lastMention = newMentions[0];
let lastMentionNotification: Notification;
if (lastMention) {
lastMentionNotification = userNotification.allNotifications.find(x => x.type === 'mention' && x.status.id === lastMention.id);
}
const lastNotification = userNotification.notifications[0];
const lastNotification = newNotifications[0];
userNotification.notifications = [...newNotifications, ...currentNotifications];
userNotification.mentions = [...newMentions, ...currentMentions];
const accountSettings = this.toolsService.getAccountSettings(account);
if (accountSettings.lastMentionReadId && lastMention && accountSettings.lastMentionReadId !== lastMention.id && lastMentionNotification.created_at > accountSettings.lastMentionCreationDate) {
if (lastMentionNotification && new Date(lastMentionNotification.created_at) > new Date(accountSettings.lastMentionCreationDate)) {
userNotification.hasNewMentions = true;
} else {
userNotification.hasNewMentions = false;
}
if (accountSettings.lastNotificationReadId && lastNotification && accountSettings.lastNotificationReadId !== lastNotification.id && lastNotification.created_at > accountSettings.lastNotificationCreationDate) {
if (lastNotification && (new Date(lastNotification.created_at)) > new Date(accountSettings.lastNotificationCreationDate)) {
userNotification.hasNewNotifications = true;
} else {
userNotification.hasNewNotifications = false;
}
if ((!accountSettings.lastMentionReadId && !accountSettings.lastNotificationCreationDate) && lastMention && lastMentionNotification) {
accountSettings.lastMentionReadId = lastMention.id;
if (!accountSettings.lastMentionCreationDate && lastMentionNotification) {
accountSettings.lastMentionCreationDate = lastMentionNotification.created_at;
this.toolsService.saveAccountSettings(accountSettings);
} else if(!accountSettings.lastMentionCreationDate){
accountSettings.lastMentionCreationDate = "2000-01-01T01:01:01.000Z";
this.toolsService.saveAccountSettings(accountSettings);
}
if((!accountSettings.lastNotificationReadId || !accountSettings.lastNotificationCreationDate) && lastNotification){
accountSettings.lastNotificationReadId = lastNotification.id;
if(!accountSettings.lastNotificationCreationDate && lastNotification){
accountSettings.lastNotificationCreationDate = lastNotification.created_at;
this.toolsService.saveAccountSettings(accountSettings);
} else if(!accountSettings.lastNotificationCreationDate){
accountSettings.lastNotificationCreationDate = "2000-01-01T01:01:01.000Z";
this.toolsService.saveAccountSettings(accountSettings);
}
return userNotification;
@ -141,11 +145,12 @@ export class UserNotificationService {
let currentNotifications = this.userNotifications.value;
const currentAccountNotifications = currentNotifications.find(x => x.account.id === account.id);
const lastMention = currentAccountNotifications.mentions[0];
if (lastMention) {
// const lastNotification = currentAccountNotifications.allNotifications.find(x => x.status && x.status.id === lastMention.id);
const lastMention = currentAccountNotifications.mentions[0];
if (lastMention) {
const settings = this.toolsService.getAccountSettings(account);
settings.lastMentionReadId = lastMention.id;
const lastMentionNotification = currentAccountNotifications.allNotifications.find(x => x.type === 'mention' && x.status.id === lastMention.id);
settings.lastMentionCreationDate = lastMentionNotification.created_at;
this.toolsService.saveAccountSettings(settings);
}
@ -162,7 +167,7 @@ export class UserNotificationService {
const lastNotification = currentAccountNotifications.notifications[0];
if (lastNotification) {
const settings = this.toolsService.getAccountSettings(account);
settings.lastNotificationReadId = lastNotification.id;
settings.lastNotificationCreationDate = lastNotification.created_at;
this.toolsService.saveAccountSettings(settings);
}

View File

@ -19,10 +19,8 @@ export class AccountSettings {
accountId: string;
displayMention: boolean = true;
displayNotifications: boolean = true;
lastMentionReadId: string;
lastMentionCreationDate: Date;
lastNotificationReadId: string;
lastNotificationCreationDate: Date;
lastMentionCreationDate: string;
lastNotificationCreationDate: string;
}
export class GlobalSettings {