DSSwiftUI is a purely SwiftUI version of my Discogs Shuffler app. This app allows users to store their Discogs vinyl collections on their device, pick a random album from their collection, filter potential albums to "shuffle", and Scrobble their listens by connecting a Last.fm account.
Clone the repository onto your machine
You'll need to create both a Discogs and Last.fm application of your own to test the app:
- Discogs
- Create a Disogs account at discogs.com
- Register a discogs application in your developer settings
- last.fm
- Create a Last.fm account at last.fm/join
- Create an api account at last.fm/api/account/create
Then, you'll need to add a file to hold your credentials within the application
- Create a file
Secret.swift
within the API directory - Add the following structures to
Secret.swift
:
struct DCAuthInfo {
static let client = "**REDACTED**"
static let key = "**REDACTED**"
static let secret = "**REDACTED**"
static let callback = "**REDACTED**"
}
struct LFAuthInfo {
static let apiKey = "**REDACTED**"
static let apiSecret = "**REDACTED**"
}
- Setup Discogs login via OAuth
- Retrieve and display user collection in list
- Implement SwiftUI solution for pre-iOS 15 async images
- Retrieve and display release track listing from additional detail API
- Rough initial CoreData implementation
- Implement Searching and Filtering of releases
- Fix bug where CoreData creates multiple Collections instead of updating the existing one
- Store Release tracks in CoreData
- Save user credentials in Keychain instead of user defaults
- Bug: Collection list scrolls to top after closing detail view
- Add welcome screen
- Smooth out user flow from login to release loading.
- Add Scrobble button to release detail view
- Use Matched Geometry Effect to present ReleaseDetailView in style
- Explore @FetchRequest property wrapper for CoreData