fix: recently added items sort order in the homepage

.ie. stop relying on folder last mod date, and use the latest file from the folder

+ bump watchdog to v4
+ add WIP docs (stashed in .github/code.docs for now)
This commit is contained in:
mungai-njoroge
2024-02-16 21:30:42 +03:00
parent ec5889515b
commit 4f48c33009
20 changed files with 331 additions and 60 deletions
+17 -1
View File
@@ -165,12 +165,28 @@ def check_folder_type(group_: group_type) -> str:
def group_track_by_folders(tracks: Track):
"""
Groups tracks by folder and returns a list of groups sorted by last modified date.
Uses generator expressions to avoid creating intermediate lists.
"""
# INFO: sort tracks by folder name, then group by folder name
tracks = sorted(tracks, key=lambda t: t.folder)
groups = groupby(tracks, lambda t: t.folder)
# INFO: sort tracks by last modified date in descending order to get the most recent last modified date
groups = (
{"folder": folder, "tracks": list(tracks), "time": os.path.getctime(folder)}
(folder, sorted(tracks, key=lambda t: t.last_mod, reverse=True))
for folder, tracks in groups
)
# INFO: Return a generator of the groups
groups = (
{"folder": folder, "tracks": list(tracks), "time": tracks[0].last_mod}
for folder, tracks in groups
)
# sort groups by last modified date
return sorted(groups, key=lambda group: group["time"], reverse=True)