fix(shorts): embed PeerTube sur l'instance d'origine + FAB glissable + layout bureau
CI / build-and-test (push) Canceled after 0s
CI / build-and-test (push) Canceled after 0s
- PeerTube : l'adaptateur pt.ts reconstruisait l'item SANS `url` et le pont catalogue ne conservait l'URL que pour Odysee → /shorts reconstruisait l'embed sur l'instance ACTIVE → « Sorry this video does not exist » sur toute vidéo fédérée. `url` est désormais miroitée dans VideoItem (contrat v2), propagée par PtAdapter et gardée par catalogShortToVideo : peerTubeHostOf() dérive enfin le host d'origine. Vérifié de bout en bout : embed tube.blueben.net → 200 + vrai titre, cas de test dédié dans shorts-catalog.spec. - FAB du menu : déplaçable au pointeur (seuil 6 px, position en % du cadre, persistée en localStorage). Le clic qui suit un glissement n'ouvre pas le menu, et le panneau s'ouvre TOUJOURS vers l'intérieur du cadre (classes pm-opens-left / pm-opens-right / pm-opens-up posées par applyAnchor) : sinon overflow:hidden le rognait dès qu'on déplaçait le bouton. - Bureau : --shorts-chrome 9rem → 4rem (la vidéo passe de 691 à 771 px de haut en 1280x900, 389 → 434 de large) et menu compact au-delà de 768 px (FAB 36 → 30 px, panneau 233 → 202 px). Mobile inchangé (36 / 636 px). Tests : test:shorts-catalog (nouveau cas PeerTube), test:kind, test:section, test:search verts ; build ng OK ; sondage Playwright 19/19 sur l'instance locale (layout, glissement + restauration, embed PeerTube 200 sans erreur).
This commit is contained in:
@@ -45,6 +45,10 @@ export class PtAdapter implements ProviderAdapter<VideoItem> {
|
||||
// Le serveur envoie `publishedAt` (ISO) quand l'instance l'expose.
|
||||
publishedAt: typeof it.publishedAt === 'string' ? it.publishedAt : undefined,
|
||||
channelExternalId,
|
||||
// URL canonnique : instance d'origine (vidéos fédérées). Sans elle,
|
||||
// /shorts reconstruit l'embed sur l'instance ACTIVE → « Sorry this
|
||||
// video does not exist ».
|
||||
url: typeof it.url === 'string' ? it.url : undefined,
|
||||
// Signaux de type pour le raffinement client des filtres.
|
||||
type: typeof it.type === 'string' ? it.type : undefined,
|
||||
isShort: it.isShort === true ? true : undefined,
|
||||
|
||||
Reference in New Issue
Block a user