supastash
Version:
Offline-first sync engine for Supabase in React Native using SQLite
22 lines (21 loc) • 743 B
JavaScript
import { logError } from "../logs";
import { updateLocalDb } from "../sync/pullFromRemote/updateLocalDb";
import { pushLocalDataToRemote } from "../sync/pushLocal/sendUnsyncedToSupabase";
import { createTable } from "./createTable";
let isInSync = new Map();
export async function initialFetch(table, filter, onReceiveData, onPushToRemote) {
if (isInSync.get(table))
return;
isInSync.set(table, true);
try {
await createTable(table);
await updateLocalDb(table, filter, onReceiveData);
await pushLocalDataToRemote(table, onPushToRemote);
}
catch (error) {
logError(`[Supastash] Error on initial fetch for ${table}`, error);
}
finally {
isInSync.delete(table);
}
}