Fixing unread indicator on link click. Fixes #527
This commit is contained in:
parent
9237226585
commit
6bddeecdb6
5 changed files with 14 additions and 8 deletions
2
ui/src/components/inbox.tsx
vendored
2
ui/src/components/inbox.tsx
vendored
|
@ -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,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
8
ui/src/components/navbar.tsx
vendored
8
ui/src/components/navbar.tsx
vendored
|
@ -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,
|
||||
});
|
||||
}
|
||||
|
||||
|
|
4
ui/src/components/post.tsx
vendored
4
ui/src/components/post.tsx
vendored
|
@ -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,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
1
ui/src/interfaces.ts
vendored
1
ui/src/interfaces.ts
vendored
|
@ -93,6 +93,7 @@ export interface User {
|
|||
lang: string;
|
||||
avatar?: string;
|
||||
show_avatars: boolean;
|
||||
unreadCount?: number;
|
||||
}
|
||||
|
||||
export interface UserView {
|
||||
|
|
7
ui/src/services/UserService.ts
vendored
7
ui/src/services/UserService.ts
vendored
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue