android: a folder of audio files, and a paste of track links
The paste door now reads itself the way the desktop's does: one track link in the paste and every line is looked up on its own public page (playlist_import_track_links), which is the way past Spotify's 100-track public ceiling — the wait screen counts them as they arrive. A fourth door imports a folder of audio files off this phone, picked with the storage plugin's own document-tree picker; playlist_import_folder grew a path argument for it, because on Android it had no dialog to open and always answered nothing. A YouTube playlist link needed no door at all — the link one already dispatches it.
This commit is contained in:
1 parent
24c6857847
commit
c737809325
9 files changed
+215
-47
No files matched your search
+29
-18
@@ -349,14 +349,23 @@ describe / pin / duplicate / delete, `playlist_add_items`,
|
||||
desktop's commands already emit; the page re-reads its rows when the
|
||||
playlist's revision moves.
|
||||
- **Importing** (`importer.svelte.js`, `screens/Import.svelte`): the
|
||||
shelf's Import opens the doors that need no file — a link (YouTube ·
|
||||
Spotify · Apple Music · TIDAL · Deezer), a pasted tracklist (plain lines,
|
||||
a timestamped setlist, or track links), a YouTube DJ set's posted
|
||||
tracklist. The backend stages the draft over plain HTTP (the same
|
||||
commands as the desktop, no yt-dlp involved), the review screen shows
|
||||
every row's verdict, the stream rows are verified against the catalog
|
||||
while it is up (the desktop's pass, verbatim), and Create swaps the
|
||||
review for the playlist it made (`nav.replace`).
|
||||
shelf's Import opens four doors — a link (YouTube · Spotify · Apple
|
||||
Music · TIDAL · Deezer; a YouTube playlist link rides this one too, the
|
||||
backend dispatches it by host), a pasted tracklist (plain lines, a
|
||||
timestamped setlist, or track links), a YouTube DJ set's posted
|
||||
tracklist, and a folder of audio files on this phone. A paste holding
|
||||
even one track link takes the link path (`playlist_import_track_links`,
|
||||
the desktop's own detector verbatim): each line is read off its own
|
||||
public page — the way past Spotify's 100-track public ceiling — and the
|
||||
wait screen counts them as they come. The folder door picks with the
|
||||
storage plugin's document-tree picker and hands the resolved path to
|
||||
`playlist_import_folder`, which grew a `path` argument for it: on the
|
||||
phone that command had no dialog to open and always answered nothing.
|
||||
The backend stages the draft over plain HTTP (the same commands as the
|
||||
desktop, no yt-dlp involved), the review screen shows every row's
|
||||
verdict, the stream rows are verified against the catalog while it is up
|
||||
(the desktop's pass, verbatim), and Create swaps the review for the
|
||||
playlist it made (`nav.replace`).
|
||||
- **The share sheet** (`crates/tauri-plugin-share`, `share.svelte.js`):
|
||||
Share → SoulStream from any app. The plugin's `ShareActivity` (an
|
||||
ACTION_SEND text/plain target, merged into the app's manifest from the
|
||||
@@ -367,9 +376,9 @@ describe / pin / duplicate / delete, `playlist_add_items`,
|
||||
anything else the pasted-tracklist door. The phone walk sends the intent
|
||||
itself (`adb shell am start -a android.intent.action.SEND …`).
|
||||
|
||||
Not on the phone yet: the file and folder import doors (the files are on
|
||||
the desktop), the listener door, drag reorder, the cover picker, export,
|
||||
Share on SoulStream.
|
||||
Not on the phone yet: the playlist-file door and export — both want a file
|
||||
picker the storage plugin has still to grow — the listener door (it needs
|
||||
yt-dlp, a desktop tool), drag reorder, and Share on SoulStream.
|
||||
|
||||
## Settings that reach the config
|
||||
|
||||
@@ -569,8 +578,9 @@ a catalog record, its Save and the Transfers burst → Gaps → the playlist
|
||||
shelf and a page with every row kind (a local row, the stream row through
|
||||
the resolver, the filter, a removal and its undo, unpin, rename, a new
|
||||
playlist, Add to playlist from a record's sheet, delete) → the import doors
|
||||
(a pasted tracklist, a link with its catalog verification, a share from
|
||||
another app) → the playlist repair (an unknown row relinked from the
|
||||
(a pasted tracklist, a link with its catalog verification, pasted track
|
||||
links read a page each, a folder of audio files off the phone, a share
|
||||
from another app) → the playlist repair (an unknown row relinked from the
|
||||
library) → the artwork viewer → a queue row's sheet → a catalog song's,
|
||||
a catalog card's and the record page's sheets → the now-playing Save →
|
||||
a peer's sheet, a raw file's sheet, a user's shares browsed and a folder
|
||||
@@ -616,11 +626,12 @@ paused) without the walk.
|
||||
key, Who has it) — Freenet on the phone is a later experiment; the
|
||||
network side is in. Rooms and chat are built and mock-walked; a live room
|
||||
is Kyle's to join.
|
||||
- The desktop-only doors and tools: the file and folder playlist imports,
|
||||
the listener door and the lyric alignment models (a desktop runtime),
|
||||
playlist export, drag reorder (Move up / down / to the top stand in), catalog track
|
||||
previews, the full discography page, the artist-artwork upscaler,
|
||||
updates and the account section (sign-in lives on Community).
|
||||
- The desktop-only doors and tools: the playlist-file import and export (a
|
||||
file picker the phone's storage plugin has still to grow), the listener
|
||||
door and the lyric alignment models (a desktop runtime), drag reorder
|
||||
(Move up / down / to the top stand in), catalog track previews, the full
|
||||
discography page, the artist-artwork upscaler, updates and the account
|
||||
section (sign-in lives on Community).
|
||||
- Follows and the play history are per library folder, so the phone's own
|
||||
folder starts empty of both; they arrive with a shared library.
|
||||
- The artwork viewer: the cover at full size, pinch to zoom, one finger
|
||||
|
||||
Reference in new issue
Block a user