mirror of
https://github.com/oxen-io/session-desktop.git
synced 2023-12-14 02:12:57 +01:00
make encrypted content fast load if already stored decrypted
This commit is contained in:
parent
0d90248450
commit
8462d7d38e
|
@ -1,12 +1,15 @@
|
|||
import { useEffect, useRef, useState } from 'react';
|
||||
|
||||
import { getDecryptedMediaUrl } from '../session/crypto/DecryptedAttachmentsManager';
|
||||
import {
|
||||
getAlreadyDecryptedMediaUrl,
|
||||
getDecryptedMediaUrl,
|
||||
} from '../session/crypto/DecryptedAttachmentsManager';
|
||||
import { perfEnd, perfStart } from '../session/utils/Performance';
|
||||
|
||||
export const useEncryptedFileFetch = (url: string, contentType: string) => {
|
||||
// tslint:disable-next-line: no-bitwise
|
||||
const [urlToLoad, setUrlToLoad] = useState('');
|
||||
const [loading, setLoading] = useState(true);
|
||||
const [loading, setLoading] = useState(false);
|
||||
|
||||
const mountedRef = useRef(true);
|
||||
|
||||
|
@ -22,8 +25,12 @@ export const useEncryptedFileFetch = (url: string, contentType: string) => {
|
|||
setLoading(false);
|
||||
}
|
||||
}
|
||||
const alreadyDecrypted = getAlreadyDecryptedMediaUrl(url);
|
||||
|
||||
useEffect(() => {
|
||||
if (alreadyDecrypted) {
|
||||
return;
|
||||
}
|
||||
setLoading(true);
|
||||
mountedRef.current = true;
|
||||
void fetchUrl();
|
||||
|
@ -32,5 +39,9 @@ export const useEncryptedFileFetch = (url: string, contentType: string) => {
|
|||
mountedRef.current = false;
|
||||
};
|
||||
}, [url]);
|
||||
|
||||
if (alreadyDecrypted) {
|
||||
return { urlToLoad: alreadyDecrypted, loading: false };
|
||||
}
|
||||
return { urlToLoad, loading };
|
||||
};
|
||||
|
|
|
@ -105,3 +105,25 @@ export const getDecryptedMediaUrl = async (url: string, contentType: string): Pr
|
|||
return url;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* Returns the already decrypted URL or null
|
||||
*/
|
||||
export const getAlreadyDecryptedMediaUrl = (url: string): string | null => {
|
||||
if (!url) {
|
||||
return null;
|
||||
}
|
||||
if (url.startsWith('blob:')) {
|
||||
return url;
|
||||
} else if (
|
||||
window.Signal.Migrations.attachmentsPath &&
|
||||
url.startsWith(window.Signal.Migrations.attachmentsPath)
|
||||
) {
|
||||
if (urlToDecryptedBlobMap.has(url)) {
|
||||
const existingObjUrl = urlToDecryptedBlobMap.get(url)?.decrypted as string;
|
||||
return existingObjUrl;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue