Added server disconnection message (#35)
This commit is contained in:
parent
437c6f8262
commit
5a17badfae
2 changed files with 32 additions and 0 deletions
|
@ -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>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue