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

Last updated