mirror of
https://github.com/streetwriters/notesnook.git
synced 2025-12-16 19:57:52 +01:00
web: fix file uploading not working in safari
This commit is contained in:
@@ -20,8 +20,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
import { INNCrypto } from "@notesnook/crypto";
|
||||
import CryptoWorker from "./nncrypto.worker?worker";
|
||||
import { wrap } from "comlink";
|
||||
import { NNCrypto as NNCryptoSync } from "@notesnook/crypto";
|
||||
import { isTransferableStreamsSupported } from "../utils/feature-check";
|
||||
|
||||
export const NNCrypto = wrap<INNCrypto>(new CryptoWorker()) as INNCrypto;
|
||||
export const NNCrypto = isTransferableStreamsSupported()
|
||||
? (wrap<INNCrypto>(new CryptoWorker()) as INNCrypto)
|
||||
: new NNCryptoSync();
|
||||
// TODO: disable until we fix the `pull failed` errors for good.
|
||||
// IS_DESKTOP_APP && window.NativeNNCrypto
|
||||
// ? new window.NativeNNCrypto()
|
||||
|
||||
@@ -22,9 +22,28 @@ const FEATURE_CHECKS = {
|
||||
cache: false,
|
||||
indexedDB: false,
|
||||
clonableCryptoKey: false,
|
||||
applePaySupported: false
|
||||
applePaySupported: false,
|
||||
transferableStreams: false
|
||||
};
|
||||
|
||||
export function isTransferableStreamsSupported() {
|
||||
try {
|
||||
const readable = new ReadableStream({
|
||||
pull(controller) {
|
||||
controller.enqueue(new Uint8Array([1, 2, 3]));
|
||||
controller.close();
|
||||
}
|
||||
});
|
||||
window.postMessage(readable, [readable]);
|
||||
FEATURE_CHECKS.transferableStreams = true;
|
||||
return true;
|
||||
} catch {
|
||||
console.log("Transferable streams not supported");
|
||||
FEATURE_CHECKS.transferableStreams = false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
async function isApplePaySupported() {
|
||||
try {
|
||||
FEATURE_CHECKS.applePaySupported =
|
||||
@@ -99,6 +118,7 @@ async function isCryptoKeyClonable() {
|
||||
|
||||
export async function initializeFeatureChecks() {
|
||||
await Promise.allSettled([
|
||||
isTransferableStreamsSupported(),
|
||||
isOPFSSupported(),
|
||||
isCacheSupported(),
|
||||
isIndexedDBSupported(),
|
||||
|
||||
Reference in New Issue
Block a user