• Sets monitoring configuration options

    Configures the playback monitoring service by updating the polling intervals, backoff strategy parameters, and other monitoring behavior settings. If monitoring is already active, it automatically restarts the service with the new configuration.

    The configuration allows fine-tuning the monitoring behavior for different scenarios:

    • Adjust polling frequency to balance responsiveness vs battery/network usage
    • Configure error handling behavior during API outages
    • Customize UI update frequency for progress interpolation
    • Set backoff parameters for network resilience

    Parameters

    • config: Partial<PlaybackMonitorConfig>

      Configuration options to override defaults:

      • pollingInterval: Milliseconds between API polls (default: 1000ms)
      • progressUpdateInterval: Milliseconds between UI updates (default: 250ms)
      • maxBackoffInterval: Maximum delay during backoff (default: 15000ms)
      • initialBackoffDelay: Starting delay for backoff (default: 2000ms)
      • backoffMultiplier: Factor to increase backoff delay (default: 1.5)
      • errorThreshold: Errors required to trigger backoff (default: 3)
      • lowBatteryPollingInterval: Polling interval on low battery (default: 5000ms)

    Returns void

    // Increase polling interval to reduce battery usage
    setMonitoringConfig({
    pollingInterval: 3000,
    progressUpdateInterval: 500
    });
    export function setMonitoringConfig(
    config: Partial<PlaybackMonitorConfig>,
    ): void {
    currentConfig = {
    ...currentConfig,
    ...config,
    };

    store.saveLog(
    `Updated monitoring configuration: ${JSON.stringify(currentConfig)}`,
    "DEBUG",
    );

    // If monitoring is already active, restart it to apply new configuration
    if (isMonitoringActive()) {
    const mainWindow = BrowserWindow.getAllWindows()[0];
    const credentials = getCredentials();

    if (mainWindow && credentials.clientId && credentials.clientSecret) {
    stopPlaybackMonitoring();
    startPlaybackMonitoring(
    mainWindow,
    credentials.clientId,
    credentials.clientSecret,
    );
    }
    }
    }