Save peopleDrawer visibility in localStorage
authorAjay Bura <ajbura@gmail.com>
Mon, 15 Nov 2021 03:53:59 +0000 (09:23 +0530)
committerAjay Bura <ajbura@gmail.com>
Mon, 15 Nov 2021 03:53:59 +0000 (09:23 +0530)
Signed-off-by: Ajay Bura <ajbura@gmail.com>
src/app/organisms/room/Room.jsx
src/app/organisms/room/RoomViewHeader.jsx
src/client/action/navigation.js
src/client/action/settings.js
src/client/state/cons.js
src/client/state/navigation.js
src/client/state/settings.js

index 6112d2bdb7b93b915a7a20c30f6414f7c5311e74..7cb30cdfd2edcc2a31946e6ad9bbf9022378b5a5 100644 (file)
@@ -3,6 +3,7 @@ import './Room.scss';
 
 import cons from '../../../client/state/cons';
 import navigation from '../../../client/state/navigation';
+import settings from '../../../client/state/settings';
 
 import Welcome from '../welcome/Welcome';
 import RoomView from './RoomView';
@@ -10,7 +11,7 @@ import PeopleDrawer from './PeopleDrawer';
 
 function Room() {
   const [selectedRoomId, changeSelectedRoomId] = useState(null);
-  const [isDrawerVisible, toggleDrawerVisiblity] = useState(navigation.isPeopleDrawerVisible);
+  const [isDrawerVisible, toggleDrawerVisiblity] = useState(settings.isPeopleDrawer);
   useEffect(() => {
     const handleRoomSelected = (roomId) => {
       changeSelectedRoomId(roomId);
@@ -19,11 +20,11 @@ function Room() {
       toggleDrawerVisiblity(visiblity);
     };
     navigation.on(cons.events.navigation.ROOM_SELECTED, handleRoomSelected);
-    navigation.on(cons.events.navigation.PEOPLE_DRAWER_TOGGLED, handleDrawerToggling);
+    settings.on(cons.events.settings.PEOPLE_DRAWER_TOGGLED, handleDrawerToggling);
 
     return () => {
       navigation.removeListener(cons.events.navigation.ROOM_SELECTED, handleRoomSelected);
-      navigation.removeListener(cons.events.navigation.PEOPLE_DRAWER_TOGGLED, handleDrawerToggling);
+      settings.removeListener(cons.events.settings.PEOPLE_DRAWER_TOGGLED, handleDrawerToggling);
     };
   }, []);
 
index 30072f6a3e898abda924c7a932d56c27f412967d..22bc07aa9ba6ccaaa735a54a6c76837293b3aa56 100644 (file)
@@ -2,7 +2,8 @@ import React from 'react';
 import PropTypes from 'prop-types';
 
 import initMatrix from '../../../client/initMatrix';
-import { togglePeopleDrawer, openRoomOptions } from '../../../client/action/navigation';
+import { openRoomOptions } from '../../../client/action/navigation';
+import { togglePeopleDrawer } from '../../../client/action/settings';
 import colorMXID from '../../../util/colorMXID';
 import { getEventCords } from '../../../util/common';
 
index b9e428fdb6a8434934bf50539dafa3f3b49485db..66179289cc9be99be5812a804bdf186af682af37 100644 (file)
@@ -22,12 +22,6 @@ function selectRoom(roomId) {
   });
 }
 
