@mustafaaksoy41/react-native-offline-queue 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -29,6 +29,11 @@ Queue operations when offline, sync automatically or manually when connectivity
29
29
  <!-- Core Dependency -->
30
30
  [![NetInfo](https://img.shields.io/badge/NetInfo-0088CC?style=for-the-badge&logo=wifi&logoColor=white)](https://github.com/react-native-netinfo/react-native-netinfo)
31
31
 
32
+ <!-- CI & Testing -->
33
+ [![Tests](https://github.com/messivite/react-native-offline-queue/actions/workflows/tests.yml/badge.svg)](https://github.com/messivite/react-native-offline-queue/actions/workflows/tests.yml)
34
+ [![Jest](https://img.shields.io/badge/tested_with-Jest-99424f?style=for-the-badge&logo=jest&logoColor=white)](https://jestjs.io/)
35
+ [![Coverage](https://img.shields.io/badge/coverage-38_tests-brightgreen?style=for-the-badge&logo=codecov&logoColor=white)](#testing)
36
+
32
37
  <br />
33
38
 
34
39
  <p align="center">
@@ -46,10 +51,37 @@ Queue operations when offline, sync automatically or manually when connectivity
46
51
  - **Flexible sync modes** — `auto` (silent sync) or `manual` (prompt the user)
47
52
  - **Pluggable storage** — MMKV, AsyncStorage, or bring your own adapter
48
53
  - **Live sync progress** — track each item as it syncs (pending → syncing → success/failed)
49
- - **Zero unnecessary renders** — built on `useSyncExternalStore`
54
+ - **Zero unnecessary re-renders** — all hooks built on `useSyncExternalStore`, no Context-based cascading
55
+ - **Mutation state tracking** — `isLoading`, `isQueued`, `isSuccess`, `isError` per mutation
56
+ - **React Query compatible** — use `mutateAsync` inside handlers
50
57
  - **Customizable restore UI** — Alert, Toast, BottomSheet, or silent — you decide
51
58
  - **Background task compatible** — use `OfflineManager.flushQueue()` from any context
52
59
 
60
+ ## Network Status
61
+
62
+ The most basic thing: know if the user is online or offline. Use this anywhere in your app — only the component that reads `isOnline` re-renders when it changes.
63
+
64
+ ```tsx
65
+ import { useNetworkStatus } from '@mustafaaksoy41/react-native-offline-queue';
66
+
67
+ function ConnectionBanner() {
68
+ const { isOnline } = useNetworkStatus();
69
+
70
+ if (isOnline === null) return null; // still detecting
71
+ if (isOnline) return null; // online, nothing to show
72
+
73
+ return (
74
+ <View style={{ backgroundColor: '#ff4444', padding: 8 }}>
75
+ <Text style={{ color: 'white', textAlign: 'center' }}>
76
+ 📴 You are offline. Changes will sync when you’re back online.
77
+ </Text>
78
+ </View>
79
+ );
80
+ }
81
+ ```
82
+
83
+ > **No re-renders:** `useNetworkStatus` is built on `useSyncExternalStore`. It reads from a singleton store, not React Context. Components that don't call this hook are completely unaffected by connectivity changes.
84
+
53
85
  ## Installation
54
86
 
55
87
  ```bash
@@ -581,12 +613,28 @@ const { queue, pendingCount, isSyncing, syncNow, clearQueue } = useOfflineQueue(
581
613
 
582
614
  ### `useNetworkStatus()`
583
615
 
584
- Simple connectivity status.
616
+ Reactive connectivity status. Built on `useSyncExternalStore` — only re-renders when the value actually changes. No Context, no cascading re-renders.
585
617
 
586
618
  ```tsx
587
- const { isOnline } = useNetworkStatus();
619
+ import { useNetworkStatus } from '@mustafaaksoy41/react-native-offline-queue';
620
+
621
+ function MyComponent() {
622
+ const { isOnline } = useNetworkStatus();
623
+
624
+ return (
625
+ <View>
626
+ <Text>Status: {isOnline === null ? 'Detecting...' : isOnline ? '✅ Online' : '📴 Offline'}</Text>
627
+ </View>
628
+ );
629
+ }
588
630
  ```
589
631
 
632
+ | Property | Type | Description |
633
+ |----------|------|-------------|
634
+ | `isOnline` | `boolean \| null` | `true` = online, `false` = offline, `null` = not yet detected |
635
+
636
+ > **Re-render guarantee:** If your component doesn't call `useNetworkStatus()`, it will **never** re-render due to connectivity changes. This is by design — we use a subscriber pattern instead of React Context.
637
+
590
638
  ### `useSyncProgress()`
591
639
 
592
640
  Live progress tracking during a sync session. Useful for building progress UIs inside sheets or modals.
@@ -848,6 +896,39 @@ When the device comes back online, the manager either flushes the queue automati
848
896
 
849
897
  Storage is abstracted behind a simple `getItem` / `setItem` / `removeItem` interface, so swapping between MMKV, AsyncStorage, Realm, or your own backend is just a config change.
850
898
 
899
+ ## Testing
900
+
901
+ This package is tested with [Jest](https://jestjs.io/). All core logic is covered with unit tests.
902
+
903
+ ```bash
904
+ # Run all tests
905
+ npm test
906
+
907
+ # Run in watch mode
908
+ npm run test:watch
909
+
910
+ # Run with coverage report
911
+ npm test -- --coverage
912
+ ```
913
+
914
+ ### Test Coverage
915
+
916
+ | Module | Tests | What's Covered |
917
+ |--------|-------|----------------|
918
+ | **Queue CRUD** | 8 | push, remove, clear, getQueue, unique ID generation |
919
+ | **Subscriptions** | 2 | listener notify on change, cleanup after unsubscribe |
920
+ | **Network Status** | 5 | initial null, setOnline, no-op on same value, snapshot |
921
+ | **Handler Registry** | 4 | register, unregister, overwrite, unknown handler |
922
+ | **flushQueue** | 8 | per-action > global handler, retry count, failed items persist, concurrent guard |
923
+ | **Sync Progress** | 3 | initial state, active tracking, per-item success/fail status |
924
+ | **Online Restore** | 4 | auto flush, manual callback, empty queue, discardQueue |
925
+ | **Configuration** | 3 | syncMode, onSyncAction, isInitialized |
926
+ | **Total** | **38** | |
927
+
928
+ ### CI
929
+
930
+ Tests run automatically on every push and pull request via [GitHub Actions](https://github.com/messivite/react-native-offline-queue/actions). The CI pipeline tests against Node.js 18 and 20.
931
+
851
932
  ## License
852
933
 
853
934
  MIT
@@ -3,23 +3,28 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.useNetworkStatus = exports.OfflineProvider = void 0;
6
+ exports.OfflineProvider = void 0;
7
+ exports.useNetworkStatus = useNetworkStatus;
7
8
  var _react = _interopRequireWildcard(require("react"));
8
9
  var _netinfo = _interopRequireDefault(require("@react-native-community/netinfo"));
9
10
  var _OfflineManager = require("../core/OfflineManager");
10
11
  var _jsxRuntime = require("react/jsx-runtime");
11
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
13
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
- const OfflineContext = /*#__PURE__*/(0, _react.createContext)({
14
- isOnline: true
15
- });
16
- const useNetworkStatus = () => (0, _react.useContext)(OfflineContext);
17
- exports.useNetworkStatus = useNetworkStatus;
14
+ // ─── useNetworkStatus (useSyncExternalStore — zero unnecessary re-renders) ───
15
+ function useNetworkStatus() {
16
+ const isOnline = (0, _react.useSyncExternalStore)(_OfflineManager.OfflineManager.subscribeNetwork, _OfflineManager.OfflineManager.getNetworkSnapshot, _OfflineManager.OfflineManager.getNetworkSnapshot);
17
+ return {
18
+ isOnline
19
+ };
20
+ }
21
+
22
+ // ─── OfflineProvider ───
23
+
18
24
  const OfflineProvider = ({
19
25
  children,
20
26
  config
21
27
  }) => {
22
- const [isOnline, setIsOnline] = (0, _react.useState)(null);
23
28
  const wasOfflineRef = (0, _react.useRef)(false);
24
29
  (0, _react.useEffect)(() => {
25
30
  _OfflineManager.OfflineManager.configure(config);
@@ -28,7 +33,9 @@ const OfflineProvider = ({
28
33
  const unsubscribe = _netinfo.default.addEventListener(state => {
29
34
  const connected = !!state.isConnected;
30
35
  if (__DEV__) console.log('[OfflineQueue] Network:', connected ? 'online' : 'offline', '| type:', state.type);
31
- setIsOnline(connected);
36
+
37
+ // Update the singleton — only notifies listeners if value actually changed
38
+ _OfflineManager.OfflineManager.setOnline(connected);
32
39
  if (!connected) {
33
40
  wasOfflineRef.current = true;
34
41
  }
@@ -40,10 +47,9 @@ const OfflineProvider = ({
40
47
  });
41
48
  return () => unsubscribe();
42
49
  }, []);
43
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(OfflineContext.Provider, {
44
- value: {
45
- isOnline
46
- },
50
+
51
+ // No context provider needed — useNetworkStatus reads from OfflineManager directly
52
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
47
53
  children: children
48
54
  });
49
55
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_netinfo","_interopRequireDefault","_OfflineManager","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","OfflineContext","createContext","isOnline","useNetworkStatus","useContext","exports","OfflineProvider","children","config","setIsOnline","useState","wasOfflineRef","useRef","useEffect","OfflineManager","configure","unsubscribe","NetInfo","addEventListener","state","connected","isConnected","__DEV__","console","log","type","current","handleOnlineRestore","jsx","Provider","value"],"sourceRoot":"../../../src","sources":["components/OfflineProvider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_netinfo","_interopRequireDefault","_OfflineManager","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useNetworkStatus","isOnline","useSyncExternalStore","OfflineManager","subscribeNetwork","getNetworkSnapshot","OfflineProvider","children","config","wasOfflineRef","useRef","useEffect","configure","unsubscribe","NetInfo","addEventListener","state","connected","isConnected","__DEV__","console","log","type","setOnline","current","handleOnlineRestore","jsx","Fragment","exports"],"sourceRoot":"../../../src","sources":["components/OfflineProvider.tsx"],"mappings":"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","ignoreList":[]}
@@ -27,12 +27,33 @@ class OfflineManagerClass {
27
27
  // Progress listeners (for useSyncProgress)
28
28
  progressListeners = new Set();
29
29
 
30
+ // Network status listeners (for useNetworkStatus / useSyncExternalStore)
31
+ networkListeners = new Set();
32
+
30
33
  // Per-action handler registry
31
34
  actionHandlers = new Map();
32
35
  isInitialized = false;
33
36
  syncMode = 'manual';
34
37
  isSyncing = false;
35
38
 
39
+ // ─── Network Status State ───
40
+ _isOnline = null;
41
+ get isOnline() {
42
+ return this._isOnline;
43
+ }
44
+ setOnline(online) {
45
+ if (this._isOnline === online) return; // no change, no re-render
46
+ this._isOnline = online;
47
+ this.networkListeners.forEach(l => l());
48
+ }
49
+ subscribeNetwork = listener => {
50
+ this.networkListeners.add(listener);
51
+ return () => this.networkListeners.delete(listener);
52
+ };
53
+ getNetworkSnapshot = () => {
54
+ return this._isOnline;
55
+ };
56
+
36
57
  // ─── Sync Progress State ───
37
58
  _syncProgress = {
38
59
  ..._types.INITIAL_SYNC_PROGRESS
@@ -1 +1 @@
1
- {"version":3,"names":["_StorageAdapter","require","_types","_adapters","generateUUID","replace","c","r","Math","random","v","toString","OfflineManagerClass","queue","storage","MemoryStorageAdapter","storageKey","useRecordAdapter","queueListeners","Set","progressListeners","actionHandlers","Map","isInitialized","syncMode","isSyncing","_syncProgress","INITIAL_SYNC_PROGRESS","syncProgress","configure","config","storageType","getMMKVAdapter","getAsyncStorageAdapter","getRealmAdapter","realmOptions","isRecordAdapter","onSyncAction","onOnlineRestore","loadQueue","adapter","getAll","data","getItem","JSON","parse","notifyQueueListeners","e","console","warn","saveQueue","setItem","stringify","subscribeQueue","listener","add","delete","subscribe","forEach","l","subscribeProgress","updateProgress","partial","updateProgressItem","id","update","items","map","item","action","push","actionName","payload","createdAt","Date","now","retryCount","insert","remove","filter","a","clear","getQueue","registerHandler","handler","set","unregisterHandler","getHandler","get","flushQueue","length","hasAnyHandler","size","currentQueue","progressItems","status","isActive","totalCount","completedCount","failedCount","currentAction","Error","error","message","target","find","handleOnlineRestore","pendingCount","syncNow","discardQueue","OfflineManager","exports"],"sourceRoot":"../../../src","sources":["core/OfflineManager.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_StorageAdapter","require","_types","_adapters","generateUUID","replace","c","r","Math","random","v","toString","OfflineManagerClass","queue","storage","MemoryStorageAdapter","storageKey","useRecordAdapter","queueListeners","Set","progressListeners","networkListeners","actionHandlers","Map","isInitialized","syncMode","isSyncing","_isOnline","isOnline","setOnline","online","forEach","l","subscribeNetwork","listener","add","delete","getNetworkSnapshot","_syncProgress","INITIAL_SYNC_PROGRESS","syncProgress","configure","config","storageType","getMMKVAdapter","getAsyncStorageAdapter","getRealmAdapter","realmOptions","isRecordAdapter","onSyncAction","onOnlineRestore","loadQueue","adapter","getAll","data","getItem","JSON","parse","notifyQueueListeners","e","console","warn","saveQueue","setItem","stringify","subscribeQueue","subscribe","subscribeProgress","updateProgress","partial","updateProgressItem","id","update","items","map","item","action","push","actionName","payload","createdAt","Date","now","retryCount","insert","remove","filter","a","clear","getQueue","registerHandler","handler","set","unregisterHandler","getHandler","get","flushQueue","length","hasAnyHandler","size","currentQueue","progressItems","status","isActive","totalCount","completedCount","failedCount","currentAction","Error","error","message","target","find","handleOnlineRestore","pendingCount","syncNow","discardQueue","OfflineManager","exports"],"sourceRoot":"../../../src","sources":["core/OfflineManager.ts"],"mappings":"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","ignoreList":[]}
@@ -1,18 +1,25 @@
1
1
  "use strict";
2
2
 
3
- import React, { createContext, useContext, useEffect, useRef, useState } from 'react';
3
+ import React, { useEffect, useRef } from 'react';
4
+ import { useSyncExternalStore } from 'react';
4
5
  import NetInfo from '@react-native-community/netinfo';
5
6
  import { OfflineManager } from '../core/OfflineManager';
6
- import { jsx as _jsx } from "react/jsx-runtime";
7
- const OfflineContext = /*#__PURE__*/createContext({
8
- isOnline: true
9
- });
10
- export const useNetworkStatus = () => useContext(OfflineContext);
7
+
8
+ // ─── useNetworkStatus (useSyncExternalStore — zero unnecessary re-renders) ───
9
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
10
+ export function useNetworkStatus() {
11
+ const isOnline = useSyncExternalStore(OfflineManager.subscribeNetwork, OfflineManager.getNetworkSnapshot, OfflineManager.getNetworkSnapshot);
12
+ return {
13
+ isOnline
14
+ };
15
+ }
16
+
17
+ // ─── OfflineProvider ───
18
+
11
19
  export const OfflineProvider = ({
12
20
  children,
13
21
  config
14
22
  }) => {
15
- const [isOnline, setIsOnline] = useState(null);
16
23
  const wasOfflineRef = useRef(false);
17
24
  useEffect(() => {
18
25
  OfflineManager.configure(config);
@@ -21,7 +28,9 @@ export const OfflineProvider = ({
21
28
  const unsubscribe = NetInfo.addEventListener(state => {
22
29
  const connected = !!state.isConnected;
23
30
  if (__DEV__) console.log('[OfflineQueue] Network:', connected ? 'online' : 'offline', '| type:', state.type);
24
- setIsOnline(connected);
31
+
32
+ // Update the singleton — only notifies listeners if value actually changed
33
+ OfflineManager.setOnline(connected);
25
34
  if (!connected) {
26
35
  wasOfflineRef.current = true;
27
36
  }
@@ -33,10 +42,9 @@ export const OfflineProvider = ({
33
42
  });
34
43
  return () => unsubscribe();
35
44
  }, []);
36
- return /*#__PURE__*/_jsx(OfflineContext.Provider, {
37
- value: {
38
- isOnline
39
- },
45
+
46
+ // No context provider needed — useNetworkStatus reads from OfflineManager directly
47
+ return /*#__PURE__*/_jsx(_Fragment, {
40
48
  children: children
41
49
  });
42
50
  };
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","useContext","useEffect","useRef","useState","NetInfo","OfflineManager","jsx","_jsx","OfflineContext","isOnline","useNetworkStatus","OfflineProvider","children","config","setIsOnline","wasOfflineRef","configure","unsubscribe","addEventListener","state","connected","isConnected","__DEV__","console","log","type","current","handleOnlineRestore","Provider","value"],"sourceRoot":"../../../src","sources":["components/OfflineProvider.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,UAAU,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACrF,OAAOC,OAAO,MAAM,iCAAiC;AACrD,SAASC,cAAc,QAAmC,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAMnF,MAAMC,cAAc,gBAAGT,aAAa,CAAsB;EAAEU,QAAQ,EAAE;AAAK,CAAC,CAAC;AAE7E,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAMV,UAAU,CAACQ,cAAc,CAAC;AAOhE,OAAO,MAAMG,eAA+C,GAAGA,CAAC;EAAEC,QAAQ;EAAEC;AAAO,CAAC,KAAK;EACrF,MAAM,CAACJ,QAAQ,EAAEK,WAAW,CAAC,GAAGX,QAAQ,CAAiB,IAAI,CAAC;EAC9D,MAAMY,aAAa,GAAGb,MAAM,CAAC,KAAK,CAAC;EAEnCD,SAAS,CAAC,MAAM;IACZI,cAAc,CAACW,SAAS,CAACH,MAAM,CAAC;EACpC,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EAEZZ,SAAS,CAAC,MAAM;IACZ,MAAMgB,WAAW,GAAGb,OAAO,CAACc,gBAAgB,CAAEC,KAAK,IAAK;MACpD,MAAMC,SAAS,GAAG,CAAC,CAACD,KAAK,CAACE,WAAW;MACrC,IAAIC,OAAO,EAAEC,OAAO,CAACC,GAAG,CAAC,yBAAyB,EAAEJ,SAAS,GAAG,QAAQ,GAAG,SAAS,EAAE,SAAS,EAAED,KAAK,CAACM,IAAI,CAAC;MAE5GX,WAAW,CAACM,SAAS,CAAC;MAEtB,IAAI,CAACA,SAAS,EAAE;QACZL,aAAa,CAACW,OAAO,GAAG,IAAI;MAChC;MAEA,IAAIN,SAAS,IAAIL,aAAa,CAACW,OAAO,EAAE;QACpCX,aAAa,CAACW,OAAO,GAAG,KAAK;QAC7B,IAAIJ,OAAO,EAAEC,OAAO,CAACC,GAAG,CAAC,0DAA0D,CAAC;QACpFnB,cAAc,CAACsB,mBAAmB,CAAC,CAAC;MACxC;IACJ,CAAC,CAAC;IAEF,OAAO,MAAMV,WAAW,CAAC,CAAC;EAC9B,CAAC,EAAE,EAAE,CAAC;EAEN,oBACIV,IAAA,CAACC,cAAc,CAACoB,QAAQ;IAACC,KAAK,EAAE;MAAEpB;IAAS,CAAE;IAAAG,QAAA,EACxCA;EAAQ,CACY,CAAC;AAElC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useRef","useSyncExternalStore","NetInfo","OfflineManager","Fragment","_Fragment","jsx","_jsx","useNetworkStatus","isOnline","subscribeNetwork","getNetworkSnapshot","OfflineProvider","children","config","wasOfflineRef","configure","unsubscribe","addEventListener","state","connected","isConnected","__DEV__","console","log","type","setOnline","current","handleOnlineRestore"],"sourceRoot":"../../../src","sources":["components/OfflineProvider.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAChD,SAASC,oBAAoB,QAAQ,OAAO;AAC5C,OAAOC,OAAO,MAAM,iCAAiC;AACrD,SAASC,cAAc,QAAmC,wBAAwB;;AAElF;AAAA,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA;AACA,OAAO,SAASC,gBAAgBA,CAAA,EAAG;EAC/B,MAAMC,QAAQ,GAAGR,oBAAoB,CACjCE,cAAc,CAACO,gBAAgB,EAC/BP,cAAc,CAACQ,kBAAkB,EACjCR,cAAc,CAACQ,kBACnB,CAAC;EAED,OAAO;IAAEF;EAAS,CAAC;AACvB;;AAEA;;AAMA,OAAO,MAAMG,eAA+C,GAAGA,CAAC;EAAEC,QAAQ;EAAEC;AAAO,CAAC,KAAK;EACrF,MAAMC,aAAa,GAAGf,MAAM,CAAC,KAAK,CAAC;EAEnCD,SAAS,CAAC,MAAM;IACZI,cAAc,CAACa,SAAS,CAACF,MAAM,CAAC;EACpC,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EAEZf,SAAS,CAAC,MAAM;IACZ,MAAMkB,WAAW,GAAGf,OAAO,CAACgB,gBAAgB,CAAEC,KAAK,IAAK;MACpD,MAAMC,SAAS,GAAG,CAAC,CAACD,KAAK,CAACE,WAAW;MACrC,IAAIC,OAAO,EAAEC,OAAO,CAACC,GAAG,CAAC,yBAAyB,EAAEJ,SAAS,GAAG,QAAQ,GAAG,SAAS,EAAE,SAAS,EAAED,KAAK,CAACM,IAAI,CAAC;;MAE5G;MACAtB,cAAc,CAACuB,SAAS,CAACN,SAAS,CAAC;MAEnC,IAAI,CAACA,SAAS,EAAE;QACZL,aAAa,CAACY,OAAO,GAAG,IAAI;MAChC;MAEA,IAAIP,SAAS,IAAIL,aAAa,CAACY,OAAO,EAAE;QACpCZ,aAAa,CAACY,OAAO,GAAG,KAAK;QAC7B,IAAIL,OAAO,EAAEC,OAAO,CAACC,GAAG,CAAC,0DAA0D,CAAC;QACpFrB,cAAc,CAACyB,mBAAmB,CAAC,CAAC;MACxC;IACJ,CAAC,CAAC;IAEF,OAAO,MAAMX,WAAW,CAAC,CAAC;EAC9B,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,oBAAOV,IAAA,CAAAF,SAAA;IAAAQ,QAAA,EAAGA;EAAQ,CAAG,CAAC;AAC1B,CAAC","ignoreList":[]}
@@ -23,12 +23,33 @@ class OfflineManagerClass {
23
23
  // Progress listeners (for useSyncProgress)
24
24
  progressListeners = new Set();
25
25
 
26
+ // Network status listeners (for useNetworkStatus / useSyncExternalStore)
27
+ networkListeners = new Set();
28
+
26
29
  // Per-action handler registry
27
30
  actionHandlers = new Map();
28
31
  isInitialized = false;
29
32
  syncMode = 'manual';
30
33
  isSyncing = false;
31
34
 
35
+ // ─── Network Status State ───
36
+ _isOnline = null;
37
+ get isOnline() {
38
+ return this._isOnline;
39
+ }
40
+ setOnline(online) {
41
+ if (this._isOnline === online) return; // no change, no re-render
42
+ this._isOnline = online;
43
+ this.networkListeners.forEach(l => l());
44
+ }
45
+ subscribeNetwork = listener => {
46
+ this.networkListeners.add(listener);
47
+ return () => this.networkListeners.delete(listener);
48
+ };
49
+ getNetworkSnapshot = () => {
50
+ return this._isOnline;
51
+ };
52
+
32
53
  // ─── Sync Progress State ───
33
54
  _syncProgress = {
34
55
  ...INITIAL_SYNC_PROGRESS
@@ -1 +1 @@
1
- {"version":3,"names":["MemoryStorageAdapter","isRecordAdapter","INITIAL_SYNC_PROGRESS","getMMKVAdapter","getAsyncStorageAdapter","getRealmAdapter","generateUUID","replace","c","r","Math","random","v","toString","OfflineManagerClass","queue","storage","storageKey","useRecordAdapter","queueListeners","Set","progressListeners","actionHandlers","Map","isInitialized","syncMode","isSyncing","_syncProgress","syncProgress","configure","config","storageType","realmOptions","onSyncAction","onOnlineRestore","loadQueue","adapter","getAll","data","getItem","JSON","parse","notifyQueueListeners","e","console","warn","saveQueue","setItem","stringify","subscribeQueue","listener","add","delete","subscribe","forEach","l","subscribeProgress","updateProgress","partial","updateProgressItem","id","update","items","map","item","action","push","actionName","payload","createdAt","Date","now","retryCount","insert","remove","filter","a","clear","getQueue","registerHandler","handler","set","unregisterHandler","getHandler","get","flushQueue","length","hasAnyHandler","size","currentQueue","progressItems","status","isActive","totalCount","completedCount","failedCount","currentAction","Error","error","message","target","find","handleOnlineRestore","pendingCount","syncNow","discardQueue","OfflineManager"],"sourceRoot":"../../../src","sources":["core/OfflineManager.ts"],"mappings":";;AACA,SAASA,oBAAoB,EAAEC,eAAe,QAAQ,kBAAkB;AAExE,SAASC,qBAAqB,QAAQ,SAAS;AAC/C,SAASC,cAAc,EAAEC,sBAAsB,EAAEC,eAAe,QAAQ,aAAa;AAGrF;AACA,SAASC,YAAYA,CAAA,EAAG;EACtB,OAAO,sCAAsC,CAACC,OAAO,CAAC,OAAO,EAAE,UAAUC,CAAC,EAAE;IAC1E,MAAMC,CAAC,GAAIC,IAAI,CAACC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAI,CAAC;MAChCC,CAAC,GAAGJ,CAAC,KAAK,GAAG,GAAGC,CAAC,GAAIA,CAAC,GAAG,GAAG,GAAI,GAAG;IACrC,OAAOG,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;EACvB,CAAC,CAAC;AACJ;AAsBA,MAAMC,mBAAmB,CAAC;EAChBC,KAAK,GAAoB,EAAE;EAC3BC,OAAO,GAA0C,IAAIhB,oBAAoB,CAAC,CAAC;EAC3EiB,UAAU,GAAW,kCAAkC;EACvDC,gBAAgB,GAAY,KAAK;;EAEzC;EACQC,cAAc,GAAoB,IAAIC,GAAG,CAAC,CAAC;;EAEnD;EACQC,iBAAiB,GAAoB,IAAID,GAAG,CAAC,CAAC;;EAEtD;EACQE,cAAc,GAAiD,IAAIC,GAAG,CAAC,CAAC;EAEzEC,aAAa,GAAG,KAAK;EACrBC,QAAQ,GAAsB,QAAQ;EAGtCC,SAAS,GAAG,KAAK;;EAExB;EACQC,aAAa,GAAiB;IAAE,GAAGzB;EAAsB,CAAC;EAElE,IAAW0B,YAAYA,CAAA,EAAiB;IACtC,OAAO,IAAI,CAACD,aAAa;EAC3B;;EAEA;EACA,MAAaE,SAASA,CAACC,MAA4B,EAAE;IACnD,IAAIA,MAAM,CAACC,WAAW,EAAE;MACtB,IAAID,MAAM,CAACC,WAAW,KAAK,MAAM,EAAE;QACjC,IAAI,CAACf,OAAO,GAAGb,cAAc,CAAC,CAAC;QAC/B,IAAI,CAACe,gBAAgB,GAAG,KAAK;MAC/B,CAAC,MAAM,IAAIY,MAAM,CAACC,WAAW,KAAK,eAAe,EAAE;QACjD,IAAI,CAACf,OAAO,GAAGZ,sBAAsB,CAAC,CAAC;QACvC,IAAI,CAACc,gBAAgB,GAAG,KAAK;MAC/B,CAAC,MAAM,IAAIY,MAAM,CAACC,WAAW,KAAK,OAAO,EAAE;QACzC,IAAI,CAACf,OAAO,GAAGX,eAAe,CAACyB,MAAM,CAACE,YAAY,CAAC;QACnD,IAAI,CAACd,gBAAgB,GAAG,IAAI;MAC9B,CAAC,MAAM;QACL,IAAI,CAACF,OAAO,GAAG,IAAIhB,oBAAoB,CAAC,CAAC;QACzC,IAAI,CAACkB,gBAAgB,GAAG,KAAK;MAC/B;IACF,CAAC,MAAM,IAAIY,MAAM,CAACd,OAAO,EAAE;MACzB,IAAI,CAACA,OAAO,GAAGc,MAAM,CAACd,OAAO;MAC7B,IAAI,CAACE,gBAAgB,GAAGjB,eAAe,CAAC6B,MAAM,CAACd,OAAO,CAAC;IACzD;IAEA,IAAIc,MAAM,CAACb,UAAU,EAAE;MACrB,IAAI,CAACA,UAAU,GAAGa,MAAM,CAACb,UAAU;IACrC;IACA,IAAIa,MAAM,CAACL,QAAQ,EAAE;MACnB,IAAI,CAACA,QAAQ,GAAGK,MAAM,CAACL,QAAQ;IACjC;IACA,IAAIK,MAAM,CAACG,YAAY,EAAE;MACvB,IAAI,CAACA,YAAY,GAAGH,MAAM,CAACG,YAAY;IACzC;IACA,IAAIH,MAAM,CAACI,eAAe,EAAE;MAC1B,IAAI,CAACA,eAAe,GAAGJ,MAAM,CAACI,eAAe;IAC/C;IAEA,MAAM,IAAI,CAACC,SAAS,CAAC,CAAC;IACtB,IAAI,CAACX,aAAa,GAAG,IAAI;EAC3B;;EAEA;EACA,MAAcW,SAASA,CAAA,EAAG;IACxB,IAAI;MACF,IAAI,IAAI,CAACjB,gBAAgB,EAAE;QACzB,MAAMkB,OAAO,GAAG,IAAI,CAACpB,OAA+B;QACpD,IAAI,CAACD,KAAK,GAAG,MAAMqB,OAAO,CAACC,MAAM,CAAC,CAAC;MACrC,CAAC,MAAM;QACL,MAAMD,OAAO,GAAG,IAAI,CAACpB,OAAyB;QAC9C,MAAMsB,IAAI,GAAG,MAAMF,OAAO,CAACG,OAAO,CAAC,IAAI,CAACtB,UAAU,CAAC;QACnD,IAAIqB,IAAI,EAAE;UACR,IAAI,CAACvB,KAAK,GAAGyB,IAAI,CAACC,KAAK,CAACH,IAAI,CAAC,IAAI,EAAE;QACrC;MACF;MACA,IAAI,CAACI,oBAAoB,CAAC,CAAC;IAC7B,CAAC,CAAC,OAAOC,CAAC,EAAE;MACVC,OAAO,CAACC,IAAI,CAAC,oDAAoD,EAAEF,CAAC,CAAC;IACvE;EACF;EAEA,MAAcG,SAASA,CAAA,EAAG;IACxB,IAAI;MACF,IAAI,CAAC,IAAI,CAAC5B,gBAAgB,EAAE;QAC1B,MAAMkB,OAAO,GAAG,IAAI,CAACpB,OAAyB;QAC9C,MAAMoB,OAAO,CAACW,OAAO,CAAC,IAAI,CAAC9B,UAAU,EAAEuB,IAAI,CAACQ,SAAS,CAAC,IAAI,CAACjC,KAAK,CAAC,CAAC;MACpE;MACA;IACF,CAAC,CAAC,OAAO4B,CAAC,EAAE;MACVC,OAAO,CAACC,IAAI,CAAC,kDAAkD,EAAEF,CAAC,CAAC;IACrE;EACF;;EAEA;EACOM,cAAc,GAAIC,QAAoB,IAAmB;IAC9D,IAAI,CAAC/B,cAAc,CAACgC,GAAG,CAACD,QAAQ,CAAC;IACjC,OAAO,MAAM,IAAI,CAAC/B,cAAc,CAACiC,MAAM,CAACF,QAAQ,CAAC;EACnD,CAAC;;EAED;EACOG,SAAS,GAAG,IAAI,CAACJ,cAAc;EAE9BP,oBAAoBA,CAAA,EAAG;IAC7B,IAAI,CAACvB,cAAc,CAACmC,OAAO,CAAEC,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC;EACzC;;EAEA;EACOC,iBAAiB,GAAIN,QAAoB,IAAmB;IACjE,IAAI,CAAC7B,iBAAiB,CAAC8B,GAAG,CAACD,QAAQ,CAAC;IACpC,OAAO,MAAM,IAAI,CAAC7B,iBAAiB,CAAC+B,MAAM,CAACF,QAAQ,CAAC;EACtD,CAAC;EAEOO,cAAcA,CAACC,OAA8B,EAAE;IACrD,IAAI,CAAC/B,aAAa,GAAG;MAAE,GAAG,IAAI,CAACA,aAAa;MAAE,GAAG+B;IAAQ,CAAC;IAC1D,IAAI,CAACrC,iBAAiB,CAACiC,OAAO,CAAEC,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC;EAC5C;EAEQI,kBAAkBA,CAACC,EAAU,EAAEC,MAAiC,EAAE;IACxE,IAAI,CAAClC,aAAa,GAAG;MACnB,GAAG,IAAI,CAACA,aAAa;MACrBmC,KAAK,EAAE,IAAI,CAACnC,aAAa,CAACmC,KAAK,CAACC,GAAG,CAAEC,IAAI,IACvCA,IAAI,CAACC,MAAM,CAACL,EAAE,KAAKA,EAAE,GAAG;QAAE,GAAGI,IAAI;QAAE,GAAGH;MAAO,CAAC,GAAGG,IACnD;IACF,CAAC;IACD,IAAI,CAAC3C,iBAAiB,CAACiC,OAAO,CAAEC,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC;EAC5C;;EAEA;EACA,MAAaW,IAAIA,CAAIC,UAAkB,EAAEC,OAAU,EAA6B;IAC9E,MAAMH,MAAwB,GAAG;MAC/BL,EAAE,EAAEtD,YAAY,CAAC,CAAC;MAClB6D,UAAU;MACVC,OAAO;MACPC,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC;MACrBC,UAAU,EAAE;IACd,CAAC;IACD,IAAI,CAACzD,KAAK,GAAG,CAAC,GAAG,IAAI,CAACA,KAAK,EAAEkD,MAAM,CAAC;IAEpC,IAAI,IAAI,CAAC/C,gBAAgB,EAAE;MACzB,MAAO,IAAI,CAACF,OAAO,CAA0ByD,MAAM,CAACR,MAAuB,CAAC;IAC9E,CAAC,MAAM;MACL,MAAM,IAAI,CAACnB,SAAS,CAAC,CAAC;IACxB;IAEA,IAAI,CAACJ,oBAAoB,CAAC,CAAC;IAC3B,OAAOuB,MAAM;EACf;EAEA,MAAaS,MAAMA,CAACd,EAAU,EAAiB;IAC7C,IAAI,CAAC7C,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC4D,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAAChB,EAAE,KAAKA,EAAE,CAAC;IAElD,IAAI,IAAI,CAAC1C,gBAAgB,EAAE;MACzB,MAAO,IAAI,CAACF,OAAO,CAA0B0D,MAAM,CAACd,EAAE,CAAC;IACzD,CAAC,MAAM;MACL,MAAM,IAAI,CAACd,SAAS,CAAC,CAAC;IACxB;IAEA,IAAI,CAACJ,oBAAoB,CAAC,CAAC;EAC7B;EAEA,MAAamC,KAAKA,CAAA,EAAkB;IAClC,IAAI,CAAC9D,KAAK,GAAG,EAAE;IAEf,IAAI,IAAI,CAACG,gBAAgB,EAAE;MACzB,MAAO,IAAI,CAACF,OAAO,CAA0B6D,KAAK,CAAC,CAAC;IACtD,CAAC,MAAM;MACL,MAAM,IAAI,CAAC/B,SAAS,CAAC,CAAC;IACxB;IAEA,IAAI,CAACJ,oBAAoB,CAAC,CAAC;IAC3B,IAAI,CAACe,cAAc,CAAC;MAAE,GAAGvD;IAAsB,CAAC,CAAC;EACnD;EAEO4E,QAAQA,CAAA,EAAoB;IACjC,OAAO,IAAI,CAAC/D,KAAK;EACnB;;EAEA;EACOgE,eAAeA,CAACZ,UAAkB,EAAEa,OAAwC,EAAE;IACnF,IAAI,CAAC1D,cAAc,CAAC2D,GAAG,CAACd,UAAU,EAAEa,OAAO,CAAC;EAC9C;EAEOE,iBAAiBA,CAACf,UAAkB,EAAE;IAC3C,IAAI,CAAC7C,cAAc,CAAC8B,MAAM,CAACe,UAAU,CAAC;EACxC;EAEOgB,UAAUA,CAAChB,UAAkB,EAAiD;IACnF,OAAO,IAAI,CAAC7C,cAAc,CAAC8D,GAAG,CAACjB,UAAU,CAAC;EAC5C;;EAEA;EACA,MAAakB,UAAUA,CAAA,EAAkB;IACvC,IAAI,IAAI,CAACtE,KAAK,CAACuE,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC5D,SAAS,EAAE;MAC7C;IACF;IAEA,MAAM6D,aAAa,GAAG,IAAI,CAACtD,YAAY,IAAI,IAAI,CAACX,cAAc,CAACkE,IAAI,GAAG,CAAC;IACvE,IAAI,CAACD,aAAa,EAAE;MAClB3C,OAAO,CAACC,IAAI,CAAC,yEAAyE,CAAC;MACvF;IACF;IAEA,IAAI,CAACnB,SAAS,GAAG,IAAI;IACrB,IAAI,CAACgB,oBAAoB,CAAC,CAAC;IAE3B,MAAM+C,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC1E,KAAK,CAAC;;IAEpC;IACA,MAAM2E,aAAiC,GAAGD,YAAY,CAAC1B,GAAG,CAAEE,MAAM,KAAM;MACtEA,MAAM;MACN0B,MAAM,EAAE;IACV,CAAC,CAAC,CAAC;IAEH,IAAI,CAAClC,cAAc,CAAC;MAClBmC,QAAQ,EAAE,IAAI;MACdC,UAAU,EAAEJ,YAAY,CAACH,MAAM;MAC/BQ,cAAc,EAAE,CAAC;MACjBC,WAAW,EAAE,CAAC;MACdC,aAAa,EAAE,IAAI;MACnBlC,KAAK,EAAE4B;IACT,CAAC,CAAC;IAEF,IAAII,cAAc,GAAG,CAAC;IACtB,IAAIC,WAAW,GAAG,CAAC;IAEnB,KAAK,MAAM9B,MAAM,IAAIwB,YAAY,EAAE;MACjC;MACA,IAAI,CAAChC,cAAc,CAAC;QAAEuC,aAAa,EAAE/B;MAAO,CAAC,CAAC;MAC9C,IAAI,CAACN,kBAAkB,CAACM,MAAM,CAACL,EAAE,EAAE;QAAE+B,MAAM,EAAE;MAAU,CAAC,CAAC;MAEzD,IAAI;QACF;QACA,MAAMX,OAAO,GAAG,IAAI,CAAC1D,cAAc,CAAC8D,GAAG,CAACnB,MAAM,CAACE,UAAU,CAAC;QAC1D,IAAIa,OAAO,EAAE;UACX,MAAMA,OAAO,CAACf,MAAM,CAACG,OAAO,CAAC;QAC/B,CAAC,MAAM,IAAI,IAAI,CAACnC,YAAY,EAAE;UAC5B,MAAM,IAAI,CAACA,YAAY,CAACgC,MAAM,CAAC;QACjC,CAAC,MAAM;UACL,MAAM,IAAIgC,KAAK,CAAC,qCAAqChC,MAAM,CAACE,UAAU,EAAE,CAAC;QAC3E;;QAEA;QACA,MAAM,IAAI,CAACO,MAAM,CAACT,MAAM,CAACL,EAAE,CAAC;QAC5BkC,cAAc,EAAE;QAChB,IAAI,CAACnC,kBAAkB,CAACM,MAAM,CAACL,EAAE,EAAE;UAAE+B,MAAM,EAAE;QAAU,CAAC,CAAC;QACzD,IAAI,CAAClC,cAAc,CAAC;UAAEqC;QAAe,CAAC,CAAC;MACzC,CAAC,CAAC,OAAOI,KAAU,EAAE;QACnBtD,OAAO,CAACC,IAAI,CAAC,2BAA2BoB,MAAM,CAACE,UAAU,kBAAkB,EAAE+B,KAAK,CAAC;;QAEnF;QACAH,WAAW,EAAE;QACb,IAAI,CAACpC,kBAAkB,CAACM,MAAM,CAACL,EAAE,EAAE;UACjC+B,MAAM,EAAE,QAAQ;UAChBO,KAAK,EAAEA,KAAK,EAAEC,OAAO,IAAI;QAC3B,CAAC,CAAC;QACF,IAAI,CAAC1C,cAAc,CAAC;UAAEsC;QAAY,CAAC,CAAC;;QAEpC;QACA,MAAMK,MAAM,GAAG,IAAI,CAACrF,KAAK,CAACsF,IAAI,CAAEzB,CAAC,IAAKA,CAAC,CAAChB,EAAE,KAAKK,MAAM,CAACL,EAAE,CAAC;QACzD,IAAIwC,MAAM,EAAE;UACVA,MAAM,CAAC5B,UAAU,IAAI,CAAC;QACxB;QAEA,IAAI,IAAI,CAACtD,gBAAgB,EAAE;UACzB,MAAO,IAAI,CAACF,OAAO,CAA0B6C,MAAM,CAACI,MAAM,CAACL,EAAE,EAAE;YAC7DY,UAAU,EAAG4B,MAAM,EAAE5B,UAAU,IAAI;UACrC,CAAC,CAAC;QACJ,CAAC,MAAM;UACL,MAAM,IAAI,CAAC1B,SAAS,CAAC,CAAC;QACxB;QAEA,IAAI,CAACJ,oBAAoB,CAAC,CAAC;MAC7B;IACF;IAEA,IAAI,CAAChB,SAAS,GAAG,KAAK;IACtB,IAAI,CAAC+B,cAAc,CAAC;MAAEmC,QAAQ,EAAE,KAAK;MAAEI,aAAa,EAAE;IAAK,CAAC,CAAC;IAC7D,IAAI,CAACtD,oBAAoB,CAAC,CAAC;EAC7B;;EAEA;EACO4D,mBAAmBA,CAAA,EAAG;IAC3B,IAAI,IAAI,CAACvF,KAAK,CAACuE,MAAM,KAAK,CAAC,EAAE;IAE7B,IAAI,IAAI,CAAC7D,QAAQ,KAAK,MAAM,EAAE;MAC5B,IAAI,CAAC4D,UAAU,CAAC,CAAC;IACnB,CAAC,MAAM,IAAI,IAAI,CAAC5D,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAACS,eAAe,EAAE;MAC7D,IAAI,CAACA,eAAe,CAAC;QACnBqE,YAAY,EAAE,IAAI,CAACxF,KAAK,CAACuE,MAAM;QAC/BkB,OAAO,EAAEA,CAAA,KAAM,IAAI,CAACnB,UAAU,CAAC,CAAC;QAChCoB,YAAY,EAAEA,CAAA,KAAM,IAAI,CAAC5B,KAAK,CAAC;MACjC,CAAC,CAAC;IACJ;IACA;EACF;AACF;AAEA,OAAO,MAAM6B,cAAc,GAAG,IAAI5F,mBAAmB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["MemoryStorageAdapter","isRecordAdapter","INITIAL_SYNC_PROGRESS","getMMKVAdapter","getAsyncStorageAdapter","getRealmAdapter","generateUUID","replace","c","r","Math","random","v","toString","OfflineManagerClass","queue","storage","storageKey","useRecordAdapter","queueListeners","Set","progressListeners","networkListeners","actionHandlers","Map","isInitialized","syncMode","isSyncing","_isOnline","isOnline","setOnline","online","forEach","l","subscribeNetwork","listener","add","delete","getNetworkSnapshot","_syncProgress","syncProgress","configure","config","storageType","realmOptions","onSyncAction","onOnlineRestore","loadQueue","adapter","getAll","data","getItem","JSON","parse","notifyQueueListeners","e","console","warn","saveQueue","setItem","stringify","subscribeQueue","subscribe","subscribeProgress","updateProgress","partial","updateProgressItem","id","update","items","map","item","action","push","actionName","payload","createdAt","Date","now","retryCount","insert","remove","filter","a","clear","getQueue","registerHandler","handler","set","unregisterHandler","getHandler","get","flushQueue","length","hasAnyHandler","size","currentQueue","progressItems","status","isActive","totalCount","completedCount","failedCount","currentAction","Error","error","message","target","find","handleOnlineRestore","pendingCount","syncNow","discardQueue","OfflineManager"],"sourceRoot":"../../../src","sources":["core/OfflineManager.ts"],"mappings":"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","ignoreList":[]}
@@ -1,13 +1,11 @@
1
1
  import React from 'react';
2
2
  import { type OfflineManagerConfig } from '../core/OfflineManager';
3
- interface OfflineContextValue {
3
+ export declare function useNetworkStatus(): {
4
4
  isOnline: boolean | null;
5
- }
6
- export declare const useNetworkStatus: () => OfflineContextValue;
5
+ };
7
6
  export interface OfflineProviderProps {
8
7
  children: React.ReactNode;
9
8
  config: OfflineManagerConfig;
10
9
  }
11
10
  export declare const OfflineProvider: React.FC<OfflineProviderProps>;
12
- export {};
13
11
  //# sourceMappingURL=OfflineProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OfflineProvider.d.ts","sourceRoot":"","sources":["../../../src/components/OfflineProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiE,MAAM,OAAO,CAAC;AAEtF,OAAO,EAAkB,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnF,UAAU,mBAAmB;IACzB,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B;AAID,eAAO,MAAM,gBAAgB,2BAAmC,CAAC;AAEjE,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,oBAAoB,CAAC;CAChC;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAkC1D,CAAC"}
1
+ {"version":3,"file":"OfflineProvider.d.ts","sourceRoot":"","sources":["../../../src/components/OfflineProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAGjD,OAAO,EAAkB,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGnF,wBAAgB,gBAAgB;;EAQ/B;AAGD,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,oBAAoB,CAAC;CAChC;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA+B1D,CAAC"}
@@ -21,12 +21,18 @@ declare class OfflineManagerClass {
21
21
  private useRecordAdapter;
22
22
  private queueListeners;
23
23
  private progressListeners;
24
+ private networkListeners;
24
25
  private actionHandlers;
25
26
  isInitialized: boolean;
26
27
  syncMode: 'auto' | 'manual';
27
28
  onSyncAction?: (action: OfflineAction) => Promise<void>;
28
29
  onOnlineRestore?: OfflineManagerConfig['onOnlineRestore'];
29
30
  isSyncing: boolean;
31
+ private _isOnline;
32
+ get isOnline(): boolean | null;
33
+ setOnline(online: boolean): void;
34
+ subscribeNetwork: (listener: () => void) => (() => void);
35
+ getNetworkSnapshot: () => boolean | null;
30
36
  private _syncProgress;
31
37
  get syncProgress(): SyncProgress;
32
38
  configure(config: OfflineManagerConfig): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"OfflineManager.d.ts","sourceRoot":"","sources":["../../../src/core/OfflineManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAoB,MAAM,SAAS,CAAC;AAG7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAWvD,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,cAAc,GAAG,oBAAoB,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAG7B,YAAY,CAAC,EAAE,mBAAmB,CAAC;IAGnC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAGxD,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;KACnC,KAAK,IAAI,CAAC;CACZ;AAED,cAAM,mBAAmB;IACvB,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,OAAO,CAAqE;IACpF,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,gBAAgB,CAAkB;IAG1C,OAAO,CAAC,cAAc,CAA8B;IAGpD,OAAO,CAAC,iBAAiB,CAA8B;IAGvD,OAAO,CAAC,cAAc,CAA2D;IAE1E,aAAa,UAAS;IACtB,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAY;IACvC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,eAAe,CAAC,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAC1D,SAAS,UAAS;IAGzB,OAAO,CAAC,aAAa,CAA8C;IAEnE,IAAW,YAAY,IAAI,YAAY,CAEtC;IAGY,SAAS,CAAC,MAAM,EAAE,oBAAoB;YAsCrC,SAAS;YAkBT,SAAS;IAahB,cAAc,GAAI,UAAU,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAG1D;IAGK,SAAS,aANmB,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAMrB;IAEvC,OAAO,CAAC,oBAAoB;IAKrB,iBAAiB,GAAI,UAAU,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAG7D;IAEF,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,kBAAkB;IAWb,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAoBlE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B,QAAQ,IAAI,aAAa,EAAE;IAK3B,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC;IAI5E,iBAAiB,CAAC,UAAU,EAAE,MAAM;IAIpC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS;IAKvE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA0FjC,mBAAmB;CAc3B;AAED,eAAO,MAAM,cAAc,qBAA4B,CAAC"}
1
+ {"version":3,"file":"OfflineManager.d.ts","sourceRoot":"","sources":["../../../src/core/OfflineManager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mustafaaksoy41/react-native-offline-queue",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "A flexible, high-performance offline queue and synchronizer for React Native. Works great with React Query (TanStack Query).",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -16,7 +16,12 @@
16
16
  ],
17
17
  "scripts": {
18
18
  "build": "bob build",
19
- "postinstall": "echo '\\n📦 @mustafaaksoy41/react-native-offline-queue installed!\\n⚠️ Required peer: npm install @react-native-community/netinfo\\n💡 Optional peers: react-native-mmkv | @react-native-async-storage/async-storage | realm\\n'"
19
+ "test": "jest",
20
+ "test:watch": "jest --watch",
21
+ "docs:dev": "vitepress dev docs",
22
+ "docs:build": "vitepress build docs",
23
+ "docs:preview": "vitepress preview docs",
24
+ "postinstall": "echo '\\n📦 react-native-offline-queue installed!\\n⚠️ Required peer: npm install @react-native-community/netinfo\\n💡 Optional peers: react-native-mmkv | @react-native-async-storage/async-storage | realm\\n'"
20
25
  },
21
26
  "keywords": [
22
27
  "react-native",
@@ -58,10 +63,13 @@
58
63
  },
59
64
  "devDependencies": {
60
65
  "@react-native-community/netinfo": "^11.0.0",
66
+ "@types/jest": "^30.0.0",
61
67
  "@types/react": "^18.2.6",
68
+ "jest": "^30.2.0",
62
69
  "react": "18.2.0",
63
70
  "react-native": "0.73.4",
64
71
  "react-native-builder-bob": "^0.30.0",
72
+ "ts-jest": "^29.4.6",
65
73
  "typescript": "^5.0.2",
66
74
  "vitepress": "^1.6.4",
67
75
  "vue": "^3.5.29"
@@ -1,22 +1,26 @@
1
- import React, { createContext, useContext, useEffect, useRef, useState } from 'react';
1
+ import React, { useEffect, useRef } from 'react';
2
+ import { useSyncExternalStore } from 'react';
2
3
  import NetInfo from '@react-native-community/netinfo';
3
4
  import { OfflineManager, type OfflineManagerConfig } from '../core/OfflineManager';
4
5
 
5
- interface OfflineContextValue {
6
- isOnline: boolean | null;
7
- }
8
-
9
- const OfflineContext = createContext<OfflineContextValue>({ isOnline: true });
6
+ // ─── useNetworkStatus (useSyncExternalStore — zero unnecessary re-renders) ───
7
+ export function useNetworkStatus() {
8
+ const isOnline = useSyncExternalStore(
9
+ OfflineManager.subscribeNetwork,
10
+ OfflineManager.getNetworkSnapshot,
11
+ OfflineManager.getNetworkSnapshot
12
+ );
10
13
 
11
- export const useNetworkStatus = () => useContext(OfflineContext);
14
+ return { isOnline };
15
+ }
12
16
 
17
+ // ─── OfflineProvider ───
13
18
  export interface OfflineProviderProps {
14
19
  children: React.ReactNode;
15
20
  config: OfflineManagerConfig;
16
21
  }
17
22
 
18
23
  export const OfflineProvider: React.FC<OfflineProviderProps> = ({ children, config }) => {
19
- const [isOnline, setIsOnline] = useState<boolean | null>(null);
20
24
  const wasOfflineRef = useRef(false);
21
25
 
22
26
  useEffect(() => {
@@ -28,7 +32,8 @@ export const OfflineProvider: React.FC<OfflineProviderProps> = ({ children, conf
28
32
  const connected = !!state.isConnected;
29
33
  if (__DEV__) console.log('[OfflineQueue] Network:', connected ? 'online' : 'offline', '| type:', state.type);
30
34
 
31
- setIsOnline(connected);
35
+ // Update the singleton — only notifies listeners if value actually changed
36
+ OfflineManager.setOnline(connected);
32
37
 
33
38
  if (!connected) {
34
39
  wasOfflineRef.current = true;
@@ -44,9 +49,6 @@ export const OfflineProvider: React.FC<OfflineProviderProps> = ({ children, conf
44
49
  return () => unsubscribe();
45
50
  }, []);
46
51
 
47
- return (
48
- <OfflineContext.Provider value={{ isOnline }}>
49
- {children}
50
- </OfflineContext.Provider>
51
- );
52
+ // No context provider needed — useNetworkStatus reads from OfflineManager directly
53
+ return <>{children}</>;
52
54
  };
@@ -46,6 +46,9 @@ class OfflineManagerClass {
46
46
  // Progress listeners (for useSyncProgress)
47
47
  private progressListeners: Set<() => void> = new Set();
48
48
 
49
+ // Network status listeners (for useNetworkStatus / useSyncExternalStore)
50
+ private networkListeners: Set<() => void> = new Set();
51
+
49
52
  // Per-action handler registry
50
53
  private actionHandlers: Map<string, (payload: any) => Promise<void>> = new Map();
51
54
 
@@ -55,6 +58,28 @@ class OfflineManagerClass {
55
58
  public onOnlineRestore?: OfflineManagerConfig['onOnlineRestore'];
56
59
  public isSyncing = false;
57
60
 
61
+ // ─── Network Status State ───
62
+ private _isOnline: boolean | null = null;
63
+
64
+ public get isOnline(): boolean | null {
65
+ return this._isOnline;
66
+ }
67
+
68
+ public setOnline(online: boolean) {
69
+ if (this._isOnline === online) return; // no change, no re-render
70
+ this._isOnline = online;
71
+ this.networkListeners.forEach((l) => l());
72
+ }
73
+
74
+ public subscribeNetwork = (listener: () => void): (() => void) => {
75
+ this.networkListeners.add(listener);
76
+ return () => this.networkListeners.delete(listener);
77
+ };
78
+
79
+ public getNetworkSnapshot = (): boolean | null => {
80
+ return this._isOnline;
81
+ };
82
+
58
83
  // ─── Sync Progress State ───
59
84
  private _syncProgress: SyncProgress = { ...INITIAL_SYNC_PROGRESS };
60
85