cry-synced-db-client 0.1.65 → 0.1.67

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/dist/index.js CHANGED
@@ -640,6 +640,7 @@ class ConnectionManager {
640
640
  } else {
641
641
  this.online = online;
642
642
  this.stopAutoSync();
643
+ this.callbacks.onOnlineStatusChange?.(false);
643
644
  }
644
645
  }
645
646
  forceOffline(forced) {
@@ -2833,11 +2834,28 @@ class NetworkStatusManager {
2833
2834
  const finalOnlineState = this.pendingOnlineState ?? this.isNavigatorOnline();
2834
2835
  this.pendingOnlineState = undefined;
2835
2836
  const info = { online: finalOnlineState, timestamp: new Date };
2836
- if (this.callbacks.onNetworkStatusChange) {
2837
+ if (this.callbacks.onBrowserNetworkChange) {
2837
2838
  try {
2838
- this.callbacks.onNetworkStatusChange(info);
2839
+ this.callbacks.onBrowserNetworkChange(info);
2839
2840
  } catch (err) {
2840
- console.error("onNetworkStatusChange callback failed:", err);
2841
+ console.error("onBrowserNetworkChange callback failed:", err);
2842
+ }
2843
+ }
2844
+ if (finalOnlineState) {
2845
+ if (this.callbacks.onBrowserOnline) {
2846
+ try {
2847
+ this.callbacks.onBrowserOnline();
2848
+ } catch (err) {
2849
+ console.error("onBrowserOnline callback failed:", err);
2850
+ }
2851
+ }
2852
+ } else {
2853
+ if (this.callbacks.onBrowserOffline) {
2854
+ try {
2855
+ this.callbacks.onBrowserOffline();
2856
+ } catch (err) {
2857
+ console.error("onBrowserOffline callback failed:", err);
2858
+ }
2841
2859
  }
2842
2860
  }
2843
2861
  this.deps.setOnline(finalOnlineState).catch((err) => {
@@ -3061,7 +3079,9 @@ class SyncedDb {
3061
3079
  this.networkStatus = new NetworkStatusManager({
3062
3080
  debounceMs: config.networkStatusDebounceMs ?? 100,
3063
3081
  callbacks: {
3064
- onNetworkStatusChange: config.onNetworkStatusChange
3082
+ onBrowserNetworkChange: config.onBrowserNetworkChange,
3083
+ onBrowserOnline: config.onBrowserOnline,
3084
+ onBrowserOffline: config.onBrowserOffline
3065
3085
  },
3066
3086
  deps: {
3067
3087
  setOnline: (online) => this.setOnline(online)
@@ -315,8 +315,12 @@ export interface NetworkStatusChangeInfo {
315
315
  timestamp: Date;
316
316
  }
317
317
  export interface NetworkStatusCallbacks {
318
- /** Called when network status changes (browser online/offline event) */
319
- onNetworkStatusChange?: (info: NetworkStatusChangeInfo) => void;
318
+ /** Called when browser network status changes (online/offline event, after debounce) */
319
+ onBrowserNetworkChange?: (info: NetworkStatusChangeInfo) => void;
320
+ /** Called when browser goes online (after debounce) */
321
+ onBrowserOnline?: () => void;
322
+ /** Called when browser goes offline (after debounce) */
323
+ onBrowserOffline?: () => void;
320
324
  }
321
325
  export interface NetworkStatusDeps {
322
326
  /** Set SyncedDb online/offline status */
@@ -378,8 +378,21 @@ export interface SyncedDbConfig {
378
378
  /**
379
379
  * Callback when browser network status changes (online/offline event).
380
380
  * Called after debounce, before setOnline() is invoked. Useful for logging/UI updates.
381
+ * Note: This is different from onOnlineStatusChange which fires after SyncedDb processes the change.
381
382
  */
382
- onNetworkStatusChange?: (info: NetworkStatusChangeInfo) => void;
383
+ onBrowserNetworkChange?: (info: NetworkStatusChangeInfo) => void;
384
+ /**
385
+ * Callback when browser goes online (after debounce).
386
+ * Called before setOnline(true) is invoked.
387
+ * Note: This is different from onOnlineStatusChange which fires after SyncedDb processes the change.
388
+ */
389
+ onBrowserOnline?: () => void;
390
+ /**
391
+ * Callback when browser goes offline (after debounce).
392
+ * Called before setOnline(false) is invoked.
393
+ * Note: This is different from onOnlineStatusChange which fires after SyncedDb processes the change.
394
+ */
395
+ onBrowserOffline?: () => void;
383
396
  }
384
397
  /**
385
398
  * Glavna logika za sinhronizirano bazo podatkov
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cry-synced-db-client",
3
- "version": "0.1.65",
3
+ "version": "0.1.67",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",