mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-21 22:15:40 +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
@@ -122,10 +122,30 @@ export const nlTranslation = {
|
||||
selectedAlbums: '{{count}} albums geselecteerd',
|
||||
selectedArtists: '{{count}} artiesten geselecteerd',
|
||||
songInfo: 'Nummerinfo',
|
||||
shareLink: 'Deellink kopiëren',
|
||||
shareCopied: 'Deellink gekopieerd naar het klembord.',
|
||||
shareCopyFailed: 'Kopiëren naar het klembord is mislukt.',
|
||||
},
|
||||
sharePaste: {
|
||||
notLoggedIn: 'Log in en voeg de server toe voordat je een deellink plakt.',
|
||||
noMatchingServer: 'Geen opgeslagen server komt overeen met deze link. Voeg een server toe met dit adres: {{url}}',
|
||||
trackUnavailable: 'Dit nummer is niet op de server gevonden.',
|
||||
albumUnavailable: 'Dit album is niet op de server gevonden.',
|
||||
artistUnavailable: 'Deze artiest is niet op de server gevonden.',
|
||||
openedTrack: 'Gedeeld nummer wordt afgespeeld.',
|
||||
openedAlbum: 'Gedeeld album wordt geopend.',
|
||||
openedArtist: 'Gedeelde artiest wordt geopend.',
|
||||
openedQueue_one: '{{count}} nummer van deellink wordt afgespeeld.',
|
||||
openedQueue_other: '{{count}} nummers van deellink worden afgespeeld.',
|
||||
openedQueuePartial:
|
||||
'{{played}} van {{total}} nummers uit de link worden afgespeeld ({{skipped}} niet gevonden op deze server).',
|
||||
queueAllUnavailable: 'Geen enkel nummer uit deze link is op de server gevonden.',
|
||||
genericError: 'De deellink kon niet worden geopend.',
|
||||
},
|
||||
albumDetail: {
|
||||
back: 'Terug',
|
||||
playAll: 'Alles afspelen',
|
||||
shareAlbum: 'Album delen',
|
||||
enqueue: 'In wachtrij',
|
||||
enqueueTooltip: 'Volledig album aan wachtrij toevoegen',
|
||||
artistBio: 'Artiest biografie',
|
||||
@@ -180,6 +200,7 @@ export const nlTranslation = {
|
||||
albums: 'Albums',
|
||||
album: 'Album',
|
||||
playAll: 'Alles afspelen',
|
||||
shareArtist: 'Artiest delen',
|
||||
shuffle: 'Willekeurig',
|
||||
radio: 'Radio',
|
||||
loading: 'Laden…',
|
||||
@@ -979,6 +1000,8 @@ export const nlTranslation = {
|
||||
hide: 'Verbergen',
|
||||
close: 'Sluiten',
|
||||
nextTracks: 'Volgende nummers',
|
||||
shareQueue: 'Wachtrij-deellink kopiëren',
|
||||
shareQueueEmpty: 'De wachtrij is leeg — niets om te delen.',
|
||||
emptyQueue: 'De wachtrij is leeg.',
|
||||
trackSingular: 'nummer',
|
||||
trackPlural: 'nummers',
|
||||
|
||||
Reference in New Issue
Block a user