//
//  NotificationExtensionState.swift
//  DamusNotificationService
//
//  Created by Daniel D’Aquino on 2023-11-27.
//

import Foundation

struct NotificationExtensionState: HeadlessDamusState {
    let ndb: Ndb
    let settings: UserSettingsStore
    let contacts: Contacts
    let muted_threads: MutedThreadsManager
    let keypair: Keypair
    let profiles: Profiles
    let zaps: Zaps
    let lnurls: LNUrls
    
    init?() {
        guard let ndb = try? Ndb(owns_db_file: false) else { return nil }
        self.ndb = ndb
        
        guard let keypair = get_saved_keypair() else { return nil }
        
        // dumb stuff needed for property wrappers
        UserSettingsStore.pubkey = keypair.pubkey
        self.settings = UserSettingsStore()
        
        self.contacts = Contacts(our_pubkey: keypair.pubkey)
        self.muted_threads = MutedThreadsManager(keypair: keypair)
        self.keypair = keypair
        self.profiles = Profiles(ndb: ndb)
        self.zaps = Zaps(our_pubkey: keypair.pubkey)
        self.lnurls = LNUrls()
    }
    
    @discardableResult
    func add_zap(zap: Zapping) -> Bool {
        // store generic zap mapping
        self.zaps.add_zap(zap: zap)
        
        return true
    }
}
