getBehavior method

SyncBehavior getBehavior({
  1. required NetworkType networkType,
  2. required int batteryPercent,
  3. required bool isCharging,
  4. required bool isMetered,
  5. required bool isForeground,
})

Determines the sync behavior based on current state.

Implementation

SyncBehavior getBehavior({
  required NetworkType networkType,
  required int batteryPercent,
  required bool isCharging,
  required bool isMetered,
  required bool isForeground,
}) {
  // Foreground-only mode
  if (foregroundOnly && !isForeground) {
    return SyncBehavior.queue;
  }

  // Low battery override
  if (batteryPercent < lowBatteryThreshold && !isCharging) {
    return lowBatteryBehavior;
  }

  // Charging overrides network-based behavior
  if (isCharging) {
    // Still respect offline state
    if (networkType == NetworkType.none) {
      return onOffline;
    }
    return onCharging;
  }

  // Network type based behavior
  switch (networkType) {
    case NetworkType.wifi:
      return onWifi;
    case NetworkType.cellular:
      return isMetered ? onMetered : onCellular;
    case NetworkType.ethernet:
      return onWifi; // Treat ethernet like WiFi
    case NetworkType.none:
      return onOffline;
  }
}