/
Storage.swift
88 lines (68 loc) · 1.82 KB
/
Storage.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import Foundation
/**
* Storage Plugin
*/
@objc(CAPStoragePlugin)
public class CAPStoragePlugin: CAPPlugin {
let KEY_PREFIX = "_cap_"
public override func load() {
}
func getDefaults() -> UserDefaults {
return UserDefaults.standard
}
@objc func get(_ call: CAPPluginCall) {
guard let key = call.getString("key") else {
call.error("Must provide a key")
return
}
let value = getDefaults().string(forKey: makeKey(key))
call.resolve([
"value": value as Any
])
}
@objc func set(_ call: CAPPluginCall) {
guard let key = call.getString("key") else {
call.error("Must provide a key")
return
}
let value = call.getString("value", "")
getDefaults().set(value, forKey: makeKey(key))
call.resolve()
}
@objc func remove(_ call: CAPPluginCall) {
guard let key = call.getString("key") else {
call.error("Must provide a key")
return
}
getDefaults().removeObject(forKey: makeKey(key))
call.resolve()
}
@objc func keys(_ call: CAPPluginCall) {
let keys = getDefaults().dictionaryRepresentation().keys.filter({ (key) -> Bool in
return isKey(key)
}).map({ (key) -> String in
return getKey(key)
})
call.resolve([
"keys": keys
])
}
@objc func clear(_ call: CAPPluginCall) {
getDefaults().dictionaryRepresentation().keys.filter({ (key) -> Bool in
return isKey(key)
}).forEach { (key) in
getDefaults().removeObject(forKey: key)
}
call.resolve()
}
func makeKey(_ key: String) -> String {
return KEY_PREFIX + key
}
func isKey(_ key: String) -> Bool {
return key.hasPrefix(KEY_PREFIX)
}
func getKey(_ key: String) -> String {
let prefixLen = KEY_PREFIX.count
return String(key.dropFirst(prefixLen))
}
}