Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // RemoteConfigManager.swift
- // Viddl
- //
- // Created by Alex Azarov on 8/15/18.
- // Copyright © 2018 Mikhail Lyapich. All rights reserved.
- //
- import FirebaseRemoteConfig
- class RemoteConfigManager {
- enum Keys: String {
- case freeScenesLimit = "free_scenes_limit"
- case freeVideosLimit = "free_videos_limit"
- case serverNgrokUrl = "server_ngrok_url"
- case onboardingVideoCardAlways = "onboarding_video_card_always"
- case sharingDefaultHashtags = "sharing_default_hashtags"
- case ngrokUsername = "server_ngrok_username"
- case ngrokPassword = "server_ngrok_password"
- }
- enum IntKeys: String {
- case serverTimeout = "server_timeout"
- }
- private static let serverURL = "http://074752d9.ngrok.io"
- static let shared = RemoteConfigManager()
- let appDefaults: [String: Any?] = [
- Keys.freeScenesLimit.rawValue: "3",
- Keys.freeVideosLimit.rawValue: "1",
- Keys.serverNgrokUrl.rawValue: RemoteConfigManager.serverURL,
- Keys.onboardingVideoCardAlways.rawValue: "1",
- Keys.sharingDefaultHashtags.rawValue: "#viddl"
- ]
- var freeScenesLimit: Int {
- return RemoteConfig.remoteConfig().configValue(forKey: Keys.freeScenesLimit.rawValue).numberValue as? Int ?? 3
- }
- var freeVideosLimit: Int {
- return RemoteConfig.remoteConfig().configValue(forKey: Keys.freeVideosLimit.rawValue).numberValue as? Int ?? 1
- }
- var serverURL: String {
- return RemoteConfig.remoteConfig().configValue(forKey: Keys.serverNgrokUrl.rawValue).stringValue ?? RemoteConfigManager.serverURL
- }
- var needToShowTutorialEveryTime: Bool {
- return RemoteConfig.remoteConfig().configValue(forKey: Keys.onboardingVideoCardAlways.rawValue).boolValue
- }
- var sharingDefaultHashtags: String {
- return RemoteConfig.remoteConfig().configValue(forKey: Keys.sharingDefaultHashtags.rawValue).stringValue ?? (appDefaults[Keys.sharingDefaultHashtags.rawValue] as? String)!
- }
- var ngrokUsername: String {
- return RemoteConfig.remoteConfig().configValue(forKey: Keys.ngrokUsername.rawValue).stringValue ?? ""
- }
- var ngrokPassword: String {
- return RemoteConfig.remoteConfig().configValue(forKey: Keys.ngrokPassword.rawValue).stringValue ?? ""
- }
- private init() {
- loadDefaultValues()
- fetchCloudValues()
- }
- private func loadDefaultValues() {
- RemoteConfig.remoteConfig().setDefaults(appDefaults as? [String: NSObject])
- }
- private func fetchCloudValues() {
- let fetchDuration: TimeInterval = 0
- activateDebugMode()
- RemoteConfig.remoteConfig().fetch(withExpirationDuration: fetchDuration) { (status, error) in
- if let error = error {
- print("Got an error fetching remote values \(error)")
- return
- }
- RemoteConfig.remoteConfig().activateFetched()
- }
- }
- private func activateDebugMode() {
- RemoteConfig.remoteConfig().configSettings = RemoteConfigSettings(developerModeEnabled: true)
- }
- private func getRemoteIntDefaults(key: IntKeys) -> Int {
- switch key {
- case .serverTimeout:
- return 180
- }
- }
- func getInt(key: IntKeys) -> Int {
- let remoteNumber = RemoteConfig.remoteConfig().configValue(forKey: key.rawValue).numberValue
- return remoteNumber?.intValue ?? getRemoteIntDefaults(key: key)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement