damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

VideoController.swift (935B)


      1 //
      2 //  VideoController.swift
      3 //  damus
      4 //
      5 //  Created by Bryan Montz on 9/3/23.
      6 //
      7 
      8 import Combine
      9 import Foundation
     10 
     11 struct VideoMetadata {
     12     let has_audio: Bool
     13     let size: CGSize
     14 }
     15 
     16 final class VideoController: ObservableObject {
     17     private var mute_states: [URL: Bool] = [:]
     18     private var metadatas: [URL: VideoMetadata] = [:]
     19     
     20     @Published var focused_model_id: UUID?
     21     
     22     func toggle_should_mute_video(url: URL) {
     23         let state = mute_states[url] ?? true
     24         mute_states[url] = !state
     25         
     26         objectWillChange.send()
     27     }
     28     
     29     func should_mute_video(url: URL) -> Bool {
     30         mute_states[url] ?? true
     31     }
     32     
     33     func set_metadata(_ metadata: VideoMetadata, url: URL) {
     34         metadatas[url] = metadata
     35     }
     36     
     37     func metadata(for url: URL) -> VideoMetadata? {
     38         metadatas[url]
     39     }
     40     
     41     func size_for_url(_ url: URL) -> CGSize? {
     42         metadatas[url]?.size
     43     }
     44 }