Is the debrid subscription still good?
Every source laev plays goes through Real-Debrid or TorBox, and when the subscription behind them lapses the APIs stop resolving — a user whose plan ran out mid-session watched laev try source after source, each one answered the same way, with nothing on screen to say why. The answer was one request away the whole time: both providers report their own expiry date.
So it is asked once a day and remembered. Once a day rather than once a session because a session can outlive the subscription: laev left open in a window overnight is laev holding an answer from yesterday, which is exactly how somebody ends up staring at failures for a plan that expired at midnight. The cache is keyed by the local date — when the date changes, the answer is stale by definition, whether the app has been running for ten minutes or a month.
Nothing here blocks on the network where a screen is waiting: ensure/0 is
called at the edges (launch, and before a source search), and everything in
the hot path reads blocked/0, which only ever consults what is already
known.
Summary
Functions
What is already known, without asking anyone: {:expired, detail} or nil.
The subscription state, checked at most once a day: :ok, {:expired, detail} when a provider says the plan has lapsed, or {:unknown, detail}
when nothing could be reached — which is not the same thing and must never be
treated as one. A network laev can't reach is a network the provider can't be
asked about.
Forget what was checked — for tests, and for a key that just changed.
Ask the providers now, whatever is remembered.
Check in the background, for the moments worth knowing early.
Functions
What is already known, without asking anyone: {:expired, detail} or nil.
For the paths that run per source, where a request would be both slow and pointless. An unchecked or unreachable account is not blocked — being unsure is never a reason to refuse to play something.
The subscription state, checked at most once a day: :ok, {:expired, detail} when a provider says the plan has lapsed, or {:unknown, detail}
when nothing could be reached — which is not the same thing and must never be
treated as one. A network laev can't reach is a network the provider can't be
asked about.
Forget what was checked — for tests, and for a key that just changed.
Ask the providers now, whatever is remembered.
Check in the background, for the moments worth knowing early.