= {
function posterTileHtml(item: ItemDto): string {
const drill = item.type ? DRILL_DOWN[item.type] : undefined;
const drillHref = drill ? `#/${drill.route}/${item.id}` : null;
- const partyLabel = item.type === 'Audio' ? 'Écouter ensemble' : 'Lancer une watch party';
+ // Video -> "watch party", audio -> "listen party" - see the party kinds
+ // in docs/architecture.md (the third, "lounge party", is the static one).
+ const partyLabel = item.type === 'Audio' ? 'Lancer une listen party' : 'Lancer une watch party';
return `
${drillHref ? `
` : ''}
@@ -116,7 +118,7 @@ export function tileHtml(item: ItemDto): string {
}
/**
- * Wires up every "Lancer une watch party" button inside `container`, now
+ * Wires up every "Lancer une watch/listen party" button inside `container`, now
* and for any tile added to it later. `onStart(itemId)` does the actual
* work (create the party + navigate) - kept as a caller-supplied callback
* so this module doesn't need to depend on api/party.ts/router.ts itself.
@@ -132,6 +134,7 @@ export function wireTileButtons(container: ParentNode, onStart: (itemId: string)
const btn = (e.target as HTMLElement).closest
('.startPartyBtn');
if (!btn || btn.disabled) return;
e.preventDefault();
+ const idleLabel = btn.textContent; // "watch party" or "listen party" - put back as-is on failure
btn.disabled = true;
btn.textContent = 'Démarrage...';
try {
@@ -139,7 +142,7 @@ export function wireTileButtons(container: ParentNode, onStart: (itemId: string)
} catch (err) {
showToast((err as Error).message, { variant: 'error' });
btn.disabled = false;
- btn.textContent = 'Lancer une watch party';
+ btn.textContent = idleLabel;
}
});
}
diff --git a/client/src/views/album/Album.ts b/client/src/views/album/Album.ts
index 9a942cc..2b4c120 100644
--- a/client/src/views/album/Album.ts
+++ b/client/src/views/album/Album.ts
@@ -69,7 +69,7 @@ export async function renderAlbum(root: HTMLElement, params: RouteParams): Promi
// states) - the label lives in aria-label/title for accessibility
// rather than as visible text, now that there's one per track instead
// of one per page (see docs/architecture.md's "Music UI rework").
- const startLabel = 'Écouter ensemble';
+ const startLabel = 'Lancer une listen party';
const addLabel = 'Ajouter à la file';
const startAlbumLabel = 'Écouter cet album';
const addAlbumLabel = "Ajouter l'album à la file";
diff --git a/client/src/views/home/Home.css b/client/src/views/home/Home.css
index 2b77ab6..86d6e66 100644
--- a/client/src/views/home/Home.css
+++ b/client/src/views/home/Home.css
@@ -60,3 +60,18 @@
color: var(--accent-bright);
font-weight: 600;
}
+
+/* Which kind of party a card is - "Watch party" (video) or "Listen party"
+ (audio). Lounge parties (static) have their own tab, never this list. */
+.partyKind {
+ align-self: flex-start;
+ font-size: 10px;
+ font-weight: 700;
+ letter-spacing: .06em;
+ text-transform: uppercase;
+ padding: 1px 6px;
+ border-radius: 4px;
+}
+
+.partyKind--video { color: var(--accent-bright); background: rgba(82, 181, 75, .15); }
+.partyKind--music { color: #7fb4ff; background: rgba(127, 180, 255, .15); }
diff --git a/client/src/views/home/Home.html b/client/src/views/home/Home.html
index a4f6f9c..801c159 100644
--- a/client/src/views/home/Home.html
+++ b/client/src/views/home/Home.html
@@ -3,7 +3,7 @@
- Watch parties en cours
+ Parties en cours
diff --git a/client/src/views/home/Home.ts b/client/src/views/home/Home.ts
index 74765aa..b9eae77 100644
--- a/client/src/views/home/Home.ts
+++ b/client/src/views/home/Home.ts
@@ -59,6 +59,7 @@ function renderParties(root: HTMLElement, parties: LobbyPartyDto[]): void {
+
${p.mediaType === 'music' ? 'Listen party' : 'Watch party'}
${escapeHtml(p.itemName || '')}
${escapeHtml(p.hostUserName || '')} · ${p.memberCount} participant${p.memberCount > 1 ? 's' : ''}
diff --git a/client/src/views/playlist/Playlist.html b/client/src/views/playlist/Playlist.html
index 2e4bb22..2579623 100644
--- a/client/src/views/playlist/Playlist.html
+++ b/client/src/views/playlist/Playlist.html
@@ -6,7 +6,7 @@
-
+
Voir sur Emby
diff --git a/client/src/views/series/Series.html b/client/src/views/series/Series.html
index ab5e41a..d219701 100644
--- a/client/src/views/series/Series.html
+++ b/client/src/views/series/Series.html
@@ -5,7 +5,7 @@
-
+
Voir sur Emby
diff --git a/client/src/views/staticParties/StaticParties.css b/client/src/views/staticParties/StaticParties.css
index fe57ad6..3e98f3e 100644
--- a/client/src/views/staticParties/StaticParties.css
+++ b/client/src/views/staticParties/StaticParties.css
@@ -1,4 +1,4 @@
-/* ---- "Watch parties permanentes" tab: one card per static party ---- */
+/* ---- "Lounge parties" tab: one card per static party ---- */
.staticGrid {
display: grid;
diff --git a/client/src/views/staticParties/StaticParties.html b/client/src/views/staticParties/StaticParties.html
index ce208ce..44b759d 100644
--- a/client/src/views/staticParties/StaticParties.html
+++ b/client/src/views/staticParties/StaticParties.html
@@ -1,9 +1,9 @@
Une série ou une playlist regardée en groupe sur plusieurs séances : la progression du groupe
et celle de chacun sont gardées en mémoire. Pour en créer une, ouvre une série ou une playlist
- vidéo et choisis « Créer une watch party permanente ».
+ vidéo et choisis « Créer une lounge party ».
diff --git a/client/src/views/staticParties/StaticParties.ts b/client/src/views/staticParties/StaticParties.ts
index bee983a..09dae4e 100644
--- a/client/src/views/staticParties/StaticParties.ts
+++ b/client/src/views/staticParties/StaticParties.ts
@@ -7,7 +7,7 @@ import { LOADING_HINT } from '../../loading';
import type { StaticPartySummaryDto } from '../../types';
/**
- * Route `/static` - the "Watch parties permanentes" tab: every static
+ * Route `/static` - the "Lounge parties" tab: every static
* watch party, kept apart from the home page's classic live parties
* (whose lobby list leaves static sessions out - see Home.ts).
*
@@ -54,7 +54,7 @@ function load(grid: HTMLElement): void {
* count, and whether a session is running right now. */
function render(grid: HTMLElement, parties: StaticPartySummaryDto[]): void {
if (!parties.length) {
- grid.innerHTML = 'Aucune watch party permanente pour le moment.
';
+ grid.innerHTML = 'Aucune lounge party pour le moment.
';
return;
}
grid.innerHTML = parties.map((p) => {
diff --git a/client/src/views/staticParty/StaticParty.html b/client/src/views/staticParty/StaticParty.html
index 85ae4b5..4aa5cf0 100644
--- a/client/src/views/staticParty/StaticParty.html
+++ b/client/src/views/staticParty/StaticParty.html
@@ -2,14 +2,14 @@