add rxjs :/

This commit is contained in:
Alec Armbruster 2023-07-05 15:17:45 -04:00
parent b849603d9e
commit ccc38ba363
No known key found for this signature in database
GPG key ID: 52BC7C84E960FD1B
4 changed files with 7299 additions and 7313 deletions

View file

@ -63,6 +63,7 @@
"inferno-helmet": "^5.2.1", "inferno-helmet": "^5.2.1",
"inferno-hydrate": "^8.1.1", "inferno-hydrate": "^8.1.1",
"inferno-i18next-dess": "0.0.2", "inferno-i18next-dess": "0.0.2",
"inferno-mobx": "^8.2.2",
"inferno-router": "^8.1.1", "inferno-router": "^8.1.1",
"inferno-server": "^8.1.1", "inferno-server": "^8.1.1",
"isomorphic-cookie": "^1.2.4", "isomorphic-cookie": "^1.2.4",
@ -78,6 +79,7 @@
"markdown-it-sub": "^1.0.0", "markdown-it-sub": "^1.0.0",
"markdown-it-sup": "^1.0.0", "markdown-it-sup": "^1.0.0",
"mini-css-extract-plugin": "^2.7.5", "mini-css-extract-plugin": "^2.7.5",
"mobx": "^6.9.0",
"register-service-worker": "^1.7.2", "register-service-worker": "^1.7.2",
"run-node-webpack-plugin": "^1.3.0", "run-node-webpack-plugin": "^1.3.0",
"sanitize-html": "^2.10.0", "sanitize-html": "^2.10.0",

View file

@ -44,6 +44,12 @@ export class Navbar extends Component<NavbarProps, NavbarState> {
this.handleOutsideMenuClick = this.handleOutsideMenuClick.bind(this); this.handleOutsideMenuClick = this.handleOutsideMenuClick.bind(this);
} }
componentWillMount(): void {
InboxService.observable.subscribe(() => {
this.render();
});
}
componentDidMount() { componentDidMount() {
// Subscribe to jwt changes // Subscribe to jwt changes
if (isBrowser()) { if (isBrowser()) {

View file

@ -7,6 +7,7 @@ import {
GetUnreadCountResponse, GetUnreadCountResponse,
GetUnreadRegistrationApplicationCountResponse, GetUnreadRegistrationApplicationCountResponse,
} from "lemmy-js-client"; } from "lemmy-js-client";
import { Observable, Subscriber } from "rxjs";
import { updateUnreadCountsInterval } from "../config"; import { updateUnreadCountsInterval } from "../config";
import { HttpService, UserService } from "../services"; import { HttpService, UserService } from "../services";
import { RequestState } from "../services/HttpService"; import { RequestState } from "../services/HttpService";
@ -17,11 +18,20 @@ export class InboxService {
unreadReportCountRes: RequestState<GetReportCountResponse>; unreadReportCountRes: RequestState<GetReportCountResponse>;
unreadApplicationCountRes: RequestState<GetUnreadRegistrationApplicationCountResponse>; unreadApplicationCountRes: RequestState<GetUnreadRegistrationApplicationCountResponse>;
observable: Observable<unknown>;
subscriber: Subscriber<unknown> | null;
private constructor() { private constructor() {
this.unreadInboxCountRes = { state: "empty" }; this.unreadInboxCountRes = { state: "empty" };
this.unreadReportCountRes = { state: "empty" }; this.unreadReportCountRes = { state: "empty" };
this.unreadApplicationCountRes = { state: "empty" }; this.unreadApplicationCountRes = { state: "empty" };
this.observable = new Observable(s => {
this.subscriber = s;
});
this.subscriber = null;
this.startPoll(); this.startPoll();
this.fetchUnreadCounts(); this.fetchUnreadCounts();
} }
@ -72,6 +82,10 @@ export class InboxService {
return this.#Instance.unreadApplicationCount(); return this.#Instance.unreadApplicationCount();
} }
public static get observable(): Observable<unknown> {
return this.#Instance.observable;
}
get isModerator(): boolean { get isModerator(): boolean {
const mods = UserService.Instance.myUserInfo?.moderates; const mods = UserService.Instance.myUserInfo?.moderates;
const moderates = (mods && mods.length > 0) || false; const moderates = (mods && mods.length > 0) || false;
@ -113,6 +127,8 @@ export class InboxService {
}); });
} }
} }
this.subscriber?.next();
} }
public static fetchUnreadCounts() { public static fetchUnreadCounts() {

14588
yarn.lock

File diff suppressed because it is too large Load diff