mirror of
https://github.com/streetwriters/notesnook.git
synced 2025-12-18 12:47:50 +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 { INNCrypto } from "@notesnook/crypto";
|
||||||
import CryptoWorker from "./nncrypto.worker?worker";
|
import CryptoWorker from "./nncrypto.worker?worker";
|
||||||
import { wrap } from "comlink";
|
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.
|
// TODO: disable until we fix the `pull failed` errors for good.
|
||||||
// IS_DESKTOP_APP && window.NativeNNCrypto
|
// IS_DESKTOP_APP && window.NativeNNCrypto
|
||||||
// ? new window.NativeNNCrypto()
|
// ? new window.NativeNNCrypto()
|
||||||
|
|||||||
@@ -22,9 +22,28 @@ const FEATURE_CHECKS = {
|
|||||||
cache: false,
|
cache: false,
|
||||||
indexedDB: false,
|
indexedDB: false,
|
||||||
clonableCryptoKey: 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() {
|
async function isApplePaySupported() {
|
||||||
try {
|
try {
|
||||||
FEATURE_CHECKS.applePaySupported =
|
FEATURE_CHECKS.applePaySupported =
|
||||||
@@ -99,6 +118,7 @@ async function isCryptoKeyClonable() {
|
|||||||
|
|
||||||
export async function initializeFeatureChecks() {
|
export async function initializeFeatureChecks() {
|
||||||
await Promise.allSettled([
|
await Promise.allSettled([
|
||||||
|
isTransferableStreamsSupported(),
|
||||||
isOPFSSupported(),
|
isOPFSSupported(),
|
||||||
isCacheSupported(),
|
isCacheSupported(),
|
||||||
isIndexedDBSupported(),
|
isIndexedDBSupported(),
|
||||||
|
|||||||
Reference in New Issue
Block a user