supastash
Version:
Offline-first sync engine for Supabase in React Native using SQLite
19 lines (18 loc) • 700 B
JavaScript
import { supastashEventBus } from "./events/eventBus";
const debounceMap = new Map();
const timesFetched = new Map();
/**
* Debounced refresh: emit only once per table within delay window.
*/
export function refreshScreen(table) {
timesFetched.set(table, (timesFetched.get(table) || 0) + 1);
const timeoutMs = (timesFetched.get(table) || 0) > 30 ? 800 : 500;
clearTimeout(debounceMap.get(table));
const timeout = setTimeout(() => {
supastashEventBus.emit(`refresh:${table}`);
supastashEventBus.emit(`supastash:refreshZustand:${table}`);
timesFetched.delete(table);
debounceMap.delete(table);
}, timeoutMs);
debounceMap.set(table, timeout);
}