Skip to content

Migrate delegate callbacks to an observer pattern

Choose a tag to compare

@fethica fethica released this 15 Sep 01:10
· 26 commits to main since this release
0a0e0e4

Highlights

  • API: Switched from delegate callbacks to an observer pattern (one-to-many). Implement FRadioPlayerObserver and call addObserver/removeObserver.
  • Streams: Added support for non-live (file) streams with duration/currentTime updates, seeking, and more robust state handling.
  • Packaging: SPM-only. Removed CocoaPods/Carthage files and Travis CI.
  • Swift version: Bumped to Swift tools 5.5 (Xcode 13+).
  • Demo app: Revamped SwiftUI-only demo (iOS 15+):
    • Reorganized into Views/Models/Resources; cleaner UI; uses AsyncImage for artwork.
    • Generated with XcodeGen (no .xcodeproj in repo).
  • CI: Added GitHub Actions
    • spm.yml builds and tests the library.
    • demo.yml generates (XcodeGen) and builds the demo.

Migration notes (delegate → observers)

  • Before (delegate, one-to-one):
    player.delegate = self
  • Now (observers, one-to-many):
    player.addObserver(self) // conform to FRadioPlayerObserver
    // optionally: player.removeObserver(self)

Observer callbacks to implement

  • radioPlayer(_:playerStateDidChange:)
  • radioPlayer(_:playbackStateDidChange:)
  • radioPlayer(_:itemDidChange:)
  • radioPlayer(_:metadataDidChange:)
  • radioPlayer(_:artworkDidChange:)
  • radioPlayer(_:durationDidChange:)
  • radioPlayer(_:playTimeDidChange:duration:)