diff --git a/lemmy-translations b/lemmy-translations index 6dd3968a..4c122b5b 160000 --- a/lemmy-translations +++ b/lemmy-translations @@ -1 +1 @@ -Subproject commit 6dd3968a5e2da60884fe783a90e366bae7a96cc2 +Subproject commit 4c122b5bed79e291957b9d913dd361a75b583271 diff --git a/src/shared/components/navbar.tsx b/src/shared/components/navbar.tsx index 6870c172..0af55ddc 100644 --- a/src/shared/components/navbar.tsx +++ b/src/shared/components/navbar.tsx @@ -81,6 +81,8 @@ export class Navbar extends Component { componentDidMount() { // Subscribe to jwt changes if (isBrowser()) { + this.websocketEvents(); + this.searchTextField = createRef(); console.log(`isLoggedIn = ${this.state.isLoggedIn}`); @@ -393,6 +395,7 @@ export class Navbar extends Component { } return; } else if (msg.reconnect) { + toast(i18n.t("websocket_reconnected"), "success"); WebSocketService.Instance.send( wsClient.userJoin({ auth: authField(), @@ -530,11 +533,19 @@ export class Navbar extends Component { } get canCreateCommunity(): boolean { - let adminOnly = this.props.site_res.site_view?.site - .community_creation_admin_only; + let adminOnly = + this.props.site_res.site_view?.site.community_creation_admin_only; return !adminOnly || this.canAdmin; } + /// Listens for some websocket errors + websocketEvents() { + let msg = i18n.t("websocket_disconnected"); + WebSocketService.Instance.closeEventListener(() => { + toast(msg, "danger"); + }); + } + requestNotificationPermission() { if (UserService.Instance.localUserView) { document.addEventListener("DOMContentLoaded", function () { diff --git a/src/shared/services/WebSocketService.ts b/src/shared/services/WebSocketService.ts index 4c91d405..3cb37486 100644 --- a/src/shared/services/WebSocketService.ts +++ b/src/shared/services/WebSocketService.ts @@ -56,6 +56,10 @@ export class WebSocketService { this.ws.send(data); } + public closeEventListener(listener: (event: CloseEvent) => void) { + this.ws.addEventListener("close", listener); + } + public static get Instance() { return this._instance || (this._instance = new this()); }