Spotify API interaction service Facilitates renderer-to-main process communication

Constructors

Methods

  • Authenticates with Spotify API

    Parameters

    • Optionalcredentials: SpotifyCredentials

      Optional Spotify credentials (uses stored if omitted)

    Returns Promise<boolean>

    Promise resolving to authentication success status

      public async authenticate(
    credentials?: SpotifyCredentials,
    ): Promise<boolean> {
    try {
    return await ipcRenderer.invoke("spotify:authenticate", credentials);
    } catch (error) {
    console.error("Authentication error:", error);
    return false;
    }
    }
  • Terminates Spotify session and clears stored tokens

    Returns Promise<boolean>

    Promise resolving to logout success status

      public async logout(): Promise<boolean> {
    try {
    return await ipcRenderer.invoke("spotify:logout");
    } catch (error) {
    console.error("Logout error:", error);
    return false;
    }
    }
  • Verifies if user has valid Spotify authentication

    Returns Promise<boolean>

    Promise resolving to authentication status

      public async isAuthenticated(): Promise<boolean> {
    try {
    return await ipcRenderer.invoke("spotify:isAuthenticated");
    } catch (error) {
    console.error("Authentication check error:", error);
    return false;
    }
    }
  • Retrieves current Spotify playback state

    Returns Promise<null | SpotifyPlaybackInfo>

    Promise resolving to playback data or null if inactive

      public async getCurrentPlayback(): Promise<SpotifyPlaybackInfo | null> {
    try {
    return await ipcRenderer.invoke("spotify:getCurrentPlayback");
    } catch (error) {
    console.error("Get current playback error:", error);
    return null;
    }
    }
  • Retrieves skip tracking data for all monitored tracks

    Returns Promise<SkippedTrack[]>

    Promise resolving to array of tracked tracks

      public async getSkippedTracks(): Promise<SkippedTrack[]> {
    try {
    return await ipcRenderer.invoke("spotify:getSkippedTracks");
    } catch (error) {
    console.error("Get skipped tracks error:", error);
    return [];
    }
    }
  • Updates skip tracking data from storage

    Returns Promise<SkippedTrack[]>

    Promise resolving to refreshed tracks array

      public async refreshSkippedTracks(): Promise<SkippedTrack[]> {
    try {
    return await ipcRenderer.invoke("spotify:refreshSkippedTracks");
    } catch (error) {
    console.error("Refresh skipped tracks error:", error);
    return [];
    }
    }
  • Persists application settings

    Parameters

    Returns Promise<boolean>

    Promise resolving to save operation success status

      public async saveSettings(settings: SpotifySettings): Promise<boolean> {
    try {
    return await ipcRenderer.invoke("spotify:saveSettings", settings);
    } catch (error) {
    console.error("Save settings error:", error);
    return false;
    }
    }
  • Retrieves application settings

    Returns Promise<SpotifySettings>

    Promise resolving to current settings or defaults

      public async getSettings(): Promise<SpotifySettings> {
    try {
    return await ipcRenderer.invoke("spotify:getSettings");
    } catch (error) {
    console.error("Get settings error:", error);
    return {
    skipThreshold: 3,
    timeframeInDays: 30,
    skipProgress: 70,
    };
    }
    }
  • Initiates Spotify playback monitoring

    Returns Promise<boolean>

    Promise resolving to operation success status

      public async startMonitoring(): Promise<boolean> {
    try {
    return await ipcRenderer.invoke("spotify:startMonitoring");
    } catch (error) {
    console.error("Start monitoring error:", error);
    return false;
    }
    }
  • Terminates Spotify playback monitoring

    Returns Promise<boolean>

    Promise resolving to operation success status

      public async stopMonitoring(): Promise<boolean> {
    try {
    return await ipcRenderer.invoke("spotify:stopMonitoring");
    } catch (error) {
    console.error("Stop monitoring error:", error);
    return false;
    }
    }
  • Checks if playback monitoring is currently active

    Returns Promise<boolean>

    Promise resolving to monitoring state

      public async isMonitoringActive(): Promise<boolean> {
    try {
    return await ipcRenderer.invoke("spotify:isMonitoringActive");
    } catch (error) {
    console.error("Check monitoring status error:", error);
    return false;
    }
    }
  • Pauses Spotify playback

    Returns Promise<boolean>

    Promise resolving to operation success status

      public async pausePlayback(): Promise<boolean> {
    try {
    return await ipcRenderer.invoke("spotify:pausePlayback");
    } catch (error) {
    console.error("Pause playback error:", error);
    return false;
    }
    }
  • Resumes Spotify playback

    Returns Promise<boolean>

    Promise resolving to operation success status

      public async resumePlayback(): Promise<boolean> {
    try {
    return await ipcRenderer.invoke("spotify:resumePlayback");
    } catch (error) {
    console.error("Resume playback error:", error);
    return false;
    }
    }
  • Skips to previous track in queue

    Returns Promise<boolean>

    Promise resolving to operation success status

      public async skipToPreviousTrack(): Promise<boolean> {
    try {
    return await ipcRenderer.invoke("spotify:skipToPreviousTrack");
    } catch (error) {
    console.error("Skip to previous track error:", error);
    return false;
    }
    }
  • Skips to next track in queue

    Returns Promise<boolean>

    Promise resolving to operation success status

      public async skipToNextTrack(): Promise<boolean> {
    try {
    return await ipcRenderer.invoke("spotify:skipToNextTrack");
    } catch (error) {
    console.error("Skip to next track error:", error);
    return false;
    }
    }