Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ItemIds & remove open playlist state #10

Merged
merged 41 commits into from
Sep 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
b547d2c
Add playlist item IDs
probablykasper Sep 22, 2024
40c0818
Remove open playlist concept from Rust
probablykasper Sep 23, 2024
c3bfc04
WIP move to item IDs
probablykasper Sep 23, 2024
90f81ea
Finish new selection implementation
probablykasper Sep 23, 2024
47005bf
Prevent selection store from going out of sync
probablykasper Sep 23, 2024
484359b
Re-add context menu
probablykasper Sep 23, 2024
e6ead9d
Disable broken move_tracks
probablykasper Sep 23, 2024
b0edd28
Re-add most track actions
probablykasper Sep 24, 2024
ca236d9
Implement `ItemId`s for library.tracks
probablykasper Sep 24, 2024
3f573e8
Prevent serialization without generating item IDs
probablykasper Sep 24, 2024
682d59f
Keep selection on page update
probablykasper Sep 24, 2024
649da60
Re-enable track context menu
probablykasper Sep 24, 2024
6a11023
Re-enable "Add to Playlist"
probablykasper Sep 24, 2024
fa6b648
Fix selection clearing when clicking empty area
probablykasper Sep 24, 2024
af3a104
Fix sorting
probablykasper Sep 24, 2024
1a745ad
Fix tracklist refreshing
probablykasper Sep 24, 2024
6bd0897
Re-add importing
probablykasper Sep 24, 2024
7414ed2
Fix incomplete track deletion
probablykasper Sep 25, 2024
65aa2d2
Re-add track deletion
probablykasper Sep 25, 2024
74a5513
Fix artwork refreshing
probablykasper Sep 25, 2024
fae9c09
Re-add track info saving
probablykasper Sep 25, 2024
b4e9955
Fix artwork refreshing when adding artwork
probablykasper Sep 25, 2024
b348515
Re-add playing
probablykasper Sep 25, 2024
cff71a4
Re-add "remove from playlist"
probablykasper Sep 25, 2024
773d4ab
Re-add drag-and-drop
probablykasper Sep 25, 2024
a7de040
Fix move_tracks target index
probablykasper Sep 25, 2024
d521013
Re-add play/skip increments
probablykasper Sep 25, 2024
2eff246
Fix error reading default sort options
probablykasper Sep 25, 2024
b439a02
Re-add tracklist deletion
probablykasper Sep 25, 2024
e62dbcb
Re-add playlist editing
probablykasper Sep 25, 2024
f0255b6
Reorganise out of page.rs
probablykasper Sep 25, 2024
df20bb2
Fix `get_track_page()` running twice on load
probablykasper Sep 25, 2024
4d30b99
Remove unused code
probablykasper Sep 25, 2024
0a4c450
Remove `methods` object
probablykasper Sep 25, 2024
1647cfd
Re-add iTunes import finishing
probablykasper Sep 25, 2024
1261b21
Fix selection of invalid indexes
probablykasper Sep 25, 2024
5757256
Update `scroll_to` signature
probablykasper Sep 25, 2024
e350e3a
Replace old selection
probablykasper Sep 25, 2024
37d20cd
Fix queue drag-and-drop issue
probablykasper Sep 25, 2024
ec870ec
Fix tracklist refreshing
probablykasper Sep 25, 2024
ea82757
Fix tracklist sub-order being random
probablykasper Sep 25, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
- Add queue panel slide-out transition
- Add `Ctrl+Tab` and `Ctrl+Shift+Tab` to select next/previous playlist
- Add `Back` and `Forward` shortcuts
- Selection no longer gets cleared when the page updates
- Make time & volume sliders look ok
- Small design updates to tracklist header & filter textbox
- Respect user's locale time
Expand Down
52 changes: 23 additions & 29 deletions ferrum-addon/addon.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,12 @@ export interface PathsJs {
}
export declare function get_paths(): PathsJs
export declare function save(): void
export declare function filter_open_playlist(query: string): void
export interface ImportStatus {
errors: Array<string>
tracksCount: number
playlistsCount: number
}
export declare function copyFile(from: string, to: string): void
export declare function atomicFileSave(filePath: string, content: string): void
export declare function get_default_sort_desc(field: string): boolean
export interface Track {
size: number
duration: number
Expand Down Expand Up @@ -82,7 +80,7 @@ export interface Playlist {
originalId?: string
dateImported?: MsSinceUnixEpoch
dateCreated?: MsSinceUnixEpoch
tracks: Array<TrackID>
tracks: Array<ItemId>
}
export interface Folder {
id: TrackListID
Expand All @@ -107,31 +105,21 @@ export interface Special {
export const enum SpecialTrackListName {
Root = 0
}
export declare function open_playlist(openPlaylistId: string, viewAs?: ViewAs | undefined | null): void
export declare function get_page_track(index: number): Track
export declare function get_page_track_id(index: number): string
export declare function refresh_page(): void
export declare function get_page_track_ids(): Array<TrackID>
export const enum ViewAs {
Songs = 0,
Artists = 1
}
export interface PageInfo {
id: string
viewAs: ViewAs
tracklist: TrackList
export interface TracksPageOptions {
playlistId: string
sortKey: string
sortDesc: boolean
length: number
filterQuery: string
groupAlbumTracks: boolean
}
export declare function get_page_info(): PageInfo
export declare function set_group_album_tracks(value: boolean): void
export declare function sort(sortKey: string, keepFilter: boolean): void
export interface SelectionInfo {
from: number
to: number
export interface TracksPage {
playlistKind: string
playlistName: string
playlistDescription?: string
playlistLength: number
itemIds: Array<ItemId>
}
export declare function move_tracks(indexesToMove: Array<number>, toIndex: number): SelectionInfo
export declare function get_tracks_page(options: TracksPageOptions): TracksPage
export interface TrackListDetails {
id: string
name: string
Expand All @@ -144,12 +132,13 @@ export declare function get_track_list(id: string): TrackList
/** Returns the deleted track lists, including folder children */
export declare function delete_track_list(id: string): void
export declare function add_tracks_to_playlist(playlistId: string, trackIds: Array<string>): void
export declare function playlist_filter_duplicates(playlistId: string, ids: Array<string>): Array<TrackID>
export declare function remove_from_open_playlist(indexesToRemove: Array<number>): void
export declare function delete_tracks_in_open(indexesToDelete: Array<number>): void
export declare function playlist_filter_duplicates(playlistId: TrackID, ids: Array<string>): Array<TrackID>
export declare function remove_from_playlist(playlistId: TrackID, itemIds: Array<ItemId>): void
export declare function delete_tracks_with_item_ids(itemIds: Array<ItemId>): void
export declare function new_playlist(name: string, description: string, isFolder: boolean, parentId: string): void
export declare function update_playlist(id: string, name: string, description: string): void
export declare function move_playlist(id: string, fromId: string, toId: string, toIndex: number): void
export declare function move_tracks(playlistId: string, itemIds: Array<ItemId>, toIndex: number): void
/** Returns `None` if the file does not have an image */
export declare function read_small_cover_async(path: string, index: number, cacheDbPath: string): Promise<Buffer | null>
export interface TrackMd {
Expand All @@ -169,12 +158,17 @@ export interface TrackMd {
comments: string
}
export declare function get_track(id: string): Track
export interface KeyedTrack {
id: TrackID
track: Track
}
export declare function get_track_by_item_id(itemId: ItemId): KeyedTrack
export declare function get_track_ids(itemIds: Array<ItemId>): Array<TrackID>
export declare function track_exists(id: string): boolean
export declare function add_play(trackId: string): void
export declare function add_skip(trackId: string): void
export declare function add_play_time(id: TrackID, start: MsSinceUnixEpoch, durMs: number): void
export declare function read_cover_async(trackId: string, index: number): Promise<ArrayBuffer>
export declare function read_cover_async_path(path: string, index: number): Promise<ArrayBuffer>
export declare function import_file(path: string, now: MsSinceUnixEpoch): void
export declare function load_tags(trackId: string): void
export interface JsImage {
Expand Down
1 change: 1 addition & 0 deletions ferrum-addon/main.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
export * from './addon.d'

declare module 'ferrum-addon/addon' {
export type ItemId = number
export type TrackID = string
export type TrackListID = string
export type PercentInteger = number
Expand Down
116 changes: 0 additions & 116 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@
"@sveltejs/vite-plugin-svelte": "^3.1.2",
"@tailwindcss/vite": "4.0.0-alpha.23",
"@tsconfig/svelte": "^5.0.4",
"concurrently": "^8.2.2",
"electron": "^28.3.3",
"electron-builder": "^25.0.5",
"eslint": "^9.10.0",
Expand Down
2 changes: 1 addition & 1 deletion src-native/artists.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use std::time::Instant;
pub fn load_artists(library: &Library) -> HashSet<String> {
let now = Instant::now();
let mut artists = HashSet::new();
for (_, track) in &library.tracks {
for (_, track) in library.get_tracks() {
if !artists.contains(&track.artist) {
artists.insert(track.artist.clone());
}
Expand Down
Loading
Loading