fix(downloads): stop searching a list there is nothing to search with
Every pass attempted every request, each came back "no download clients are enabled", and RecordAttempt wrote that down as an attempt and put a retry on the clock -- so a wanted list built deliberately without a client accrued failures and announced "next check in 6 hours" about a check that cannot happen. Wanting something with no way to fetch it is supported. Being told it is being looked for is a lie, and the row says what is true instead. Everything above the attempt still runs: an artist subscription still expands, and a request satisfied by some other route -- ripped, bought, copied in -- is still retired. Neither needs a provider. TestReconcileRespectsBatchSize now installs a client that finds nothing, because a batch size is about how many requests one pass searches for and that only means something when there is something to search with. Refs #37
This commit is contained in:
@@ -512,7 +512,9 @@ export class DownloadsView extends ViewLifecycleMixin(LitElement) {
|
||||
${request.artist ? `${request.artist} — ` : ''}${request.title ||
|
||||
request.mbid}
|
||||
</div>
|
||||
<div class="detail">${requestDetail(request, this.nowMs)}</div>
|
||||
<div class="detail">
|
||||
${requestDetail(request, this.nowMs, this.canDownload)}
|
||||
</div>
|
||||
</div>
|
||||
<div class="actions">
|
||||
${request.state === 'satisfied'
|
||||
@@ -706,10 +708,20 @@ export class DownloadsView extends ViewLifecycleMixin(LitElement) {
|
||||
* looked for rather than as an error, because that is what it is — the
|
||||
* retry is already scheduled and there is nothing for the user to do.
|
||||
*/
|
||||
function requestDetail(request: Request, nowMs: number): string {
|
||||
function requestDetail(
|
||||
request: Request,
|
||||
nowMs: number,
|
||||
canDownload: boolean,
|
||||
): string {
|
||||
if (request.state === 'satisfied') return 'In your library';
|
||||
if (request.state === 'paused') return 'Paused — not being looked for';
|
||||
|
||||
// With no client there is no search and no retry clock — the
|
||||
// backend stopped scheduling one — so a row must not imply either.
|
||||
// "Queued" and "next check in 6 hours" are both promises nothing is
|
||||
// in a position to keep.
|
||||
if (!canDownload) return 'On your list — no download client to search with';
|
||||
|
||||
if (request.attempts === 0) return 'Queued — not searched for yet';
|
||||
|
||||
const tries = `Searched ${request.attempts} time${request.attempts === 1 ? '' : 's'}`;
|
||||
|
||||
Reference in New Issue
Block a user