//
//  UserDefaultManager.swift


import Foundation

class UserDefaultManager {
    
    static let shared = UserDefaultManager()
    let userDefault = UserDefaults.standard
    
    
    var loginUserToken: String {
        set {
            UserDefaults.appgroup!.set(newValue, forKey: #function)
            UserDefaults.appgroup!.synchronize()
        }
        get {
            return UserDefaults.appgroup!.value(forKey: #function) as? String ?? ""
        }
    }
    
    var loginUserData: Data {
        set {
            userDefault.set(newValue, forKey: #function)
            userDefault.synchronize()
        }
        get {
            return userDefault.value(forKey: #function) as? Data ?? Data()
        }
    }
    
    var deviceToken: String {
        set {
            userDefault.set(newValue, forKey: #function)
            userDefault.synchronize()
        }
        get {
            return userDefault.value(forKey: #function) as? String ?? ""
        }
    }
    
    var friendList : [String]{
        set {
            UserDefaults.appgroup!.set(newValue, forKey: #function)
            UserDefaults.appgroup!.synchronize()
        }
        get{
            return UserDefaults.appgroup!.value(forKey: #function) as? [String] ?? [""]
        }
    }
    
    var isHideCustomReview: Bool {
        set {
            userDefault.set(newValue, forKey: #function)
            userDefault.synchronize()
        }
        get {
            return userDefault.bool(forKey: #function)
        }
    }
    
    //Rating and Review Count
    var captureCount: Int {
        set {
            userDefault.set(newValue, forKey: #function)
            userDefault.synchronize()
        }
        get {
            return userDefault.integer(forKey: #function)
        }
    }
    
    var photoPickerCount: Int {
        set {
            userDefault.set(newValue, forKey: #function)
            userDefault.synchronize()
        }
        get {
            return userDefault.integer(forKey: #function)
        }
    }
    
    var backToHomeFromSettingCount: Int {
        set {
            userDefault.set(newValue, forKey: #function)
            userDefault.synchronize()
        }
        get {
            return userDefault.integer(forKey: #function)
        }
    }
    
    //Count for Phone no entry in log in
    var countForLoginAttempt: Int {
        set {
            userDefault.set(newValue, forKey: #function)
            userDefault.synchronize()
        }
        get {
            return userDefault.integer(forKey: #function)
        }
    }
    //Interstitial ads show by count
    var interstitialAdsCount: Int {
        set {
            userDefault.set(newValue, forKey: #function)
            userDefault.synchronize()
        }
        get {
            return userDefault.integer(forKey: #function)
        }
    }
    
    //Open Ads show by count
    var openAdsCount: Int {
        set {
            userDefault.set(newValue, forKey: #function)
            userDefault.synchronize()
        }
        get {
            return userDefault.integer(forKey: #function)
        }
    }
    
        //On launch open ads show by count
    var openAdsOnLaunchCount: Int {
        set {
            userDefault.set(newValue, forKey: #function)
            userDefault.synchronize()
        }
        get {
            return userDefault.integer(forKey: #function)
        }
    }
    
    //Date for login attempt
    var dateOfLoginAttempt: Date {
        set {
            userDefault.set(newValue, forKey: #function)
            userDefault.synchronize()
        }
        get {
            return userDefault.object(forKey: #function) as? Date ?? Date()
        }
    }
    var isShowFriendListBadge: Bool {
        set {
            userDefault.set(newValue, forKey: #function)
            userDefault.synchronize()
        }
        get {
            return userDefault.bool(forKey: #function)
        }
    }
    
}

extension FileManager {
          
    static let appGroupContainerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: APP_GROUP_IDENTIFIER)
}
