0.04 Dev Journal

Summary

Overall a lot of cleanup and got to a functional state of playing episodes. Most basic end to end subscribe->get->play
  • Picker for the notes application side of things
    • This allows picking between the dev and public stream environments
      • Needed this because I left myself in the dev env at the start of last week
      • Case switch statement for this. Toggles the API path
  • New structure for the podcast app
    • Outer:
      • Overall application state
      • SceneDelegate
      • AppDelegate
      • PodcastState
    • Extensions:
      • Have these extensions to encode URLs properly.
      • Remove HTML from the JSON response that I get from the API.
      • And then networking helpers is kind of this thing where, at least it lets me, download this image kind of cleanly and I can just call this.
        • I don't know if this is the right way to do things. I don't think so
    • Persistent Layer (Core Data):
      • Local storage & persistent state management
      • Needs a lightweight data management layer on top
      • PersistentPodcast
        • Can convert from Podcast or to it for UI
      • PersistentEpisode
        • Can convert from Episode or to it for UI
    • Models
      • Decode JSON Response and use it in UI
      • Now everything is conforming to Codable to use JSONDecoder()
        • This is quite nice
      • These are Episode and Podcast
    • Internal
      • Raw JSON that I got from the response so I don't have to hit the API as much.
      • Something that I definitely need to integrate but I haven't haven't done yet.
    • Views
      • Podcast
        • PodcastSearchView
          • Does the heavy lifting
          • Decodes JSON and fetches images async
            • May need to use a DataTaskPublisher in the future
        • PodcastSubscriptionView
          • Display current subs -> get to episodes
        • PodcastListItemView
          • Perhaps once list item created fetch image? Probably not
          • On subscribe write to the DB with UIImage Data
      • Episode
        • PodcastEpisodesView
          • Get episodes for a certain podcast
          • Can fetch from API
          • First gets local DB data
          • Refresh button in navbar to get latest podcasts
          • Worried about performance from all the DB queries
        • EpisodeListItemView
          • Play and pause buttons for a podcast and starts playing
        • PodcastInboxView
      • Other
        • ContentView
          • Minor modification to add NowPlaying
        • NowPlaying
          • Capture podcast that is playing and control it anywhere
  • Bugs:
    • Multiple running ticks when playing/pausing podcasts
    • Create multiple AVSessions, should reuse.
    • No caching
    • CoreData subscribe is all messed up, bad state management, just refactor this
    • Relationships not fully managed yet
      • not loading images for episodes
    • sortDescriptors
  • Next:
    • Begin integration into the main notes app.
      • Either I will integrate it there or do some interprocess communication
      • Then all of that will go out to server, maybe it will record completely independently of each other to the server.
        • I don't know
        • I think they should be sharing some kind of context I don't always want it to go out to the server.
      • I don't know if this will be one app or separate apps I haven't decided yet. So these are all things to experiment with, I probably will do both because I can mostly just copy and paste.
    • I might be using closure for the back end
    • I, ideally would like run once and I can always push updates to it.
      • I also would like it to be able to people to add their own API's in kind of a thing however you want to add handlers in. That would be great.
    • This week was fixing all the mistakes I made last week, and making the code way easier to navigate and update, because it was a real pain to work with before it's still kind of a pain, but for me I can understand it in its current state. And I removed a lot of dependencies where I have to update, everything everywhere that still exists, and that's what I'm going to try to abstract away in the future.

Demo

Video Journal

Copy link