Skip to content

Tidal integration: OAuth token refresh + scheduled want-list sync #596

Description

@forkwright

Finding

The Tidal scrobble integration exposes four config fields (syndesmos.tidal.client_id, .client_secret, .refresh_token, .sync_interval_minutes) that drive nothing — they are being removed as dead config (#575) and should return as one coherent feature.

Evidence

  • crates/syndesmos/src/tidal/mod.rs:68-70,85: TidalClient reads only a static access_token; there is no OAuth token-refresh machinery, so a configured refresh_token is never used and a static access token expires within hours.
  • crates/syndesmos/src/tidal/wantlist.rs:36-61: sync_want_list exists and is unit-tested but has zero callers — no scheduler anywhere consumes sync_interval_minutes.

Why this matters

These four fields are one unbuilt feature, not four independent knobs: scheduled want-list sync without OAuth refresh is self-defeating (the access token 401s mid-run), so wiring sync_interval_minutes alone would ship a scheduler that dies after a few hours. Removing them now (rather than leaving dead config) is correct; this issue tracks their return as a unit so the capability is not silently lost.

Desired correction

Implement Tidal OAuth token refresh (client_id/client_secret/refresh_token → access-token rotation, cached like the proven TVDB token pattern) plus a scheduled sync_want_list driven by sync_interval_minutes (a supervisor ticker, mirroring the zetesis caps-refresh scheduler). Re-add the four config fields at that point.

Done when: a configured Tidal integration refreshes its token automatically and syncs the want-list on the configured interval, covered by tests.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions