Skip to content

Commit a1129f8

Browse files
committed
- some minor refactoring Utils
1 parent 2f839a4 commit a1129f8

File tree

5 files changed

+78
-107
lines changed

5 files changed

+78
-107
lines changed

src/messaging/cancel.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import Utils from '../utils'
21
import Urls from '../urls'
32
import Request from '../request'
43
import Async from '../request/async'
@@ -7,7 +6,7 @@ export function cancel(messageId, asyncHandler) {
76
return Request.delete({
87
url : Urls.messagingMessage(messageId),
98
isAsync : !!asyncHandler,
10-
asyncHandler: new Async(Utils.emptyFn)
9+
asyncHandler: new Async()
1110
})
1211
}
1312

src/messaging/subscription.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export default class Subscription {
1212
this.channelProperties = config.channelProperties
1313
this.subscriptionId = null
1414
this.restUrl = config.restUrl + '/' + config.channelName
15-
this.responder = config.responder || Utils.emptyFn
15+
this.responder = config.responder
1616
this._subscribe(config.onSubscribe)
1717
}
1818

@@ -51,18 +51,22 @@ export default class Subscription {
5151
})
5252

5353
this.proxy.on('messageReceived', () => {
54-
this.responder()
54+
if (this.responder) {
55+
this.responder()
56+
}
5557
})
5658
} else {
5759
this._switchToPolling()
5860
}
5961

60-
this._startSubscription = Utils.emptyFn
62+
this._startSubscription = function() {
63+
}
6164
}
6265

6366
cancelSubscription() {
6467
this.proxy && this.proxy.close()
65-
this._startSubscription = function(){}
68+
this._startSubscription = function() {
69+
}
6670
}
6771

6872
_switchToPolling() {

src/request/async.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export default class Async {
33
constructor(successCallback, faultCallback, context) {
44
if (!(faultCallback instanceof Function)) {
55
context = faultCallback
6-
faultCallback = null
6+
faultCallback = undefined
77
}
88

99
this.successCallback = successCallback

src/users/social/login.js

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export function loginSocial(socialType, fieldsMapping, permissions, container, s
1414
asyncHandler = Utils.extractResponder(arguments)
1515
asyncHandler = wrapAsync(asyncHandler, stayLoggedIn)
1616

17-
Utils.addEvent('message', window, function(e) {
17+
addWindowEventListener('message', window, function(e) {
1818
if (e.origin === LocalVars.serverURL) {
1919
const result = JSON.parse(e.data)
2020

@@ -24,7 +24,7 @@ export function loginSocial(socialType, fieldsMapping, permissions, container, s
2424
asyncHandler.success(result)
2525
}
2626

27-
Utils.removeEvent('message', window)
27+
removeWindowEventListener('message', window)
2828
socialContainer.closeContainer()
2929
}
3030
})
@@ -47,3 +47,26 @@ export function loginSocial(socialType, fieldsMapping, permissions, container, s
4747
data : request
4848
})
4949
}
50+
51+
52+
function addWindowEventListener(event, elem, func) {
53+
if (elem.addEventListener) {
54+
elem.addEventListener(event, func, false)
55+
56+
} else if (elem.attachEvent) {
57+
elem.attachEvent('on' + event, func)
58+
59+
} else {
60+
elem[event] = func
61+
}
62+
}
63+
64+
function removeWindowEventListener(event, elem) {
65+
if (elem.removeEventListener) {
66+
elem.removeEventListener(event, null, false)
67+
} else if (elem.detachEvent) {
68+
elem.detachEvent('on' + event, null)
69+
}
70+
71+
elem[event] = null
72+
}

src/utils.js

Lines changed: 43 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,6 @@ const Utils = {
3131

3232
isBrowser: (new Function('try {return this===window;}catch(e){ return false;}'))(),
3333

34-
emptyFn: function() {
35-
},
36-
37-
getNow() {
38-
return new Date().getTime()
39-
},
40-
4134
castArray(value) {
4235
if (Utils.isArray(value)) {
4336
return value
@@ -46,18 +39,6 @@ const Utils = {
4639
return [value]
4740
},
4841

49-
addEvent(evnt, elem, func) {
50-
if (elem.addEventListener) {
51-
elem.addEventListener(evnt, func, false)
52-
}
53-
else if (elem.attachEvent) {
54-
elem.attachEvent('on' + evnt, func)
55-
}
56-
else {
57-
elem[evnt] = func
58-
}
59-
},
60-
6142
isEmpty(obj) {
6243
if (obj === null || obj === undefined) {
6344
return true
@@ -76,16 +57,6 @@ const Utils = {
7657
return true
7758
},
7859

79-
removeEvent(event, elem) {
80-
if (elem.removeEventListener) {
81-
elem.removeEventListener(event, null, false)
82-
} else if (elem.detachEvent) {
83-
elem.detachEvent('on' + event, null)
84-
}
85-
86-
elem[event] = null
87-
},
88-
8960
stringToBiteArray(str) {
9061
const data = new ArrayBuffer(str.length)
9162
const ui8a = new Uint8Array(data, 0)
@@ -97,20 +68,6 @@ const Utils = {
9768
return ui8a
9869
},
9970

100-
onHttpRequestErrorHandler(xhr, errorHandler, responseParser) {
101-
return function() {
102-
let errorMessage = 'Unable to connect to the network'
103-
104-
//this part is needed for those implementations of XMLHttpRequest
105-
//which call the onerror handler on an any bad request
106-
if (xhr.status >= 400) {
107-
errorMessage = responseParser(xhr)
108-
}
109-
110-
errorHandler(errorMessage)
111-
}
112-
},
113-
11471
toQueryParams(params) {
11572
params = params || {}
11673
const result = []
@@ -125,6 +82,7 @@ const Utils = {
12582
},
12683

12784
toUri() {
85+
//TODO: refactor it
12886
let uri = ''
12987
let arg
13088

@@ -173,49 +131,12 @@ const Utils = {
173131
return arr.map(item => encodeURIComponent(item)).join(',')
174132
},
175133

176-
classWrapper(obj) {
177-
const wrapper = obj => {
178-
let wrapperName = null
179-
let Wrapper = null
180-
181-
for (const property in obj) {
182-
if (obj.hasOwnProperty(property)) {
183-
if (property === '___class') {
184-
wrapperName = obj[property]
185-
break
186-
}
187-
}
188-
}
189-
190-
if (wrapperName) {
191-
try {
192-
Wrapper = eval(wrapperName)
193-
obj = Utils.deepExtend(new Wrapper(), obj)
194-
} catch (e) {
195-
}
196-
}
197-
198-
return obj
199-
}
200-
201-
if (Utils.isObject(obj) && obj != null) {
202-
if (Utils.isArray(obj)) {
203-
for (let i = obj.length; i--;) {
204-
obj[i] = wrapper(obj[i])
205-
}
206-
} else {
207-
obj = wrapper(obj)
208-
}
209-
}
210-
211-
return obj
212-
},
213-
214134
deepExtend(destination, source) {
135+
//TODO: refactor it
215136
for (const property in source) {
216137
if (source[property] !== undefined && source.hasOwnProperty(property)) {
217138
destination[property] = destination[property] || {}
218-
destination[property] = Utils.classWrapper(source[property])
139+
destination[property] = classWrapper(source[property])
219140

220141
if (
221142
destination[property]
@@ -224,30 +145,28 @@ const Utils = {
224145
&& destination[property][property].hasOwnProperty('__originSubID')
225146
) {
226147

227-
destination[property][property] = Utils.classWrapper(destination[property])
148+
destination[property][property] = classWrapper(destination[property])
228149
}
229150
}
230151
}
231152

232153
return destination
233154
},
234155

235-
cloneObject(obj) {
236-
return Utils.isArray(obj) ? obj.slice() : Utils.deepExtend({}, obj)
237-
},
238-
239156
extractResponder(args) {
240-
let i, len
241-
for (i = 0, len = args.length; i < len; ++i) {
157+
for (let i = 0; i < args.length; i++) {
242158
if (args[i] instanceof Async) {
243159
return args[i]
244160
}
245161
}
246-
247-
return null
248162
},
249163

250164
wrapAsync(asyncHandler, parser, context) {
165+
//TODO: should we remove it?
166+
if (asyncHandler instanceof Async && !parser) {
167+
return asyncHandler
168+
}
169+
251170
const success = data => {
252171
if (parser) {
253172
data = parser.call(context, data)
@@ -285,20 +204,46 @@ const Utils = {
285204

286205
return fn.apply(context, arguments)
287206
}
288-
},
207+
}
208+
}
289209

290-
mirrorKeys(obj) {
291-
const mirroredObject = {}
210+
function classWrapper(obj) {
211+
//TODO: refactor it
212+
const wrapper = obj => {
213+
let wrapperName = null
214+
let Wrapper = null
215+
216+
for (const property in obj) {
217+
if (obj.hasOwnProperty(property)) {
218+
if (property === '___class') {
219+
wrapperName = obj[property]
220+
break
221+
}
222+
}
223+
}
292224

293-
for (const key in obj) {
294-
if (obj.hasOwnProperty(key)) {
295-
mirroredObject[key] = key
225+
if (wrapperName) {
226+
try {
227+
Wrapper = eval(wrapperName)
228+
obj = Utils.deepExtend(new Wrapper(), obj)
229+
} catch (e) {
296230
}
297231
}
298232

299-
return mirroredObject
233+
return obj
234+
}
235+
236+
if (Utils.isObject(obj) && obj != null) {
237+
if (Utils.isArray(obj)) {
238+
for (let i = obj.length; i--;) {
239+
obj[i] = wrapper(obj[i])
240+
}
241+
} else {
242+
obj = wrapper(obj)
243+
}
300244
}
301245

246+
return obj
302247
}
303248

304249
export default Utils

0 commit comments

Comments
 (0)