Fixing unread indicator on link click. Fixes #527

This commit is contained in:
Dessalines 2020-02-11 10:14:09 -05:00
parent f1392dc9a7
commit 774518e4fe
5 changed files with 14 additions and 8 deletions

View File

@ -443,9 +443,9 @@ export class Inbox extends Component<any, InboxState> {
this.state.messages.filter(
r => !r.read && r.creator_id !== UserService.Instance.user.id
).length;
UserService.Instance.user.unreadCount = count;
UserService.Instance.sub.next({
user: UserService.Instance.user,
unreadCount: count,
});
}
}

View File

@ -60,8 +60,10 @@ export class Navbar extends Component<any, NavbarState> {
// Subscribe to user changes
this.userSub = UserService.Instance.sub.subscribe(user => {
this.state.isLoggedIn = user.user !== undefined;
this.state.unreadCount = user.unreadCount;
this.requestNotificationPermission();
if (this.state.isLoggedIn) {
this.state.unreadCount = user.user.unreadCount;
this.requestNotificationPermission();
}
this.setState(this.state);
});
@ -304,9 +306,9 @@ export class Navbar extends Component<any, NavbarState> {
}
sendUnreadCount() {
UserService.Instance.user.unreadCount = this.state.unreadCount;
UserService.Instance.sub.next({
user: UserService.Instance.user,
unreadCount: this.state.unreadCount,
});
}

View File

@ -156,6 +156,10 @@ export class Post extends Component<any, PostState> {
auth: null,
};
WebSocketService.Instance.editComment(form);
UserService.Instance.user.unreadCount--;
UserService.Instance.sub.next({
user: UserService.Instance.user,
});
}
}

View File

@ -93,6 +93,7 @@ export interface User {
lang: string;
avatar?: string;
show_avatars: boolean;
unreadCount?: number;
}
export interface UserView {

View File

@ -7,9 +7,8 @@ import { Subject } from 'rxjs';
export class UserService {
private static _instance: UserService;
public user: User;
public sub: Subject<{ user: User; unreadCount: number }> = new Subject<{
public sub: Subject<{ user: User }> = new Subject<{
user: User;
unreadCount: number;
}>();
private constructor() {
@ -32,7 +31,7 @@ export class UserService {
this.user = undefined;
Cookies.remove('jwt');
setTheme();
this.sub.next({ user: undefined, unreadCount: 0 });
this.sub.next({ user: undefined });
console.log('Logged out.');
}
@ -45,7 +44,7 @@ export class UserService {
if (this.user.theme != 'darkly') {
setTheme(this.user.theme);
}
this.sub.next({ user: this.user, unreadCount: 0 });
this.sub.next({ user: this.user });
console.log(this.user);
}