Added server disconnection message (#35)

This commit is contained in:
Ajay Bura 2021-09-14 10:10:11 +05:30
parent 437c6f8262
commit 5a17badfae
2 changed files with 32 additions and 0 deletions

View file

@ -6,6 +6,7 @@ import cons from '../../../client/state/cons';
import navigation from '../../../client/state/navigation'; import navigation from '../../../client/state/navigation';
import { selectTab, selectSpace } from '../../../client/action/navigation'; import { selectTab, selectSpace } from '../../../client/action/navigation';
import Text from '../../atoms/text/Text';
import ScrollView from '../../atoms/scroll/ScrollView'; import ScrollView from '../../atoms/scroll/ScrollView';
import DrawerHeader from './DrawerHeader'; import DrawerHeader from './DrawerHeader';
@ -14,6 +15,7 @@ import Home from './Home';
import Directs from './Directs'; import Directs from './Directs';
function Drawer() { function Drawer() {
const [systemState, setSystemState] = useState(null);
const [selectedTab, setSelectedTab] = useState(navigation.selectedTab); const [selectedTab, setSelectedTab] = useState(navigation.selectedTab);
const [spaceId, setSpaceId] = useState(navigation.selectedSpaceId); const [spaceId, setSpaceId] = useState(navigation.selectedSpaceId);
@ -30,6 +32,13 @@ function Drawer() {
else selectSpace(navigation.selectedSpacePath[lRoomIndex - 1]); else selectSpace(navigation.selectedSpacePath[lRoomIndex - 1]);
} }
function handleSystemState(state) {
if (state === 'ERROR' || state === 'RECONNECTING' || state === 'STOPPED') {
setSystemState({ status: 'Connection lost!' });
}
if (systemState !== null) setSystemState(null);
}
useEffect(() => { useEffect(() => {
navigation.on(cons.events.navigation.TAB_SELECTED, onTabSelected); navigation.on(cons.events.navigation.TAB_SELECTED, onTabSelected);
navigation.on(cons.events.navigation.SPACE_SELECTED, onSpaceSelected); navigation.on(cons.events.navigation.SPACE_SELECTED, onSpaceSelected);
@ -40,6 +49,13 @@ function Drawer() {
initMatrix.roomList.removeListener(cons.events.roomList.ROOM_LEAVED, onRoomLeaved); initMatrix.roomList.removeListener(cons.events.roomList.ROOM_LEAVED, onRoomLeaved);
}; };
}, []); }, []);
useEffect(() => {
initMatrix.matrixClient.on('sync', handleSystemState);
return () => {
initMatrix.matrixClient.removeListener('sync', handleSystemState);
};
}, [systemState]);
return ( return (
<div className="drawer"> <div className="drawer">
<DrawerHeader selectedTab={selectedTab} spaceId={spaceId} /> <DrawerHeader selectedTab={selectedTab} spaceId={spaceId} />
@ -57,6 +73,11 @@ function Drawer() {
</ScrollView> </ScrollView>
</div> </div>
</div> </div>
{ systemState !== null && (
<div className="drawer__state">
<Text>{systemState.status}</Text>
</div>
)}
</div> </div>
); );
} }

View file

@ -26,6 +26,17 @@
@extend .drawer-flexItem; @extend .drawer-flexItem;
@extend .drawer-flexBox; @extend .drawer-flexBox;
} }
&__state {
padding: var(--sp-extra-tight);
border-top: 1px solid var(--bg-surface-border);
display: flex;
justify-content: center;
& .text {
color: var(--tc-danger-high);
}
}
} }
.rooms__wrapper { .rooms__wrapper {
@extend .drawer-flexItem; @extend .drawer-flexItem;