BlueHuskyStudios / BlueHuskyStudios/DeadassSimpleMediaPlayer

`PlayerSession` is a god-object — three unrelated domains in one class

Open
#62 1 comment 0 reactions 0 assignees Claimed by @KyNorthstar View on GitHub
Automatically found
Dominant language
Swift
Stars
0
Forks
3
Avg merge
2d 22h
Merged PRs (30d)
9

Description

778 lines owning: now-playing/queue state, playback history, the saved-playlist library, a UI-facing loading message, and the persistence plumbing for all three. Each addition made sense in isolation — the loading-message infrastructure was explicitly built to be shared, and the history/library code arrived with #4's and #16's work — but the result carries three separate reasons to change: how playback state persists, how history retention works, how playlists import and export.

An MVVM-strict split would be three `@Observable` stores (`NowPlayingStore`, `HistoryStore`, `PlaylistLibraryStore`), each with its own `JSONDocumentStore`, composed by a thin facade or no facade at all. Whether it's worth doing now depends on whether History and the Library keep growing independently — the seams are already visible as the file's own MARK-comment sections, so splitting later means untangling call sites that currently just read `session.something`.

Contributor guide

Open the contributing guide

Research direction

Review the open pull request #79 first, then inspect PlayerSession's MARK-comment sections and the call sites that read session.something. The issue describes possible store boundaries, but completion depends on deciding whether to split the stores now and how they should be composed.

Written by the indexing model from the issue text.

Assessment

Tech stack
swift
Domain
mobile-dev
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.