Move to broadcast channel check for worker put asset
This commit is contained in:
parent
ab9cc9e148
commit
0bbfc4cdc3
@ -75,7 +75,9 @@ export function AssetsProvider({ children }) {
|
||||
|
||||
const putAsset = useCallback(
|
||||
async (asset) => {
|
||||
// Attempt to use worker to put map to avoid UI lockup
|
||||
// Check for broadcast channel and attempt to use worker to put map to avoid UI lockup
|
||||
// Safari doesn't support BC so fallback to single thread
|
||||
if (window.BroadcastChannel) {
|
||||
const packedAsset = encode(asset);
|
||||
const success = await worker.putData(
|
||||
Comlink.transfer(packedAsset, [packedAsset.buffer]),
|
||||
@ -84,6 +86,9 @@ export function AssetsProvider({ children }) {
|
||||
if (!success) {
|
||||
await database.table("assets").put(asset);
|
||||
}
|
||||
} else {
|
||||
await database.table("assets").put(asset);
|
||||
}
|
||||
},
|
||||
[database, worker]
|
||||
);
|
||||
|
@ -75,9 +75,6 @@ export function groupBy(array, key) {
|
||||
}
|
||||
|
||||
export const isMacLike = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);
|
||||
export const isSafari = /^((?!chrome|android).)*safari/i.test(
|
||||
navigator.userAgent
|
||||
);
|
||||
|
||||
export function shuffle(array) {
|
||||
let temp = [...array];
|
||||
|
@ -8,7 +8,6 @@ import { encode, decode } from "@msgpack/msgpack";
|
||||
|
||||
import { getDatabase } from "../database";
|
||||
import blobToBuffer from "../helpers/blobToBuffer";
|
||||
import { isSafari } from "../helpers/shared";
|
||||
|
||||
// Worker to load large amounts of database data on a separate thread
|
||||
let service = {
|
||||
@ -46,10 +45,6 @@ let service = {
|
||||
* @param {string} table
|
||||
*/
|
||||
async putData(data, table) {
|
||||
if (isSafari) {
|
||||
// Safari is unable to put data into indexedb and have useLiveQuery update
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
let db = getDatabase({});
|
||||
const decoded = decode(data);
|
||||
|
Loading…
Reference in New Issue
Block a user