-function togglePeopleDrawer() {
-  appDispatcher.dispatch({
-    type: cons.actions.navigation.TOGGLE_PEOPLE_DRAWER,
-  });
-}
-
 function openInviteList() {
   appDispatcher.dispatch({
     type: cons.actions.navigation.OPEN_INVITE_LIST,
@@ -97,7 +91,6 @@ export {
   selectTab,
   selectSpace,
   selectRoom,
-  togglePeopleDrawer,
   openInviteList,
   openPublicRooms,
   openCreateRoom,
index 1664eb8243390654c21f63e6217cda7df024c9ca..beac8516b3d3a49c8913e84ac20eded17d3913dd 100644 (file)
@@ -7,6 +7,13 @@ function toggleMarkdown() {
   });
 }
 
+function togglePeopleDrawer() {
+  appDispatcher.dispatch({
+    type: cons.actions.settings.TOGGLE_PEOPLE_DRAWER,
+  });
+}
+
 export {
   toggleMarkdown,
+  togglePeopleDrawer,
 };
index c02bfa288ea2b329e578a895994d3a50fcdffb08..9a30d1eeb517ee18a94cf5e3d569ebfcfdadf0bc 100644 (file)
@@ -46,6 +46,7 @@ const cons = {
     },
     settings: {
       TOGGLE_MARKDOWN: 'TOGGLE_MARKDOWN',
+      TOGGLE_PEOPLE_DRAWER: 'TOGGLE_PEOPLE_DRAWER',
     },
   },
   events: {
@@ -91,6 +92,7 @@ const cons = {
     },
     settings: {
       MARKDOWN_TOGGLED: 'MARKDOWN_TOGGLED',
+      PEOPLE_DRAWER_TOGGLED: 'PEOPLE_DRAWER_TOGGLED',
     },
   },
 };
index cbf8a764da476167150b42ed02f13e7aaffb31dc..76cecadcc46a95884b666b6d19f6dda4d09af5e6 100644 (file)
@@ -11,7 +11,6 @@ class Navigation extends EventEmitter {
     this.selectedSpacePath = [cons.tabs.HOME];
 
     this.selectedRoomId = null;
-    this.isPeopleDrawerVisible = true;
   }
 
   _setSpacePath(roomId) {
@@ -53,10 +52,6 @@ class Navigation extends EventEmitter {
         this.selectedRoomId = action.roomId;
         this.emit(cons.events.navigation.ROOM_SELECTED, this.selectedRoomId, prevSelectedRoomId);
       },
-      [cons.actions.navigation.TOGGLE_PEOPLE_DRAWER]: () => {
-        this.isPeopleDrawerVisible = !this.isPeopleDrawerVisible;
-        this.emit(cons.events.navigation.PEOPLE_DRAWER_TOGGLED, this.isPeopleDrawerVisible);
-      },
       [cons.actions.navigation.OPEN_INVITE_LIST]: () => {
         this.emit(cons.events.navigation.INVITE_LIST_OPENED);
       },
index 9516d86893f8996ae3245b5f794d2a318dc72053..2c19690a6199be89a265e33cb70c074bab7a3ed5 100644 (file)
@@ -24,6 +24,7 @@ class Settings extends EventEmitter {
     this.themeIndex = this.getThemeIndex();
 
     this.isMarkdown = this.getIsMarkdown();
+    this.isPeopleDrawer = this.getIsPeopleDrawer();
 
     this.isTouchScreenDevice = ('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0);
   }
@@ -62,6 +63,15 @@ class Settings extends EventEmitter {
     return settings.isMarkdown;
   }
 
+  getIsPeopleDrawer() {
+    if (typeof this.isPeopleDrawer === 'boolean') return this.isPeopleDrawer;
+
+    const settings = getSettings();
+    if (settings === null) return true;
+    if (typeof settings.isPeopleDrawer === 'undefined') return true;
+    return settings.isPeopleDrawer;
+  }
+
   setter(action) {
     const actions = {
       [cons.actions.settings.TOGGLE_MARKDOWN]: () => {
@@ -69,6 +79,11 @@ class Settings extends EventEmitter {
         setSettings('isMarkdown', this.isMarkdown);
         this.emit(cons.events.settings.MARKDOWN_TOGGLED, this.isMarkdown);
       },
+      [cons.actions.settings.TOGGLE_PEOPLE_DRAWER]: () => {
+        this.isPeopleDrawer = !this.isPeopleDrawer;
+        setSettings('isPeopleDrawer', this.isPeopleDrawer);
+        this.emit(cons.events.settings.PEOPLE_DRAWER_TOGGLED, this.isPeopleDrawer);
+      },
     };
 
     actions[action.type]?.();