diff --git a/e2e/specs/requested-badge.spec.ts b/e2e/specs/requested-badge.spec.ts index 3d3520d..2d3a3de 100644 --- a/e2e/specs/requested-badge.spec.ts +++ b/e2e/specs/requested-badge.spec.ts @@ -7,7 +7,7 @@ import { test, expect, callBinding } from '../support/fixtures.js'; * and produced two: every one of the eight call sites was a two-way * ternary, so an album already on the request list showed a plus and * said "is not in your library" — on the same page, forty pixels from a - * filled button reading "Wanted". + * filled button reading "Requested". * * This spec exists at this tier rather than only in the component one * because of what it drags in with it: reaching the requested state is @@ -181,7 +181,7 @@ test.describe('the requested badge', () => { const ds = document.querySelector('explore-album-details') ?.shadowRoot; const btn = [...(ds?.querySelectorAll('wa-button') ?? [])].find( - (b) => /Wanted/.test(b.textContent ?? ''), + (b) => /Requested/.test(b.textContent ?? ''), ); return btn?.querySelector('wa-icon')?.getAttribute('name') ?? ''; diff --git a/frontend/src/components/downloads-view/downloads-view.ts b/frontend/src/components/downloads-view/downloads-view.ts index d774ab0..8047e34 100644 --- a/frontend/src/components/downloads-view/downloads-view.ts +++ b/frontend/src/components/downloads-view/downloads-view.ts @@ -400,7 +400,7 @@ export class DownloadsView extends ViewLifecycleMixin(LitElement) { private renderEmptyRequests() { return html`
- Nothing requested yet. Use “Want this” on an album or artist + Nothing requested yet. Use “Request this” on an album or artist to add it here.
`; diff --git a/frontend/src/components/explore-album-details/explore-album-details.ts b/frontend/src/components/explore-album-details/explore-album-details.ts index 41abd21..45a02d5 100644 --- a/frontend/src/components/explore-album-details/explore-album-details.ts +++ b/frontend/src/components/explore-album-details/explore-album-details.ts @@ -2680,7 +2680,7 @@ export class ExploreAlbumDetails extends LitElement implements ContextMenuHost { slot="start" name=${this.isRequested ? 'solid/bookmark' : 'regular/bookmark'} > - ${this.isRequested ? 'Wanted' : 'Want this'} + ${this.isRequested ? 'Requested' : 'Request this'} `; } diff --git a/frontend/src/components/explore-artist-details/explore-artist-details.ts b/frontend/src/components/explore-artist-details/explore-artist-details.ts index eafb75f..c18ca92 100644 --- a/frontend/src/components/explore-artist-details/explore-artist-details.ts +++ b/frontend/src/components/explore-artist-details/explore-artist-details.ts @@ -2753,7 +2753,7 @@ export class ExploreArtistDetails extends LitElement implements ContextMenuHost slot="icon" name=${requested ? 'xmark' : 'bookmark'} > - ${requested ? 'Cancel Request' : 'Want This'} + ${requested ? 'Cancel Request' : 'Request This'} ` : nothing} diff --git a/frontend/src/components/library-status-indicator/library-status-indicator.ts b/frontend/src/components/library-status-indicator/library-status-indicator.ts index b576c65..93281a4 100644 --- a/frontend/src/components/library-status-indicator/library-status-indicator.ts +++ b/frontend/src/components/library-status-indicator/library-status-indicator.ts @@ -48,7 +48,7 @@ export type LibraryStatus = * * Colours and glyphs: * - in-library → green circle, check mark - * - queued → amber circle, hourglass + * - queued → amber circle, bookmark ("on your list") * - not-in-library → grey circle, plus sign * * Usage: @@ -241,12 +241,23 @@ export class LibraryStatusIndicator extends LitElement { } `; + /** + * The glyph for each state. + * + * `queued` is a **bookmark**, not the hourglass it used to be. An + * hourglass says "wait, this is under way", which overstates what a + * request is: nothing may be downloading, nothing may ever be found, + * and the user can leave one sitting on the list indefinitely. A + * bookmark says the honest thing — it is on your list — and reads as + * the opposite of the plus that put it there, which is what a + * toggle's two states have to do. + */ private iconName(): string { switch (this.status) { case 'in-library': return 'check'; case 'queued': - return 'hourglass-half'; + return 'bookmark'; default: return 'plus'; } @@ -276,7 +287,7 @@ export class LibraryStatusIndicator extends LitElement { if (this.actionable) { return this.status === 'queued' ? `Cancel the request for ${kind}${name}` - : `Want ${kind}${name}`; + : `Request ${kind}${name}`; } switch (this.status) { @@ -354,25 +365,6 @@ export class LibraryStatusIndicator extends LitElement { } const title = this.tooltip(); - const icon = this.iconName() - ? html`` - : nothing; - - if (this.actionable) { - return html` - - `; - } // The ring stands in for the icon wherever the icon would go — // including inside the button, because a partly-held album is diff --git a/frontend/test/components/artist-release-menu.test.ts b/frontend/test/components/artist-release-menu.test.ts index 9829a9e..cb5ed00 100644 --- a/frontend/test/components/artist-release-menu.test.ts +++ b/frontend/test/components/artist-release-menu.test.ts @@ -120,7 +120,7 @@ describe('the context menu on an artist page release', () => { expect(items).toContain('Add to Queue'); expect(items).toContain('Play Next'); // Owned: there is nothing left to ask for. - expect(items).not.toContain('Want This'); + expect(items).not.toContain('Request This'); }); it('offers a request, and no playback, for a release nobody owns', async () => { @@ -132,7 +132,7 @@ describe('the context menu on an artist page release', () => { expect(items).not.toContain('Play'); expect(items).not.toContain('Add to Queue'); - expect(items).toContain('Want This'); + expect(items).toContain('Request This'); expect(items).toContain('View on MusicBrainz'); }); @@ -148,7 +148,7 @@ describe('the context menu on an artist page release', () => { // …but a `local:` id names nothing upstream, and wanting something // already in the library is not a thing to offer. expect(items).not.toContain('View on MusicBrainz'); - expect(items).not.toContain('Want This'); + expect(items).not.toContain('Request This'); }); it('opens from the keyboard on Shift+F10', async () => { diff --git a/frontend/test/components/chrome.test.ts b/frontend/test/components/chrome.test.ts index 6a8dec5..4d11c12 100644 --- a/frontend/test/components/chrome.test.ts +++ b/frontend/test/components/chrome.test.ts @@ -166,7 +166,7 @@ describe('', () => { glyphs.push(shadow(el, 'wa-icon')?.getAttribute('name')); } - expect(glyphs).toEqual(['check', 'hourglass-half', 'plus']); + expect(glyphs).toEqual(['check', 'bookmark', 'plus']); }); it('phrases its label around the entity it describes', async () => { diff --git a/frontend/test/components/library-status.test.ts b/frontend/test/components/library-status.test.ts index 317b2e1..6945552 100644 --- a/frontend/test/components/library-status.test.ts +++ b/frontend/test/components/library-status.test.ts @@ -249,7 +249,7 @@ describe(' as a control', () => { const el = await badge({ requestMbid: 'rg-1' }); expect(shadow(el, '.badge')?.getAttribute('aria-label')).toBe( - 'Want album "Abbey Road"', + 'Request album "Abbey Road"', ); await update(el, { status: 'queued' });