]> Untitled Git - lemmy-ui.git/commitdiff
Fix/ws error messages (#334)
authorDessalines <dessalines@users.noreply.github.com>
Sat, 17 Jul 2021 15:38:28 +0000 (11:38 -0400)
committerGitHub <noreply@github.com>
Sat, 17 Jul 2021 15:38:28 +0000 (11:38 -0400)
* Updating translations.

* Translation updates

* Adding websocket error and reconnect toasts. Fixes #129

lemmy-translations
src/shared/components/navbar.tsx
src/shared/services/WebSocketService.ts

index 6dd3968a5e2da60884fe783a90e366bae7a96cc2..4c122b5bed79e291957b9d913dd361a75b583271 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 6dd3968a5e2da60884fe783a90e366bae7a96cc2
+Subproject commit 4c122b5bed79e291957b9d913dd361a75b583271
index 6870c17248bbbe1c3778dc9bebea45017e944fa6..0af55ddcea9a1a7e265031866537218b2687a6a1 100644 (file)
@@ -81,6 +81,8 @@ export class Navbar extends Component<NavbarProps, NavbarState> {
   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<NavbarProps, NavbarState> {
       }
       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<NavbarProps, NavbarState> {
   }
 
   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 () {
index 4c91d405006071dc75d0b4617611f9e788f21854..3cb3748687f10498bf97f100729eb7acd266fd10 100644 (file)
@@ -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());
   }