Skip to content

Commit 219e08d

Browse files
committed
refactor source code to remove bugs on js callbacks
1 parent 29a93d9 commit 219e08d

File tree

1 file changed

+127
-91
lines changed

1 file changed

+127
-91
lines changed

www/securestorage.js

Lines changed: 127 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,5 @@
11
var sjcl_ss = cordova.require('cordova-plugin-secure-storage.sjcl_ss');
22
var ESP6Promise = cordova.require('cordova-plugin-secure-storage.es6-promise').Promise;
3-
var _AES_PARAM = {
4-
ks: 256,
5-
ts: 128,
6-
mode: 'ccm',
7-
cipher: 'aes'
8-
};
9-
10-
var _checkCallbacks = function (success, error) {
11-
12-
if (typeof success !== "function") {
13-
console.log("SecureStorage failure: success callback parameter must be a function");
14-
return false;
15-
}
16-
17-
if (typeof error !== "function") {
18-
console.log("SecureStorage failure: error callback parameter must be a function");
19-
return false;
20-
}
21-
22-
return true;
23-
};
243

254
var SecureStorageiOS = function (success, error, service) {
265
var _success = function(){};
@@ -41,73 +20,102 @@ var SecureStorageiOS = function (success, error, service) {
4120
SecureStorageiOS.prototype = {
4221

4322
get: function (success, error, key) {
23+
var defer = new ESP6Promise.defer();
4424
var self = this;
4525
var _key = key;
46-
var _hasCallbacks = true;
26+
27+
var _success = function(value){
28+
if('function' === typeof success) {
29+
success(value);
30+
};
31+
32+
defer.resolve(value);
33+
};
34+
var _error = function(error){
35+
if('function' === typeof error) {
36+
error(error);
37+
}
38+
39+
defer.reject(error);
40+
};
4741

4842
if('string' === typeof success) {
4943
_key = success;
50-
_hasCallbacks = false;
5144
}
5245

53-
var promise = new ESP6Promise(function(resolve, reject) {
54-
cordova.exec(resolve, reject, "SecureStorage", "get", [self.service, _key]);
55-
});
56-
57-
if(_hasCallbacks) {
58-
promise.then(success, error);
59-
}
60-
return promise;
46+
cordova.exec(_success, _error, "SecureStorage", "get", [self.service, _key]);
47+
48+
return defer.promise;
6149
},
6250

6351
set: function (success, error, key, value) {
52+
var defer = new ESP6Promise.defer();
6453
var self = this;
6554
var _key = key;
6655
var _value = value;
67-
var _hasCallbacks = true;
6856

69-
if('string' === typeof success && 'function' !== typeof error && 'undefined' !== typeof error && !!error) {
57+
var _success = function(value){
58+
if(!!success && 'function' === typeof success) {
59+
success(value);
60+
};
61+
62+
defer.resolve(value);
63+
};
64+
var _error = function(error){
65+
if(!!error && 'function' === typeof error) {
66+
error(error);
67+
}
68+
69+
defer.reject(error);
70+
};
71+
72+
if(!!success && 'string' === typeof success) {
7073
_key = success;
74+
}
75+
if(!!error && 'string' === typeof error) {
7176
_value = error;
72-
_hasCallbacks = false;
7377
}
7478

75-
var promise = new ESP6Promise(function(resolve, reject) {
76-
cordova.exec(resolve, reject, "SecureStorage", "set", [self.service, _key, _value]);
77-
});
78-
79-
if(_hasCallbacks) {
80-
promise.then(success, error);
81-
}
82-
return promise;
79+
cordova.exec(_success, _error, "SecureStorage", "set", [self.service, _key, _value]);
80+
81+
return defer.promise;
8382
},
8483

8584
remove: function(success, error, key) {
85+
var defer = new ESP6Promise.defer();
8686
var self = this;
8787
var _key = key;
88-
var _hasCallbacks = true;
88+
89+
var _success = function(value){
90+
if('function' === typeof success) {
91+
success(value);
92+
};
93+
94+
defer.resolve(value);
95+
};
96+
var _error = function(error){
97+
if('function' === typeof error) {
98+
error(error);
99+
}
100+
101+
defer.reject(error);
102+
};
89103

90104
if('string' === typeof success) {
91105
_key = success;
92-
_hasCallbacks = false;
93106
}
94107

95-
var promise = new ESP6Promise(function(resolve, reject) {
96-
cordova.exec(resolve, reject, "SecureStorage", "remove", [self.service, _key]);
97-
});
98-
99-
if(_hasCallbacks) {
100-
promise.then(success, error);
101-
}
102-
return promise;
108+
cordova.exec(_success, _error, "SecureStorage", "remove", [self.service, _key]);
109+
110+
return defer.promise;
103111
}
104112
};
105113

106114
var SecureStorageAndroid = function (success, error, service, encryptionKey) {
107115
var _success = function(){};
108116
var _error = function(error){};
109117
var _service = service;
110-
var _encryptionKey = encryptionKey;
118+
var _encryptionKey = encryptionKey;
111119

112120
if('function' === typeof success) {
113121
_success = success;
@@ -119,80 +127,108 @@ var SecureStorageAndroid = function (success, error, service, encryptionKey) {
119127
if('function' === typeof error) {
120128
_error = error;
121129
}
130+
else if('string' === typeof error) {
131+
_encryptionKey = error;
132+
}
122133

123134
this.service = _service;
124-
this.encryptionKey = _encryptionKey;
135+
this.encryptionKey = _encryptionKey;
136+
125137
cordova.exec(_success, _error, "SecureStorage", "init", [this.service, this.encryptionKey]);
138+
126139
return this;
127140
};
128141

129142
SecureStorageAndroid.prototype = {
130143
get: function (success, error, key) {
144+
var defer = new ESP6Promise.defer();
131145
var self = this;
132146
var _key = key;
133-
var _hasCallbacks = true;
134-
var _success = success;
135-
var _error = error;
147+
148+
var _success = function(value){
149+
if('function' === typeof success) {
150+
success(value);
151+
};
152+
153+
defer.resolve(value);
154+
};
155+
var _error = function(error){
156+
if('function' === typeof error) {
157+
error(error);
158+
}
159+
160+
defer.reject(error);
161+
};
136162

137163
if('string' === typeof success) {
138164
_key = success;
139-
_hasCallbacks = false;
140165
}
141166

142-
var promise = new ESP6Promise(function(_success, _error) {
143-
cordova.exec(_success, _error, "SecureStorage", "get", [self.service, _key]);
144-
});
145-
146-
if(_hasCallbacks) {
147-
promise.then(_success, _error);
148-
}
149-
return promise;
167+
cordova.exec(_success, _error, "SecureStorage", "get", [self.service, _key]);
168+
169+
return defer.promise;
150170
},
151171

152172
set: function (success, error, key, value) {
173+
var defer = new ESP6Promise.defer();
153174
var self = this;
154175
var _key = key;
155176
var _value = value;
156-
var _hasCallbacks = true;
157-
var _success = success;
158-
var _error = error;
159177

160-
if('string' === typeof success && 'function' !== typeof error && 'undefined' !== typeof error && !!error) {
178+
var _success = function(value){
179+
if(!!success && 'function' === typeof success) {
180+
success(value);
181+
};
182+
183+
defer.resolve(value);
184+
};
185+
var _error = function(error){
186+
if(!!error && 'function' === typeof error) {
187+
error(error);
188+
}
189+
190+
defer.reject(error);
191+
};
192+
193+
if(!!success && 'string' === typeof success) {
161194
_key = success;
195+
}
196+
if(!!error && 'string' === typeof error) {
162197
_value = error;
163-
_hasCallbacks = false;
164198
}
165199

166-
var promise = new ESP6Promise(function(_success, _error) {
167-
cordova.exec(_success, _error, "SecureStorage", "set", [self.service, _key, _value]);
168-
});
169-
170-
if(_hasCallbacks) {
171-
promise.then(_success, _error);
172-
}
173-
return promise;
200+
cordova.exec(_success, _error, "SecureStorage", "set", [self.service, _key, _value]);
201+
202+
return defer.promise;
174203
},
175204

176205
remove: function(success, error, key) {
206+
var defer = new ESP6Promise.defer();
177207
var self = this;
178208
var _key = key;
179-
var _hasCallbacks = true;
180-
var _success = success;
181-
var _error = error;
209+
210+
var _success = function(value){
211+
if('function' === typeof success) {
212+
success(value);
213+
};
214+
215+
defer.resolve(value);
216+
};
217+
var _error = function(error){
218+
if('function' === typeof error) {
219+
error(error);
220+
}
221+
222+
defer.reject(error);
223+
};
182224

183225
if('string' === typeof success) {
184226
_key = success;
185-
_hasCallbacks = false;
186227
}
187228

188-
var promise = new ESP6Promise(function(_success, _error) {
189-
cordova.exec(_success, _error, "SecureStorage", "remove", [self.service, _key]);
190-
});
191-
192-
if(_hasCallbacks) {
193-
promise.then(_success, _error);
194-
}
195-
return promise;
229+
cordova.exec(_success, _error, "SecureStorage", "remove", [self.service, _key]);
230+
231+
return defer.promise;
196232
}
197233
};
198234

0 commit comments

Comments
 (0)