diff --git a/Prey.xcodeproj/project.pbxproj b/Prey.xcodeproj/project.pbxproj index 07a0ff45..3d123362 100644 --- a/Prey.xcodeproj/project.pbxproj +++ b/Prey.xcodeproj/project.pbxproj @@ -869,6 +869,7 @@ "${PODS_ROOT}/Target Support Files/Pods-Prey/Pods-Prey-frameworks.sh", "${BUILT_PRODUCTS_DIR}/FirebaseCore/FirebaseCore.framework", "${BUILT_PRODUCTS_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseCoreInternal/FirebaseCoreInternal.framework", "${BUILT_PRODUCTS_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework", "${BUILT_PRODUCTS_DIR}/FirebaseInstallations/FirebaseInstallations.framework", "${BUILT_PRODUCTS_DIR}/GoogleDataTransport/GoogleDataTransport.framework", @@ -880,6 +881,7 @@ outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCore.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreDiagnostics.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreInternal.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCrashlytics.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseInstallations.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleDataTransport.framework", @@ -1230,17 +1232,16 @@ isa = XCBuildConfiguration; baseConfigurationReference = 36A0DBAF6F614BF750A6DE3F /* Pods-Prey.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CODE_SIGN_ENTITLEMENTS = Prey/Plist/Prey.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 4; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = M2J57RQ35B; - "EXCLUDED_ARCHS[sdk=*]" = arm64; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "$(SRCROOT)/Prey/Plist/Info.plist"; INFOPLIST_KEY_CFBundleDisplayName = Prey; @@ -1248,8 +1249,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = "$(inherited)"; - MARKETING_VERSION = 2.1.11; - OTHER_SWIFT_FLAGS = "-D DEBUG"; + MARKETING_VERSION = 2.1.12; + OTHER_SWIFT_FLAGS = "$(inherited)"; PRODUCT_BUNDLE_IDENTIFIER = com.prey; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1266,14 +1267,14 @@ isa = XCBuildConfiguration; baseConfigurationReference = 635174AA098F25D2F1D8BC05 /* Pods-Prey.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CODE_SIGN_ENTITLEMENTS = Prey/Plist/Prey.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 4; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = M2J57RQ35B; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "x86_64 i386"; @@ -1284,7 +1285,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = "$(inherited)"; - MARKETING_VERSION = 2.1.11; + MARKETING_VERSION = 2.1.12; + OTHER_SWIFT_FLAGS = "$(inherited)"; PRODUCT_BUNDLE_IDENTIFIER = com.prey; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/Prey/Classes/AppDelegate.swift b/Prey/Classes/AppDelegate.swift index 3b87d6a1..1d00b379 100644 --- a/Prey/Classes/AppDelegate.swift +++ b/Prey/Classes/AppDelegate.swift @@ -93,6 +93,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate { PreyNotification.sharedInstance.registerForRemoteNotifications() TriggerManager.sharedInstance.checkTriggers() RequestCacheManager.sharedInstance.sendRequest() + DispatchQueue.main.async { + sleep(2) + PreyDevice.infoDevice({(isSuccess: Bool) in + PreyLogger("infoDevice isSuccess:\(isSuccess)") + }) + } } else { PreyDeployment.sharedInstance.runPreyDeployment() } diff --git a/Prey/Classes/Constants.swift b/Prey/Classes/Constants.swift index b853f54f..4f57ad0b 100644 --- a/Prey/Classes/Constants.swift +++ b/Prey/Classes/Constants.swift @@ -12,7 +12,7 @@ import LocalAuthentication // Storyboard controllerId enum StoryboardIdVC: String { - case PreyStoryBoard, alert, navigation, home, currentLocation, purchases, settings, grettings, homeWeb + case PreyStoryBoard, alert, navigation, home, currentLocation, purchases, settings, grettings, homeWeb, rename } // Def type device @@ -150,4 +150,8 @@ enum ReactViews: String { case REPORTEXAMP = "iosreportexample" case GOTOSETTING = "iossettingspwd" case GOTOPANEL = "iospanelpwd" + case GOTORENAME = "iosrenamepwd" + case RENAME = "iosrename" + case NAMEDEVICE = "iosnamedevice" + case INDEX = "iosindex" } diff --git a/Prey/Classes/HomeWebVC.swift b/Prey/Classes/HomeWebVC.swift index c6f17eaf..fc1c68c1 100644 --- a/Prey/Classes/HomeWebVC.swift +++ b/Prey/Classes/HomeWebVC.swift @@ -93,7 +93,7 @@ class HomeWebVC: UIViewController, WKUIDelegate, WKNavigationDelegate { } // Check TouchID/FaceID - func checkTouchID(_ openPanelWeb: Bool) { + func checkTouchID(_ openPanelWeb: String?) { guard PreyConfig.sharedInstance.isTouchIDEnabled == true, PreyConfig.sharedInstance.tokenPanel != nil else { return @@ -112,7 +112,6 @@ class HomeWebVC: UIViewController, WKUIDelegate, WKNavigationDelegate { PreyLogger("error with biometric policy") return } - self.showPanel = openPanelWeb myContext.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: myLocalizedReasonString) { success, evaluateError in DispatchQueue.main.async { @@ -123,10 +122,14 @@ class HomeWebVC: UIViewController, WKUIDelegate, WKNavigationDelegate { } // Show webView - if openPanelWeb { + if openPanelWeb == "panel" { self.goToControlPanel() } else { - self.goToLocalSettings() + if openPanelWeb == "setting" { + self.goToLocalSettings() + } else { + self.goToRename() + } } // Hide credentials webView @@ -158,7 +161,7 @@ class HomeWebVC: UIViewController, WKUIDelegate, WKNavigationDelegate { } // Check password - func checkPassword(_ pwd: String?, view: UIView, openPanelWeb: Bool) { + func checkPassword(_ pwd: String?, view: UIView, back: String) { // Check password length guard let pwdInput = pwd else { @@ -203,10 +206,14 @@ class HomeWebVC: UIViewController, WKUIDelegate, WKNavigationDelegate { self.sendEventGAnalytics() // Show webView - if openPanelWeb { + if back == "panel" { self.goToControlPanel() } else { - self.goToLocalSettings() + if back == "setting" { + self.goToLocalSettings() + } else { + self.goToRename() + } } // Hide credentials webView @@ -291,6 +298,17 @@ class HomeWebVC: UIViewController, WKUIDelegate, WKNavigationDelegate { }) }) } + + func renameDevice(_ newName: String?){ + PreyDevice.renameDevice(newName! ,onCompletion: {(isSuccess: Bool) in + if(isSuccess){ + PreyConfig.sharedInstance.nameDevice = newName + PreyConfig.sharedInstance.saveValues() + } + self.loadViewOnWebView("index") + self.webView.reload() + }) + } // Check signUp fields func checkSignUpFields(_ name: String?, email: String?, password1: String?, password2: String?, term: Bool, age: Bool) { @@ -354,7 +372,7 @@ class HomeWebVC: UIViewController, WKUIDelegate, WKNavigationDelegate { } // Add device action - func addDeviceWithSignUp(_ name: String?, email: String?, password1: String?, password2: String?, term: Bool, age: Bool) { + func addDeviceWithSignUp(_ name: String?, email: String?, password1: String?, password2: String?, term: Bool, age: Bool, offers: Bool?) { guard let nm = name else { displayErrorAlert("Name can't be blank".localized, @@ -374,7 +392,7 @@ class HomeWebVC: UIViewController, WKUIDelegate, WKNavigationDelegate { actInd.startAnimating() // SignUp to Panel Prey - PreyUser.signUpToPrey(nm, userEmail:email!, userPassword:pwd1, onCompletion: {(isSuccess: Bool) in + PreyUser.signUpToPrey(nm, userEmail:email!, userPassword:pwd1, offers:offers!, onCompletion: {(isSuccess: Bool) in // LogIn isn't Success guard isSuccess else { @@ -474,6 +492,11 @@ class HomeWebVC: UIViewController, WKUIDelegate, WKNavigationDelegate { (rootVC as! UINavigationController).pushViewController(resultController, animated: true) } + func goToRename(){ + self.loadViewOnWebView("rename") + self.webView.reload() + } + // MARK: WKUIDelegate func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { @@ -581,8 +604,8 @@ class HomeWebVC: UIViewController, WKUIDelegate, WKNavigationDelegate { case ReactViews.CHECKID.rawValue: let queryItems = URLComponents(string: reqUrl.absoluteString)?.queryItems - guard let openPanel = queryItems?.filter({$0.name == "openPanelWeb"}).first else {return} - self.checkTouchID(openPanel.value!.boolValue()) + let openPanelWeb = queryItems?.filter({$0.name == "openPanelWeb"}).first + self.checkTouchID(openPanelWeb?.value) case ReactViews.QRCODE.rawValue: self.addDeviceWithQRCode() @@ -593,6 +616,11 @@ class HomeWebVC: UIViewController, WKUIDelegate, WKNavigationDelegate { let pwd = queryItems?.filter({$0.name == "preyPassLogin"}).first self.addDeviceWithLogin(email?.value, password: pwd?.value) + case ReactViews.RENAME.rawValue: + let queryItems = URLComponents(string: reqUrl.absoluteString)?.queryItems + let newName = queryItems?.filter({$0.name == "newName"}).first + self.renameDevice(newName?.value) + case ReactViews.CHECKSIGNUP.rawValue: let queryItems = URLComponents(string: reqUrl.absoluteString)?.queryItems let name = queryItems?.filter({$0.name == "nameSignup"}).first @@ -601,6 +629,7 @@ class HomeWebVC: UIViewController, WKUIDelegate, WKNavigationDelegate { let pwd2 = queryItems?.filter({$0.name == "pwd2Signup"}).first guard let term = queryItems?.filter({$0.name == "termsSignup"}).first else {return} guard let age = queryItems?.filter({$0.name == "ageSignup"}).first else {return} + let offers = queryItems?.filter({$0.name == "offers"}).first self.checkSignUpFields(name?.value, email: email?.value, password1: pwd1?.value, password2: pwd2?.value, term: term.value!.boolValue(), age: age.value!.boolValue()) case ReactViews.SIGNUP.rawValue: @@ -611,7 +640,8 @@ class HomeWebVC: UIViewController, WKUIDelegate, WKNavigationDelegate { let pwd2 = queryItems?.filter({$0.name == "pwd2Signup"}).first guard let term = queryItems?.filter({$0.name == "termsSignup"}).first else {return} guard let age = queryItems?.filter({$0.name == "ageSignup"}).first else {return} - self.addDeviceWithSignUp(name?.value, email: email?.value, password1: pwd1?.value, password2: pwd2?.value, term: term.value!.boolValue(), age: age.value!.boolValue()) + let offers = queryItems?.filter({$0.name == "offers"}).first + self.addDeviceWithSignUp(name?.value, email: email?.value, password1: pwd1?.value, password2: pwd2?.value, term: term.value!.boolValue(), age: age.value!.boolValue(), offers: offers?.value?.boolValue() ) case ReactViews.EMAILRESEND.rawValue: let queryItems = URLComponents(string: reqUrl.absoluteString)?.queryItems @@ -664,12 +694,29 @@ class HomeWebVC: UIViewController, WKUIDelegate, WKNavigationDelegate { case ReactViews.GOTOSETTING.rawValue: let queryItems = URLComponents(string: reqUrl.absoluteString)?.queryItems let pwd = queryItems?.filter({$0.name == "pwdLogin"}).first - self.checkPassword(pwd?.value, view: self.view, openPanelWeb: false) + self.checkPassword(pwd?.value, view: self.view, back: "setting") case ReactViews.GOTOPANEL.rawValue: let queryItems = URLComponents(string: reqUrl.absoluteString)?.queryItems let pwd = queryItems?.filter({$0.name == "pwdLogin"}).first - self.checkPassword(pwd?.value, view: self.view, openPanelWeb: true) + self.checkPassword(pwd?.value, view: self.view, back: "panel") + + case ReactViews.GOTORENAME.rawValue: + let queryItems = URLComponents(string: reqUrl.absoluteString)?.queryItems + let pwd = queryItems?.filter({$0.name == "pwdLogin"}).first + self.checkPassword(pwd?.value, view: self.view, back: "rename") + + case ReactViews.NAMEDEVICE.rawValue: + var nameDevice=PreyConfig.sharedInstance.nameDevice + if nameDevice == nil { + nameDevice="iPhone"; + } + self.evaluateJS(self.webView, code: "document.getElementById('nametext').value = '\(nameDevice!)';") + self.evaluateJS(self.webView, code: "var btn = document.getElementById('btnChangeName'); btn.click();") + + case ReactViews.INDEX.rawValue: + self.loadViewOnWebView("index") + self.webView.reload() default: PreyLogger("Ok") diff --git a/Prey/Classes/PreyConfig.swift b/Prey/Classes/PreyConfig.swift index 1f6d01e1..879f5399 100644 --- a/Prey/Classes/PreyConfig.swift +++ b/Prey/Classes/PreyConfig.swift @@ -41,6 +41,7 @@ enum PreyConfigDevice: String { case IsTouchIDEnabled case ValidationUserEmail case ExistBackup + case NameDevice } enum PreyUserEmailValidation: String { @@ -72,6 +73,7 @@ class PreyConfig: NSObject, UIActionSheetDelegate { reportOptions = defaultConfig.object(forKey: PreyConfigDevice.ReportOptions.rawValue) as? NSDictionary validationUserEmail = defaultConfig.string(forKey: PreyConfigDevice.ValidationUserEmail.rawValue) existBackup = defaultConfig.bool(forKey: PreyConfigDevice.ExistBackup.rawValue) + nameDevice = defaultConfig.string(forKey: PreyConfigDevice.NameDevice.rawValue) } // MARK: Properties @@ -93,6 +95,7 @@ class PreyConfig: NSObject, UIActionSheetDelegate { var reportOptions : NSDictionary? var validationUserEmail : String? var existBackup : Bool + var nameDevice : String? // MARK: Functions @@ -117,6 +120,7 @@ class PreyConfig: NSObject, UIActionSheetDelegate { defaultConfig.set(reportOptions, forKey:PreyConfigDevice.ReportOptions.rawValue) defaultConfig.set(validationUserEmail, forKey:PreyConfigDevice.ValidationUserEmail.rawValue) defaultConfig.set(existBackup, forKey: PreyConfigDevice.ExistBackup.rawValue) + defaultConfig.set(nameDevice, forKey: PreyConfigDevice.NameDevice.rawValue) } // Reset values on NSUserDefaults @@ -143,6 +147,7 @@ class PreyConfig: NSObject, UIActionSheetDelegate { needChangeIcon = false isTouchIDEnabled = true reportOptions = nil + nameDevice = nil validationUserEmail = PreyUserEmailValidation.inactive.rawValue tokenWebTimestamp = 0 diff --git a/Prey/Classes/PreyDevice.swift b/Prey/Classes/PreyDevice.swift index 1bec858d..31876270 100644 --- a/Prey/Classes/PreyDevice.swift +++ b/Prey/Classes/PreyDevice.swift @@ -77,5 +77,30 @@ class PreyDevice { displayErrorAlert(alertMsg, titleMessage:titleMsg) onCompletion(false) } - } + } + + class func renameDevice(_ newName: String, onCompletion:@escaping (_ isSuccess: Bool) -> Void) { + + let language:String = Locale.preferredLanguages[0] as String + let languageES = (language as NSString).substring(to: 2) + + let params:[String: Any] = [ + "name" : newName, + "lang" : languageES] + + if let username = PreyConfig.sharedInstance.userApiKey { + PreyHTTPClient.sharedInstance.userRegisterToPrey(username, password:"x", params:params, messageId:nil, httpMethod:Method.PUT.rawValue, endPoint:actionsDeviceEndpoint, onCompletion:PreyHTTPResponse.checkResponse(RequestType.signUp, preyAction:nil, onCompletion:onCompletion)) + }else{ + PreyLogger("Error renameDevice") + } + } + + class func infoDevice(_ onCompletion:@escaping (_ isSuccess: Bool) -> Void) { + + if let username = PreyConfig.sharedInstance.userApiKey { + PreyHTTPClient.sharedInstance.userRegisterToPrey(username, password:"x", params:nil, messageId:nil, httpMethod:Method.GET.rawValue, endPoint:infoEndpoint, onCompletion:PreyHTTPResponse.checkResponse(RequestType.infoDevice, preyAction:nil, onCompletion:onCompletion)) + }else{ + PreyLogger("Error infoDevice") + } + } } diff --git a/Prey/Classes/PreyHTTPResponse.swift b/Prey/Classes/PreyHTTPResponse.swift index 7f033c72..b3d29c7a 100644 --- a/Prey/Classes/PreyHTTPResponse.swift +++ b/Prey/Classes/PreyHTTPResponse.swift @@ -10,7 +10,7 @@ import Foundation // Prey Request Tpype enum RequestType { - case getToken, logIn, signUp, addDevice, deleteDevice, subscriptionReceipt, actionDevice, geofenceZones, dataSend, statusDevice, trigger, emailValidation, resendEmailValidation + case getToken, logIn, signUp, addDevice, deleteDevice, subscriptionReceipt, actionDevice, geofenceZones, dataSend, statusDevice, trigger, emailValidation, resendEmailValidation, infoDevice } class PreyHTTPResponse { @@ -84,7 +84,12 @@ class PreyHTTPResponse { case .statusDevice: checkStatusDevice(isResponseSuccess, withAction:action, withData:data, withError:error, statusCode:code) + case .infoDevice: + checkInfoDevice(isResponseSuccess, withAction:action, withData:data, withError:error, statusCode:code) } + + + onCompletion(isResponseSuccess) } @@ -266,6 +271,13 @@ class PreyHTTPResponse { PreyConfig.sharedInstance.saveValues() } + DispatchQueue.main.async { + sleep(2) + PreyDevice.infoDevice({(isSuccess: Bool) in + PreyLogger("infoDevice isSuccess:\(isSuccess)") + }) + } + } catch let error { PreyConfig.sharedInstance.reportError(error) PreyLogger("json error: \(error.localizedDescription)") @@ -579,5 +591,21 @@ class PreyHTTPResponse { PreyLogger("json error: \(error.localizedDescription)") } } + + class func checkInfoDevice(_ isSuccess:Bool, withAction action:PreyAction?, withData data:Data?, withError error:Error?, statusCode:Int?) { + do { + guard let dataResponse = data else { + return + } + let jsonObject = try JSONSerialization.jsonObject(with: dataResponse, options:JSONSerialization.ReadingOptions.mutableContainers) as! NSDictionary + + if let nameDevice = jsonObject.object(forKey: "name") as? String { + PreyConfig.sharedInstance.nameDevice = nameDevice + PreyConfig.sharedInstance.saveValues() + } + } catch let error { + PreyLogger("json error: \(error.localizedDescription)") + } + } } diff --git a/Prey/Classes/PreyProtocol.swift b/Prey/Classes/PreyProtocol.swift index db0a138f..ae76bfdf 100644 --- a/Prey/Classes/PreyProtocol.swift +++ b/Prey/Classes/PreyProtocol.swift @@ -144,6 +144,8 @@ public var actionsDeviceEndpoint : String {return String(format:"/devices/%@.jso // Endpoint for Delete Device public var deleteDeviceEndpoint : String {return String(format:"/devices/%@",(PreyConfig.sharedInstance.getDeviceKey()))} +public var infoEndpoint : String {return String(format:"/devices/%@/info.json",(PreyConfig.sharedInstance.getDeviceKey()))} + // Http method definitions public enum Method: String { case GET, POST, PUT, DELETE diff --git a/Prey/Classes/PreyUser.swift b/Prey/Classes/PreyUser.swift index 89533d79..5a4e674f 100644 --- a/Prey/Classes/PreyUser.swift +++ b/Prey/Classes/PreyUser.swift @@ -35,7 +35,7 @@ class PreyUser { } // SignUp to Panel Prey - class func signUpToPrey(_ userName: String, userEmail: String, userPassword: String, onCompletion:@escaping (_ isSuccess: Bool) -> Void) { + class func signUpToPrey(_ userName: String, userEmail: String, userPassword: String, offers: Bool, onCompletion:@escaping (_ isSuccess: Bool) -> Void) { let language:String = Locale.preferredLanguages[0] as String let languageES = (language as NSString).substring(to: 2) @@ -48,6 +48,7 @@ class PreyUser { "password_confirmation" : userPassword, "policy_rule_age" : true, "policy_rule_privacy_terms" : true, + "mkt_newsletter" : offers, "referer_user_id" : "", "lang" : languageES] diff --git a/Prey/Classes/SettingsVC.swift b/Prey/Classes/SettingsVC.swift index 84af8449..538f0815 100644 --- a/Prey/Classes/SettingsVC.swift +++ b/Prey/Classes/SettingsVC.swift @@ -71,26 +71,22 @@ class SettingsVC: UIViewController, UIWebViewDelegate, UITableViewDelegate, UITa override func viewDidLoad() { super.viewDidLoad() - if #available(iOS 13.0, *) { - viewSection = [ - PreferencesViewSection.information.rawValue : 0, - PreferencesViewSection.settings.rawValue : 1, - PreferencesViewSection.darkmode.rawValue : 2, - PreferencesViewSection.about.rawValue : 3, - PreferencesViewSection.numberSections.rawValue : 4] - } else { - viewSection = [ - PreferencesViewSection.information.rawValue : 0, - PreferencesViewSection.settings.rawValue : 1, - PreferencesViewSection.about.rawValue : 2, - PreferencesViewSection.numberSections.rawValue : 3] - } + //remove dark mode + viewSection = [ + PreferencesViewSection.information.rawValue : 0, + PreferencesViewSection.settings.rawValue : 1, + PreferencesViewSection.about.rawValue : 2, + PreferencesViewSection.numberSections.rawValue : 3] // View title for GAnalytics //self.screenName = "Preferences" - // Set title - self.title = UIDevice.current.name + // Set device name + var nameDevice = PreyConfig.sharedInstance.nameDevice; + if nameDevice! == "" { + nameDevice = UIDevice.current.name; + } + self.title = nameDevice // Set iPadView if IS_IPAD { diff --git a/Prey/ReactViews/asset-manifest.json b/Prey/ReactViews/asset-manifest.json index 9dbb7a68..64313341 100644 --- a/Prey/ReactViews/asset-manifest.json +++ b/Prey/ReactViews/asset-manifest.json @@ -1,15 +1,15 @@ { - "main.css": "./static/css/main.a17f1a2d.chunk.css", - "main.js": "./static/js/main.43da5948.chunk.js", - "main.js.map": "./static/js/main.43da5948.chunk.js.map", + "main.css": "./static/css/main.14d3a667.chunk.css", + "main.js": "./static/js/main.f3c7cd83.chunk.js", + "main.js.map": "./static/js/main.f3c7cd83.chunk.js.map", "runtime~main.js": "./static/js/runtime~main.8c97409f.js", "runtime~main.js.map": "./static/js/runtime~main.8c97409f.js.map", - "static/js/2.d80f2d79.chunk.js": "./static/js/2.d80f2d79.chunk.js", - "static/js/2.d80f2d79.chunk.js.map": "./static/js/2.d80f2d79.chunk.js.map", + "static/js/2.8e9b3290.chunk.js": "./static/js/2.8e9b3290.chunk.js", + "static/js/2.8e9b3290.chunk.js.map": "./static/js/2.8e9b3290.chunk.js.map", "index.html": "./index.html", - "precache-manifest.05c603afd4788c29fb6a5a5158ed851c.js": "./precache-manifest.05c603afd4788c29fb6a5a5158ed851c.js", + "precache-manifest.8e1479fcb3408433fe9f2ae54c4ce5bd.js": "./precache-manifest.8e1479fcb3408433fe9f2ae54c4ce5bd.js", "service-worker.js": "./service-worker.js", - "static/css/main.a17f1a2d.chunk.css.map": "./static/css/main.a17f1a2d.chunk.css.map", + "static/css/main.14d3a667.chunk.css.map": "./static/css/main.14d3a667.chunk.css.map", "static/media/02-Track-Find.png": "./static/media/02-Track-Find.ed00c298.png", "static/media/03-React-Protect.png": "./static/media/03-React-Protect.abee7ee7.png", "static/media/04-Evidencev.png": "./static/media/04-Evidencev.6dd5ae67.png", @@ -19,23 +19,24 @@ "static/media/1_security-hub-06.png": "./static/media/1_security-hub-06.65fc5e65.png", "static/media/fondo1.png": "./static/media/fondo1.e8c057a4.png", "static/media/fondo2.png": "./static/media/fondo2.ada00d71.png", + "static/media/ico-help.svg": "./static/media/ico-help.20155d96.svg", "static/media/icons.eot": "./static/media/icons.0169ebee.eot", "static/media/icons.ttf": "./static/media/icons.1f78a8d8.ttf", "static/media/icons.woff": "./static/media/icons.22dd050a.woff", "static/media/icons.svg": "./static/media/icons.2f54fbbd.svg", "static/media/style.css": "./static/media/regular-book-webfont.6e899114.woff", "static/media/missing-report.png": "./static/media/missing-report.6e26bdc9.png", - "static/media/onboarding_01.png": "./static/media/onboarding_01.e4f1689a.png", + "static/media/onboarding_01.png": "./static/media/onboarding_01.315c1325.png", "static/media/onboarding_02.png": "./static/media/onboarding_02.d1aebc1d.png", - "static/media/onboarding_03.png": "./static/media/onboarding_03.8246a5b5.png", - "static/media/onboarding_04.png": "./static/media/onboarding_04.e6e4671c.png", + "static/media/onboarding_03.png": "./static/media/onboarding_03.dc52ab1e.png", + "static/media/onboarding_04.png": "./static/media/onboarding_04.76ce9f05.png", "static/media/onboarding_05.png": "./static/media/onboarding_05.d259fb28.png", "static/media/permissions-01.png": "./static/media/permissions-01.f591a425.png", "static/media/permissions-02.png": "./static/media/permissions-02.43a6acc7.png", "static/media/permissions-03.png": "./static/media/permissions-03.5f439b60.png", "static/media/permissions-04.png": "./static/media/permissions-04.38c31859.png", "static/media/permissions-05.png": "./static/media/permissions-05.baa7ddab.png", - "static/media/prey-iso-monotono-alt.svg": "./static/media/prey-iso-monotono-alt.230825e0.svg", + "static/media/prey-iso-monotono-alt.svg": "./static/media/prey-iso-monotono-alt.ce31486d.svg", "static/media/prey-logo-monotono-alt.svg": "./static/media/prey-logo-monotono-alt.c3679e2d.svg", "static/media/prey-logo-short-loading.gif": "./static/media/prey-logo-short-loading.1e7c00aa.gif" } \ No newline at end of file diff --git a/Prey/ReactViews/index.html b/Prey/ReactViews/index.html index 4d148e59..99b36fd9 100644 --- a/Prey/ReactViews/index.html +++ b/Prey/ReactViews/index.html @@ -1 +1 @@ -
1){for(var y=Array(m),g=0;g =o.numNumbers,"Complex values '"+e+"' and '"+t+"' too different to mix. Ensure all colors are of the same type."),oe(ae(r.parsed,o.parsed),n)},ce=function(e,t){return function(n){return K(e,t,n)}};function fe(e,t,n){for(var r,o=[],i=n||("number"===typeof(r=e[0])?ce:"string"===typeof r?a.b.test(r)?ne:le:Array.isArray(r)?ae:"object"===typeof r?ue:void 0),u=e.length-1,s=0;sh||o<-h;r(i?b+o:b),i||(s.a.update(w),n())},!0);return{stop:function(){return s.a.update(w)}}})},Ft=Nt(zt,{from:a.g.test,modifyTarget:function(e){return"function"===typeof e},velocity:a.g.test}),Vt=function(e){return void 0===e&&(e={}),mt(function(t){var n=t.update,r=t.complete,o=e.velocity,i=void 0===o?0:o,a=e.from,u=void 0===a?0:a,l=e.to,c=void 0===l?0:l,f=e.stiffness,d=void 0===f?100:f,p=e.damping,h=void 0===p?10:p,v=e.mass,m=void 0===v?1:v,y=e.restSpeed,g=void 0===y?.01:y,b=e.restDelta,w=void 0===b?.01:b,x=i?-i/1e3:0,O=0,k=c-u,E=u,S=E,T=s.b.update(function(e){var t=e.delta;O+=t;var o=h/(2*Math.sqrt(d*m)),a=Math.sqrt(d/m)/1e3;if(S=E,o<1){var u=Math.exp(-o*a*O),l=a*Math.sqrt(1-o*o);E=c-u*((x+o*a*k)/l*Math.sin(l*O)+k*Math.cos(l*O))}else{u=Math.exp(-a*O);E=c-u*(k+(x+a*k)*O)}i=be(E-S,t);var f=Math.abs(i)<=g,p=Math.abs(c-E)<=w;f&&p?(n(E=c),s.a.update(T),r()):n(E)},!0);return{stop:function(){return s.a.update(T)}}})},Bt=Nt(Vt,{from:a.g.test,to:a.g.test,stiffness:a.g.test,damping:a.g.test,mass:a.g.test,velocity:a.g.test}),Ht=(a.g.test,a.g.test,a.g.test,a.g.test,a.g.test,a.g.test,Nt(function(e){var t=e.from,n=void 0===t?0:t,r=e.to,o=void 0===r?1:r,i=e.ease,a=void 0===i?h:i,u=e.reverseEase;return void 0!==u&&u&&(a=f(a)),mt(function(e){var t=e.update;return{seek:function(e){return t(e)}}}).pipe(a,function(e){return K(n,o,e)})},{ease:function(e){return"function"===typeof e},from:a.g.test,to:a.g.test})),Ut=W(0,1),Wt=function(e){return void 0===e&&(e={}),mt(function(t){var n,r=t.update,o=t.complete,i=e.duration,a=void 0===i?300:i,u=e.ease,l=void 0===u?m:u,c=e.flip,f=void 0===c?0:c,d=e.loop,p=void 0===d?0:d,h=e.yoyo,v=void 0===h?0:h,y=e.repeatDelay,g=void 0===y?0:y,b=e.from,w=void 0===b?0:b,x=e.to,O=void 0===x?1:x,k=e.elapsed,E=void 0===k?0:k,S=e.flipCount,T=void 0===S?0:S,C=e.yoyoCount,P=void 0===C?0:C,j=e.loopCount,_=void 0===j?0:j,M=Ht({from:w,to:O,ease:l}).start(r),A=0,R=!1,L=function(e){var t;void 0===e&&(e=!1),M=Ht({from:w=(t=[O,w])[0],to:O=t[1],ease:l,reverseEase:e}).start(r)},I=function(){A=Ut(G(0,a,E)),M.seek(A)},N=function(){R=!0,n=s.b.update(function(e){var t=e.delta;E+=t,I(),function(){var e=R&&E>a+g;return!!e&&(!(!e||p||f||v)||(E=a-(E-g),p&&_ =e[o]&&a[i].seek(1);for(var n=1;n0?o=a:r=a}while(Math.abs(i)>C&&++u