Skip to content

Commit f37a24b

Browse files
committed
maybe better unverified and fix righthand view things
Signed-off-by: Shea <nu@she-a.eu>
1 parent 24426bf commit f37a24b

4 files changed

Lines changed: 37 additions & 19 deletions

File tree

src/app/components/message/modals/GlobalModalManager.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ export function GlobalModalManager() {
3434
focusTrapOptions={{
3535
initialFocus: false,
3636
onDeactivate: close,
37-
allowOutsideClick: (e) => {
38-
e.preventDefault();
37+
allowOutsideClick: (e: { preventDefault?: () => void }) => {
38+
if (e.preventDefault) e.preventDefault();
3939
close();
4040
return false;
4141
},

src/app/components/unverified-notice/UnverifiedNoticeBanner.tsx

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,42 @@ import * as css from './UnverifiedNoticeBanner.css';
44
import { useOpenSettings } from '$features/settings';
55
import { ShieldWarningIcon } from '@phosphor-icons/react';
66
import { useIsUnverified, useUnverifiedDevices } from '$pages/client/sidebar/UserMenuTab';
7-
import { atom, useAtom } from 'jotai';
7+
import { getLocalStorageItem, setLocalStorageItem } from '$state/utils/atomWithLocalStorage';
88
import { useEffect, useState } from 'react';
99

10-
const dismissedNotice = atom<boolean>(false);
11-
1210
export function UnverifiedNoticeBanner() {
1311
const openSettings = useOpenSettings();
14-
const [isDismissedNotice, setDismissedNotice] = useAtom(dismissedNotice);
1512

1613
const isUnverified = useIsUnverified();
17-
const unverifiedDeviceCount = useUnverifiedDevices() ?? 0;
14+
const unverifiedDeviceCount = useUnverifiedDevices();
1815
const hasUnverified =
1916
isUnverified || (unverifiedDeviceCount !== undefined && unverifiedDeviceCount > 0);
2017
const [dismissCount, setDismissCount] = useState(unverifiedDeviceCount);
2118

19+
const [isDismissedNotice, setIsDismissedNotice] = useState(
20+
getLocalStorageItem('dismissNotice', false)
21+
);
2222
useEffect(() => {
23-
if (unverifiedDeviceCount > 0 && dismissCount < unverifiedDeviceCount)
24-
setDismissedNotice(false);
23+
if (
24+
unverifiedDeviceCount &&
25+
dismissCount &&
26+
unverifiedDeviceCount > 0 &&
27+
dismissCount < unverifiedDeviceCount
28+
) {
29+
setLocalStorageItem('dismissNotice', false);
30+
setIsDismissedNotice(false);
31+
}
2532
setDismissCount(unverifiedDeviceCount);
26-
}, [unverifiedDeviceCount, setDismissedNotice, dismissCount]);
33+
}, [unverifiedDeviceCount, dismissCount]);
2734

2835
if (!hasUnverified || isDismissedNotice) return null;
2936

3037
const handleVerify = () => {
3138
openSettings('devices');
3239
};
33-
3440
const handleDismiss = () => {
35-
setDismissedNotice(true);
41+
setLocalStorageItem('dismissNotice', true);
42+
setIsDismissedNotice(true);
3643
};
3744

3845
return (

src/app/pages/client/sidebar/UserMenuTab.tsx

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import {
2020
config,
2121
toRem,
2222
} from 'folds';
23-
import FocusTrap from 'focus-trap-react';
23+
import { FocusTrap } from 'focus-trap-react';
2424
import { SidebarAvatar, SidebarItem, SidebarItemBadge } from '../../../components/sidebar';
2525
import { UserAvatar } from '../../../components/user-avatar';
2626
import { useMatrixClient } from '../../../hooks/useMatrixClient';
@@ -150,7 +150,7 @@ function AccountRow({
150150
);
151151
}
152152

153-
export function AccountMenuOption({ isMobile }: { isMobile: boolean }) {
153+
export function AccountMenuOption({ isMobile, isRight }: { isMobile: boolean; isRight?: boolean }) {
154154
const mx = useMatrixClient();
155155
const navigate = useNavigate();
156156
const sessions = useAtomValue(sessionsAtom);
@@ -286,7 +286,8 @@ export function AccountMenuOption({ isMobile }: { isMobile: boolean }) {
286286
: {
287287
minWidth: toRem(240),
288288
position: 'absolute',
289-
left: '98%',
289+
left: isRight ? undefined : '98%',
290+
right: isRight ? '98%' : undefined,
290291
padding: toRem(15),
291292
bottom: toRem(-15),
292293
}
@@ -389,9 +390,11 @@ const PresenceOptions: Array<{ value: Presence; label: string }> = [
389390
export function PresenceMenuOption({
390391
initialOpen,
391392
isMobile,
393+
isRight,
392394
}: {
393395
initialOpen: boolean;
394396
isMobile: boolean;
397+
isRight?: boolean;
395398
}) {
396399
const mx = useMatrixClient();
397400
const [sendPresence] = useSetting(settingsAtom, 'sendPresence');
@@ -488,7 +491,8 @@ export function PresenceMenuOption({
488491
: {
489492
minWidth: toRem(240),
490493
position: 'absolute',
491-
left: '98%',
494+
left: isRight ? undefined : '98%',
495+
right: isRight ? '98%' : undefined,
492496
padding: toRem(15),
493497
bottom: toRem(25),
494498
}
@@ -751,10 +755,17 @@ export function UserMenuTab({ isBottom, isMobile }: { isBottom?: boolean; isMobi
751755
</Text>
752756
</MenuItem>
753757

754-
<PresenceMenuOption initialOpen={false} isMobile={isMobile ?? false} />
758+
<PresenceMenuOption
759+
initialOpen={false}
760+
isMobile={isMobile ?? false}
761+
isRight={(menuAnchor?.x ?? 0) > window.innerWidth / 2}
762+
/>
755763
</Box>
756764

757-
<AccountMenuOption isMobile={isMobile ?? false} />
765+
<AccountMenuOption
766+
isMobile={isMobile ?? false}
767+
isRight={(menuAnchor?.x ?? 0) > window.innerWidth / 2}
768+
/>
758769
{(oldSidebar || isMobile) && (
759770
<>
760771
<Line variant="Surface" size="300" />

src/app/pages/client/space/Space.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1050,7 +1050,7 @@ export function Space() {
10501050
})}
10511051
{getConnectorSVG(hierarchy, virtualizedItems)}
10521052
</NavCategory>
1053-
<div style={{ height: toRem(40) }} />
1053+
{!isMobile && <div style={{ height: toRem(40) }} />}
10541054
</Box>
10551055
</PageNavContent>
10561056
</SwipeableOverlayWrapper>

0 commit comments

Comments
 (0)