mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-22 06:25:41 +00:00
feat(share): library deep links (psysonic2) with paste + toolbar actions (#261)
* feat(share): library deep links (psysonic2) with paste and toolbar actions Add base64url-encoded payloads for track, album, artist, and ordered queue. Handle paste outside inputs to switch server, validate entities, navigate or play. Reuse clipboard helper for context menu, queue panel, album and artist headers. Tests distinguish server invite strings from library shares. * fix(share): play partial queue when some shared tracks are missing Skip unavailable song IDs when pasting a queue share while preserving order. Toast when some tracks are missing; error only if none resolve. Add openedQueuePartial and queueAllUnavailable i18n; remove queueTracksMissing. * feat(settings): paste server invites globally and scroll to add form Handle psysonic1- magic strings outside inputs: navigate to settings or login with prefilled add-server fields. Decode invites embedded in surrounding text. Scroll the add-server block into view when opening from a paste so long server lists stay oriented. --------- Co-authored-by: Maxim Isaev <im@friclub.ru>
This commit is contained in:
committed by
GitHub
parent
21d00889aa
commit
7c9a300022
@@ -123,10 +123,30 @@ export const frTranslation = {
|
||||
selectedAlbums: '{{count}} albums sélectionnés',
|
||||
selectedArtists: '{{count}} artistes sélectionnés',
|
||||
songInfo: 'Infos du morceau',
|
||||
shareLink: 'Copier le lien de partage',
|
||||
shareCopied: 'Lien de partage copié dans le presse-papiers.',
|
||||
shareCopyFailed: 'Impossible de copier dans le presse-papiers.',
|
||||
},
|
||||
sharePaste: {
|
||||
notLoggedIn: 'Connectez-vous et ajoutez le serveur avant de coller un lien de partage.',
|
||||
noMatchingServer: 'Aucun serveur enregistré ne correspond à ce lien. Ajoutez un serveur avec cette adresse : {{url}}',
|
||||
trackUnavailable: 'Ce morceau est introuvable sur le serveur.',
|
||||
albumUnavailable: 'Cet album est introuvable sur le serveur.',
|
||||
artistUnavailable: 'Cet artiste est introuvable sur le serveur.',
|
||||
openedTrack: 'Lecture du morceau partagé.',
|
||||
openedAlbum: 'Ouverture de l’album partagé.',
|
||||
openedArtist: 'Ouverture de l’artiste partagé.',
|
||||
openedQueue_one: 'Lecture de {{count}} morceau depuis le lien de partage.',
|
||||
openedQueue_other: 'Lecture de {{count}} morceaux depuis le lien de partage.',
|
||||
openedQueuePartial:
|
||||
'{{played}} sur {{total}} morceaux du lien : {{skipped}} introuvable(s) sur ce serveur.',
|
||||
queueAllUnavailable: 'Aucun morceau de ce lien n’a été trouvé sur le serveur.',
|
||||
genericError: 'Impossible d’ouvrir le lien de partage.',
|
||||
},
|
||||
albumDetail: {
|
||||
back: 'Retour',
|
||||
playAll: 'Tout lire',
|
||||
shareAlbum: 'Partager l\'album',
|
||||
enqueue: 'Mettre en file',
|
||||
enqueueTooltip: 'Ajouter l\'album entier à la file d\'attente',
|
||||
artistBio: 'Biographie',
|
||||
@@ -181,6 +201,7 @@ export const frTranslation = {
|
||||
albums: 'Albums',
|
||||
album: 'Album',
|
||||
playAll: 'Tout lire',
|
||||
shareArtist: 'Partager l\'artiste',
|
||||
shuffle: 'Aléatoire',
|
||||
radio: 'Radio',
|
||||
loading: 'Chargement…',
|
||||
@@ -980,6 +1001,8 @@ export const frTranslation = {
|
||||
hide: 'Masquer',
|
||||
close: 'Fermer',
|
||||
nextTracks: 'Pistes suivantes',
|
||||
shareQueue: 'Copier le lien de la file d’attente',
|
||||
shareQueueEmpty: 'La file d’attente est vide — rien à partager.',
|
||||
emptyQueue: 'La file d\'attente est vide.',
|
||||
trackSingular: 'piste',
|
||||
trackPlural: 'pistes',
|
||||
|
||||
Reference in New Issue
Block a user