-
Notifications
You must be signed in to change notification settings - Fork 41
/
Copy pathmultiwallet_config.go
152 lines (121 loc) · 4.49 KB
/
multiwallet_config.go
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
package dcrlibwallet
import (
"github.com/asdine/storm"
)
const (
userConfigBucketName = "user_config"
LogLevelConfigKey = "log_level"
SpendUnconfirmedConfigKey = "spend_unconfirmed"
CurrencyConversionConfigKey = "currency_conversion_option"
IsStartupSecuritySetConfigKey = "startup_security_set"
StartupSecurityTypeConfigKey = "startup_security_type"
UseBiometricConfigKey = "use_biometric"
IncomingTxNotificationsConfigKey = "tx_notification_enabled"
BeepNewBlocksConfigKey = "beep_new_blocks"
SyncOnCellularConfigKey = "always_sync"
NetworkModeConfigKey = "network_mode"
SpvPersistentPeerAddressesConfigKey = "spv_peer_addresses"
UserAgentConfigKey = "user_agent"
PoliteiaNotificationConfigKey = "politeia_notification"
LastTxHashConfigKey = "last_tx_hash"
KnownVSPsConfigKey = "known_vsps"
TicketBuyerVSPHostConfigKey = "tb_vsp_host"
TicketBuyerWalletConfigKey = "tb_wallet_id"
TicketBuyerAccountConfigKey = "tb_account_number"
TicketBuyerATMConfigKey = "tb_amount_to_maintain"
PassphraseTypePin int32 = 0
PassphraseTypePass int32 = 1
)
type configSaveFn = func(key string, value interface{}) error
type configReadFn = func(multiwallet bool, key string, valueOut interface{}) error
func (mw *MultiWallet) walletConfigSetFn(walletID int) configSaveFn {
return func(key string, value interface{}) error {
walletUniqueKey := WalletUniqueConfigKey(walletID, key)
return mw.db.Set(userConfigBucketName, walletUniqueKey, value)
}
}
func (mw *MultiWallet) walletConfigReadFn(walletID int) configReadFn {
return func(multiwallet bool, key string, valueOut interface{}) error {
if !multiwallet {
key = WalletUniqueConfigKey(walletID, key)
}
return mw.db.Get(userConfigBucketName, key, valueOut)
}
}
func (mw *MultiWallet) SaveUserConfigValue(key string, value interface{}) {
err := mw.db.Set(userConfigBucketName, key, value)
if err != nil {
log.Errorf("error setting config value for key: %s, error: %v", key, err)
}
}
func (mw *MultiWallet) ReadUserConfigValue(key string, valueOut interface{}) error {
err := mw.db.Get(userConfigBucketName, key, valueOut)
if err != nil && err != storm.ErrNotFound {
log.Errorf("error reading config value for key: %s, error: %v", key, err)
}
return err
}
func (mw *MultiWallet) DeleteUserConfigValueForKey(key string) {
err := mw.db.Delete(userConfigBucketName, key)
if err != nil {
log.Errorf("error deleting config value for key: %s, error: %v", key, err)
}
}
func (mw *MultiWallet) ClearConfig() {
err := mw.db.Drop(userConfigBucketName)
if err != nil {
log.Errorf("error deleting config bucket: %v", err)
}
}
func (mw *MultiWallet) SetBoolConfigValueForKey(key string, value bool) {
mw.SaveUserConfigValue(key, value)
}
func (mw *MultiWallet) SetDoubleConfigValueForKey(key string, value float64) {
mw.SaveUserConfigValue(key, value)
}
func (mw *MultiWallet) SetIntConfigValueForKey(key string, value int) {
mw.SaveUserConfigValue(key, value)
}
func (mw *MultiWallet) SetInt32ConfigValueForKey(key string, value int32) {
mw.SaveUserConfigValue(key, value)
}
func (mw *MultiWallet) SetLongConfigValueForKey(key string, value int64) {
mw.SaveUserConfigValue(key, value)
}
func (mw *MultiWallet) SetStringConfigValueForKey(key, value string) {
mw.SaveUserConfigValue(key, value)
}
func (mw *MultiWallet) ReadBoolConfigValueForKey(key string, defaultValue bool) (valueOut bool) {
if err := mw.ReadUserConfigValue(key, &valueOut); err == storm.ErrNotFound {
valueOut = defaultValue
}
return
}
func (mw *MultiWallet) ReadDoubleConfigValueForKey(key string, defaultValue float64) (valueOut float64) {
if err := mw.ReadUserConfigValue(key, &valueOut); err == storm.ErrNotFound {
valueOut = defaultValue
}
return
}
func (mw *MultiWallet) ReadIntConfigValueForKey(key string, defaultValue int) (valueOut int) {
if err := mw.ReadUserConfigValue(key, &valueOut); err == storm.ErrNotFound {
valueOut = defaultValue
}
return
}
func (mw *MultiWallet) ReadInt32ConfigValueForKey(key string, defaultValue int32) (valueOut int32) {
if err := mw.ReadUserConfigValue(key, &valueOut); err == storm.ErrNotFound {
valueOut = defaultValue
}
return
}
func (mw *MultiWallet) ReadLongConfigValueForKey(key string, defaultValue int64) (valueOut int64) {
if err := mw.ReadUserConfigValue(key, &valueOut); err == storm.ErrNotFound {
valueOut = defaultValue
}
return
}
func (mw *MultiWallet) ReadStringConfigValueForKey(key string) (valueOut string) {
mw.ReadUserConfigValue(key, &valueOut)
return
}