9
9
import Foundation
10
10
11
11
internal let kCelyDomain = " cely.storage "
12
- internal let kCelyLocksmithAccount = " cely.secure.storage "
13
- internal let kCelyLocksmithService = " cely.secure.service "
14
12
internal let kStore = " store "
15
13
internal let kPersisted = " persisted "
16
14
internal let kLaunchedBefore = " launchedBefore "
@@ -19,7 +17,12 @@ public class CelyStorage: CelyStorageProtocol {
19
17
// MARK: - Variables
20
18
static let sharedInstance = CelyStorage ( )
21
19
22
- var secureStorage : [ String : Any ] = [ : ]
20
+ fileprivate let secureStore = CelySecureStorage ( )
21
+
22
+ var secureStorage : [ String : Any ] {
23
+ return secureStore. store
24
+ }
25
+
23
26
var storage : [ String : [ String : Any ] ] = [ : ]
24
27
public init ( ) {
25
28
@@ -31,14 +34,11 @@ public class CelyStorage: CelyStorageProtocol {
31
34
UserDefaults . standard. setPersistentDomain ( [ kStore: [ : ] , kPersisted: [ kLaunchedBefore: true ] ] , forName: kCelyDomain)
32
35
UserDefaults . standard. synchronize ( )
33
36
34
- // Clear Locksmith
35
- do {
36
- try Locksmith . deleteDataForUserAccount ( userAccount: kCelyLocksmithAccount, inService: kCelyLocksmithService)
37
- } catch { }
37
+ // Clear Secure Storage
38
+ secureStore. clearStorage ( )
38
39
}
39
40
40
41
setupStorage ( )
41
- setupSecureStorage ( )
42
42
}
43
43
44
44
fileprivate func setupStorage( ) {
@@ -50,24 +50,12 @@ public class CelyStorage: CelyStorageProtocol {
50
50
}
51
51
}
52
52
53
- fileprivate func setupSecureStorage( ) {
54
- if let userData = Locksmith . loadDataForUserAccount ( userAccount: kCelyLocksmithAccount, inService: kCelyLocksmithService) {
55
- secureStorage = userData
56
- }
57
- }
58
-
59
53
/// Removes all data from both `secureStorage` and regular `storage`
60
54
public func removeAllData( ) {
61
- CelyStorage . sharedInstance. secureStorage = [ : ]
62
55
CelyStorage . sharedInstance. storage [ kStore] = [ : ]
63
56
UserDefaults . standard. setPersistentDomain ( CelyStorage . sharedInstance. storage, forName: kCelyDomain)
64
57
UserDefaults . standard. synchronize ( )
65
- do {
66
- try Locksmith . deleteDataForUserAccount ( userAccount: kCelyLocksmithAccount, inService: kCelyLocksmithService)
67
- } catch {
68
- // handle the error
69
- print ( " error: \( error. localizedDescription) " )
70
- }
58
+ CelyStorage . sharedInstance. secureStore. clearStorage ( )
71
59
}
72
60
73
61
/// Saves data to storage
@@ -81,18 +69,7 @@ public class CelyStorage: CelyStorageProtocol {
81
69
public func set( _ value: Any ? , forKey key: String , securely secure: Bool = false , persisted: Bool = false ) -> StorageResult {
82
70
guard let val = value else { return . fail( . undefined) }
83
71
if secure {
84
- var currentStorage = CelyStorage . sharedInstance. secureStorage
85
- currentStorage [ key] = val
86
- CelyStorage . sharedInstance. secureStorage = currentStorage
87
- do {
88
- try Locksmith . updateData ( data: currentStorage, forUserAccount: kCelyLocksmithAccount, inService: kCelyLocksmithService)
89
- return . success
90
-
91
- } catch let storageError as LocksmithError {
92
- return . fail( storageError)
93
- } catch {
94
- return . fail( . undefined)
95
- }
72
+ return secureStore. set ( val, forKey: key)
96
73
} else {
97
74
if persisted {
98
75
CelyStorage . sharedInstance. storage [ kPersisted] ? [ key] = val
@@ -113,7 +90,7 @@ public class CelyStorage: CelyStorageProtocol {
113
90
///
114
91
/// - returns: Data For key value
115
92
public func get( _ key: String ) -> Any ? {
116
- if let value = CelyStorage . sharedInstance. secureStorage [ key] {
93
+ if let value = CelyStorage . sharedInstance. secureStore . get ( key) {
117
94
return value
118
95
} else if let value = CelyStorage . sharedInstance. storage [ kStore] ? [ key] {
119
96
return value
0 commit comments