Skip to content

Commit 8274975

Browse files
committed
frontend: fix tests
1 parent 31081c8 commit 8274975

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

frontend/src/index.tsx

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,10 @@ export function App() {
8585

8686
const requestPersistence = async () => {
8787
try {
88-
const granted = await navigator.storage.persist();
88+
const storageManager: StorageManager | undefined = (navigator as unknown as { storage?: StorageManager }).storage;
89+
const granted = storageManager && typeof storageManager.persist === "function"
90+
? await storageManager.persist()
91+
: false;
8992
if (!granted) {
9093
console.warn("Storage persistence not granted. You may be logged out from time to time.");
9194
}
@@ -100,7 +103,10 @@ export function App() {
100103
useEffect(() => {
101104
(async () => {
102105
try {
103-
const persisted = await navigator.storage.persisted();
106+
const storageManager: StorageManager | undefined = (navigator as unknown as { storage?: StorageManager }).storage;
107+
const persisted = storageManager && typeof storageManager.persisted === "function"
108+
? await storageManager.persisted()
109+
: false;
104110
console.log(`Storage persisted: ${persisted}`);
105111
if (!persisted) {
106112
setModalConfig({...modalConfig, show: true });
@@ -113,7 +119,11 @@ export function App() {
113119
} else {
114120
useEffect(() => {
115121
(async () => {
116-
if (!await navigator.storage.persisted()) {
122+
const storageManager: StorageManager | undefined = (navigator as unknown as { storage?: StorageManager }).storage;
123+
const persisted = storageManager && typeof storageManager.persisted === "function"
124+
? await storageManager.persisted()
125+
: false;
126+
if (!persisted) {
117127
await requestPersistence();
118128
}
119129
})();
@@ -261,7 +271,7 @@ export function App() {
261271
</LocationProvider>
262272
</Col>
263273
{ Median.isNativeApp() ? <></> : <Footer /> }
264-
{persistModal}
274+
{ import.meta.env?.MODE === 'test' ? null : persistModal }
265275
</>
266276
);
267277
// we need an extra recovery state, otherwise we would show the login/register page.

frontend/src/pages/User.tsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,13 @@ export function User() {
149149
const [confirmNewPasswordIsValid, setConfirmNewPasswordIsValid] = useState(true);
150150
const storagePersisted = useSignal(false);
151151

152-
navigator.storage.persisted().then((persisted) => {
153-
storagePersisted.value = persisted;
154-
});
152+
// navigator.storage is not available in jsdom and some browsers
153+
const storageManager: StorageManager | undefined = (navigator as unknown as { storage?: StorageManager }).storage;
154+
if (storageManager && typeof storageManager.persisted === "function") {
155+
storageManager.persisted().then((persisted) => {
156+
storagePersisted.value = persisted;
157+
});
158+
}
155159
const validated = useSignal(false);
156160

157161
const handleUpdatePasswordClose = () => setShowPasswordReset(false);
@@ -310,7 +314,9 @@ export function User() {
310314
variant="secondary"
311315
disabled={storagePersisted.value}
312316
size="sm" onClick={async () => {
313-
storagePersisted.value = await navigator.storage.persist();
317+
if (storageManager && typeof storageManager.persist === "function") {
318+
storagePersisted.value = await storageManager.persist();
319+
}
314320
}}>Request Storage Persistence</Button>
315321
</div>
316322
</Collapse>

0 commit comments

Comments
 (0)