Window clsoe confirmation if connected
[KiwiIRC.git] / client / js / front.events.js
CommitLineData
7af36ece
JA
1/*jslint browser: true, devel: true, sloppy: true, plusplus: true, nomen: true, forin: true, continue: true */\r
2/*globals kiwi, $, _, Tabview, Userlist, User, Box, init_data */\r
5a29866a
JA
3/**\r
4* @namespace\r
5*/\r
b41a381f
D
6kiwi.front.events = {\r
7\r
5a29866a
JA
8 /**\r
9 * Binds all of the event handlers to their events\r
10 */\r
f7a9a13c 11 bindAll: function () {\r
2a4e22fa
D
12 $(kiwi.gateway).bind('onmsg', this.onMsg)\r
13 .bind('onnotice', this.onNotice)\r
14 .bind('onaction', this.onAction)\r
15 .bind('onmotd', this.onMOTD)\r
16 .bind('onoptions', this.onOptions)\r
17 .bind('onconnect', this.onConnect)\r
18 .bind('onconnect_fail', this.onConnectFail)\r
19 .bind('ondisconnect', this.onDisconnect)\r
20 .bind('onreconnecting', this.onReconnecting)\r
21 .bind('onnick', this.onNick)\r
22 .bind('onuserlist', this.onUserList)\r
23 .bind('onuserlist_end', this.onUserListEnd)\r
24 .bind('onlist_start', this.onChannelListStart)\r
25 .bind('onlist_channel', this.onChannelList)\r
26 .bind('onlist_end', this.onChannelListEnd)\r
27 .bind('onbanlist', this.onBanList)\r
28 .bind('onbanlist_end', this.onBanListEnd)\r
29 .bind('onjoin', this.onJoin)\r
30 .bind('ontopic', this.onTopic)\r
31 .bind('ontopicsetby', this.onTopicSetBy)\r
32 .bind('onpart', this.onPart)\r
33 .bind('onkick', this.onKick)\r
34 .bind('onquit', this.onQuit)\r
35 .bind('onmode', this.onMode)\r
36 .bind('onwhois', this.onWhois)\r
37 .bind('onsync', this.onSync)\r
38 .bind('onchannel_redirect', this.onChannelRedirect)\r
39 .bind('ondebug', this.onDebug)\r
40 .bind('onctcp_request', this.onCTCPRequest)\r
41 .bind('onctcp_response', this.onCTCPResponse)\r
42 .bind('onirc_error', this.onIRCError)\r
43 .bind('onkiwi', this.onKiwi);\r
f7a9a13c 44 },\r
b41a381f 45\r
5a29866a
JA
46 /**\r
47 * Handles the msg event\r
48 * @param {eventObject} e The event object\r
49 * @param {Object} data The event data\r
50 */\r
b41a381f
D
51 onMsg: function (e, data) {\r
52 var destination, plugin_event, tab;\r
53 // Is this message from a user?\r
54 if (data.channel === kiwi.gateway.nick) {\r
55 destination = data.nick.toLowerCase();\r
56 } else {\r
57 destination = data.channel.toLowerCase();\r
58 }\r
59\r
60 plugin_event = {nick: data.nick, msg: data.msg, destination: destination};\r
61 plugin_event = kiwi.plugs.run('msg_recieved', plugin_event);\r
62 if (!plugin_event) {\r
63 return;\r
64 }\r
f7a9a13c 65 \r
bb6a9775 66 var chan = kiwi.channels.getByName(plugin_event.destination);\r
54a2a4e1
JA
67 if (chan) {\r
68 chan.addMsg(null, plugin_event.nick, plugin_event.msg);\r
69 }\r
b41a381f
D
70 },\r
71\r
5a29866a
JA
72 /**\r
73 * Handles the debug event\r
74 * @param {eventObject} e The event object\r
75 * @param {Object} data The event data\r
76 */\r
b41a381f
D
77 onDebug: function (e, data) {\r
78 var tab = Tabview.getTab('kiwi_debug');\r
79 if (!tab) {\r
80 tab = new Tabview('kiwi_debug');\r
81 }\r
82 tab.addMsg(null, ' ', data.msg);\r
83 },\r
84\r
5a29866a
JA
85 /**\r
86 * Handles the action event\r
87 * @param {eventObject} e The event object\r
88 * @param {Object} data The event data\r
89 */\r
b41a381f
D
90 onAction: function (e, data) {\r
91 var destination, tab;\r
92 // Is this message from a user?\r
93 if (data.channel === kiwi.gateway.nick) {\r
94 destination = data.nick;\r
95 } else {\r
96 destination = data.channel;\r
97 }\r
98\r
bb6a9775 99 var chan = kiwi.channels.getByName(destination);\r
54a2a4e1
JA
100 if (chan) {\r
101 chan.addMsg(null, ' ', '* ' + data.nick + ' ' + data.msg, 'action', 'color:#555;');\r
bb6a9775
JA
102 } else {\r
103 kiwi.channels.server.addMsg(null, ' ', '* ' + data.nick + ' ' + data.msg, 'action', 'color:#555;');\r
b41a381f 104 }\r
b41a381f
D
105 },\r
106\r
5a29866a
JA
107 /**\r
108 * Handles the topic event\r
109 * @param {eventObject} e The event object\r
110 * @param {Object} data The event data\r
111 */\r
b41a381f 112 onTopic: function (e, data) {\r
bb6a9775 113 var chan = kiwi.channels.getByName(data.channel);\r
54a2a4e1
JA
114 if (chan) {\r
115 chan.set({"topic": data.topic});\r
bb6a9775 116 chan.addMsg(null, ' ', '=== Topic for ' + data.channel + ' is: ' + data.topic, 'topic');\r
b41a381f
D
117 }\r
118 },\r
119\r
2a4e22fa
D
120 /**\r
121 * Handles the topicsetby event\r
122 * @param {eventObject} e The event object\r
123 * @param {Object} data The event data\r
124 */\r
125 onTopicSetBy: function (e, data) {\r
54a2a4e1 126 var when,\r
bb6a9775
JA
127 chan = kiwi.channels.getByName(data.channel);\r
128 if (chan) {\r
129 when = new Date(data.when * 1000).toLocaleString();\r
130 chan.addMsg(null, '', 'Topic set by ' + data.nick + ' at ' + when, 'topic');\r
131 }\r
2a4e22fa
D
132 },\r
133\r
5a29866a
JA
134 /**\r
135 * Handles the notice event\r
136 * @param {eventObject} e The event object\r
137 * @param {Object} data The event data\r
138 */\r
b41a381f
D
139 onNotice: function (e, data) {\r
140 var nick = (data.nick === undefined) ? '' : data.nick,\r
54a2a4e1
JA
141 enick = '[' + nick + ']',\r
142 chan;\r
b41a381f 143\r
bb6a9775 144 chan = kiwi.channels.getByName(data.channel);\r
54a2a4e1
JA
145 if (chan) {\r
146 chan.addMsg(null, enick, data.msg, 'notice');\r
bb6a9775
JA
147 } else {\r
148 kiwi.channels.server.addMsg(null, enick, data.msg, 'notice');\r
b41a381f
D
149 }\r
150 },\r
151\r
5a29866a
JA
152 /**\r
153 * Handles the CTCP request event\r
154 * @param {eventObject} e The event object\r
155 * @param {Object} data The event data\r
156 */\r
b41a381f
D
157 onCTCPRequest: function (e, data) {\r
158 var msg = data.msg.split(" ", 2);\r
159 switch (msg[0]) {\r
160 case 'PING':\r
161 if (typeof msg[1] === 'undefined') {\r
162 msg[1] = '';\r
163 }\r
312d2d7c 164 kiwi.gateway.ctcp(false, 'PING', data.nick, msg[1]);\r
b41a381f
D
165 break;\r
166 case 'TIME':\r
312d2d7c 167 kiwi.gateway.ctcp(false, 'TIME', data.nick, (new Date()).toLocaleString());\r
b41a381f
D
168 break;\r
169 }\r
bb6a9775
JA
170 kiwi.channels.server.addMsg(null, 'CTCP Request', '[from ' + data.nick + '] ' + data.msg, 'ctcp');\r
171 \r
b41a381f
D
172 },\r
173\r
5a29866a
JA
174 /**\r
175 * Handles the CTCP response event\r
176 * @param {eventObject} e The event object\r
177 * @param {Object} data The event data\r
178 */\r
b41a381f 179 onCTCPResponse: function (e, data) {\r
bb6a9775 180 kiwi.channels.server.addMsg(null, 'CTCP Reply', '[from ' + data.nick + '] ' + data.msg, 'ctcp');\r
b41a381f
D
181 },\r
182\r
5a29866a
JA
183 /**\r
184 * Handles the kiwi event\r
185 * @param {eventObject} e The event object\r
186 * @param {Object} data The event data\r
187 */\r
b41a381f
D
188 onKiwi: function (e, data) {\r
189 //console.log(data);\r
190 },\r
191\r
5a29866a
JA
192 /**\r
193 * Handles the connect event\r
194 * @param {eventObject} e The event object\r
195 * @param {Object} data The event data\r
196 */\r
b41a381f
D
197 onConnect: function (e, data) {\r
198 var err_box, channels;\r
199\r
200 if (data.connected) {\r
201 // Did we disconnect?\r
202 err_box = $('.messages .msg.error.disconnect .text');\r
203 if (typeof err_box[0] !== 'undefined') {\r
204 err_box.text('Reconnected OK :)');\r
205 err_box.parent().removeClass('disconnect');\r
206\r
207 // Rejoin channels\r
54a2a4e1
JA
208 //channels = '';\r
209 //_.each(Tabview.getAllTabs(), function (tabview) {\r
210 // if (tabview.name === 'server') {\r
211 // return;\r
212 // }\r
213 // channels += tabview.name + ',';\r
214 //});\r
215 //console.log('Rejoining: ' + channels);\r
216 //kiwi.gateway.join(channels);\r
b41a381f
D
217 return;\r
218 }\r
219\r
220 if (kiwi.gateway.nick !== data.nick) {\r
221 kiwi.gateway.nick = data.nick;\r
3586a76e 222 kiwi.front.ui.doLayout();\r
b41a381f
D
223 }\r
224\r
bb6a9775
JA
225 kiwi.channels.server.addMsg(null, ' ', '=== Connected OK :)', 'status');\r
226 if (typeof init_data.channel === "string") {\r
227 kiwi.front.joinChannel(init_data.channel);\r
228 }\r
b41a381f
D
229 kiwi.plugs.run('connect', {success: true});\r
230 } else {\r
bb6a9775 231 kiwi.channels.server.addMsg(null, ' ', '=== Failed to connect :(', 'status');\r
b41a381f
D
232 kiwi.plugs.run('connect', {success: false});\r
233 }\r
f97fe3d2
D
234\r
235 // Now that we're connected, warn the user if they really want to quit\r
32a2d88b 236 kiwi.front.ui.preventRefresh();\r
b41a381f 237 },\r
5a29866a
JA
238 /**\r
239 * Handles the connectFail event\r
240 * @param {eventObject} e The event object\r
241 * @param {Object} data The event data\r
242 */\r
b41a381f
D
243 onConnectFail: function (e, data) {\r
244 var reason = (typeof data.reason === 'string') ? data.reason : '';\r
bb6a9775 245 kiwi.channels.server.addMsg(null, '', 'There\'s a problem connecting! (' + reason + ')', 'error');\r
b41a381f
D
246 kiwi.plugs.run('connect', {success: false});\r
247 },\r
5a29866a
JA
248 /**\r
249 * Handles the disconnect event\r
250 * @param {eventObject} e The event object\r
251 * @param {Object} data The event data\r
252 */\r
b41a381f
D
253 onDisconnect: function (e, data) {\r
254 var tab, tabs;\r
54a2a4e1
JA
255 //tabs = Tabview.getAllTabs();\r
256 //for (tab in tabs) {\r
257 // tabs[tab].addMsg(null, '', 'Disconnected from server!', 'error disconnect');\r
258 //}\r
b41a381f
D
259 kiwi.plugs.run('disconnect', {success: false});\r
260 },\r
5a29866a
JA
261 /**\r
262 * Handles the reconnecting event\r
263 * @param {eventObject} e The event object\r
264 * @param {Object} data The event data\r
265 */\r
b41a381f 266 onReconnecting: function (e, data) {\r
ffc2f74a 267 var err_box, f, msg, mins, secs;\r
b41a381f
D
268\r
269 err_box = $('.messages .msg.error.disconnect .text');\r
270 if (!err_box) {\r
271 return;\r
272 }\r
273\r
5a29866a
JA
274 /**\r
275 * @inner\r
276 */\r
b41a381f
D
277 f = function (num) {\r
278 switch (num) {\r
279 case 1: return 'First';\r
280 case 2: return 'Second';\r
281 case 3: return 'Third';\r
282 case 4: return 'Fourth';\r
283 case 5: return 'Fifth';\r
284 case 6: return 'Sixth';\r
285 case 7: return 'Seventh';\r
286 default: return 'Next';\r
287 }\r
288 };\r
289\r
ffc2f74a
JA
290 secs = Math.floor(data.delay / 1000);\r
291 mins = Math.floor(secs / 60);\r
292 secs = secs % 60;\r
293 if (mins > 0) {\r
ab6e33f8 294 msg = f(data.attempts) + ' attempt at reconnecting in ' + mins + ' minute' + ((mins > 1) ? 's' : '') + ', ' + secs + ' second' + (((secs > 1) || (secs === 0)) ? 's' : '') + '...';\r
ffc2f74a
JA
295 } else {\r
296 msg = f(data.attempts) + ' attempt at reconnecting in ' + secs + ' second' + (((secs > 1) || (secs === 0)) ? 's' : '') + '...';\r
297 }\r
f93aafe5 298\r
b41a381f
D
299 err_box.text(msg);\r
300 },\r
5a29866a
JA
301 /**\r
302 * Handles the options event\r
303 * @param {eventObject} e The event object\r
304 * @param {Object} data The event data\r
305 */\r
b41a381f
D
306 onOptions: function (e, data) {\r
307 if (typeof kiwi.gateway.network_name === "string" && kiwi.gateway.network_name !== "") {\r
bb6a9775 308 kiwi.channels.server.set({"name": kiwi.gateway.network_name});\r
b41a381f
D
309 }\r
310 },\r
5a29866a
JA
311 /**\r
312 * Handles the MOTD event\r
313 * @param {eventObject} e The event object\r
314 * @param {Object} data The event data\r
315 */\r
b41a381f 316 onMOTD: function (e, data) {\r
bb6a9775 317 kiwi.channels.server.addMsg(null, data.server, data.msg, 'motd');\r
b41a381f 318 },\r
5a29866a
JA
319 /**\r
320 * Handles the whois event\r
321 * @param {eventObject} e The event object\r
322 * @param {Object} data The event data\r
323 */\r
b41a381f 324 onWhois: function (e, data) {\r
7af36ece 325 /*globals secondsToTime */\r
a146029e
D
326 var d, tab, idle_time = '';\r
327\r
7af36ece
JA
328 if (data.end) {\r
329 return;\r
330 }\r
a146029e 331\r
dde5dcd9 332 if (typeof data.idle !== 'undefined') {\r
a146029e
D
333 idle_time = secondsToTime(parseInt(data.idle, 10));\r
334 idle_time = idle_time.h.toString().lpad(2, "0") + ':' + idle_time.m.toString().lpad(2, "0") + ':' + idle_time.s.toString().lpad(2, "0");\r
335 }\r
336\r
bb6a9775
JA
337 tab = kiwi.currentPanel;\r
338 if (data.msg) {\r
339 tab.addMsg(null, data.nick, data.msg, 'whois');\r
340 } else if (data.logon) {\r
341 d = new Date();\r
342 d.setTime(data.logon * 1000);\r
343 d = d.toLocaleString();\r
344\r
345 tab.addMsg(null, data.nick, 'idle for ' + idle_time + ', signed on ' + d, 'whois');\r
346 } else {\r
347 tab.addMsg(null, data.nick, 'idle for ' + idle_time, 'whois');\r
348 }\r
b41a381f 349 },\r
5a29866a
JA
350 /**\r
351 * Handles the mode event\r
352 * @param {eventObject} e The event object\r
353 * @param {Object} data The event data\r
354 */\r
b41a381f 355 onMode: function (e, data) {\r
54a2a4e1 356 var tab, mem;\r
b41a381f 357 if ((typeof data.channel === 'string') && (typeof data.effected_nick === 'string')) {\r
bb6a9775 358 chan = kiwi.channels.getByName(data.channel);\r
54a2a4e1
JA
359 if (chan) {\r
360 chan.addMsg(null, ' ', '[' + data.mode + '] ' + data.effected_nick + ' by ' + data.nick, 'mode', '');\r
361 mem = _.detect(chan.get("members"), function (m) {\r
362 return data.effected_nick === m.get("nick");\r
363 });\r
364 if (mem) {\r
365 if (data.mode[0] === '+') {\r
366 mem.addMode(data.mode);\r
367 } else {\r
368 mem.removeMode(data.mode);\r
369 }\r
370 }\r
b41a381f
D
371 }\r
372 }\r
b41a381f
D
373 // TODO: Other mode changes that aren't +/- qaohv. - JA\r
374 },\r
5a29866a
JA
375 /**\r
376 * Handles the userList event\r
377 * @param {eventObject} e The event object\r
378 * @param {Object} data The event data\r
379 */\r
b41a381f 380 onUserList: function (e, data) {\r
54a2a4e1 381 var tab, chan;\r
bb6a9775 382 chan = kiwi.channels.getByName(data.channel);\r
54a2a4e1 383 if (chan) {\r
ce119b06
JA
384 if ((!kiwi.front.cache.userlist) || (!kiwi.front.cache.userlist.updating)) {\r
385 if (!kiwi.front.cache.userlist) {\r
386 kiwi.front.cache.userlist = {updating: true};\r
387 } else {\r
388 kiwi.front.cache.userlist.updating = true;\r
389 }\r
390 chan.get("members").reset([],{"silent": true});\r
391 }\r
392 _.forEach(data.users, function (u) {\r
393 chan.get("members").add(new kiwi.model.Member(u), {"silent": true});\r
394 });\r
54a2a4e1 395 }\r
b41a381f 396 },\r
5a29866a
JA
397 /**\r
398 * Handles the userListEnd event\r
399 * @param {eventObject} e The event object\r
400 * @param {Object} data The event data\r
401 */\r
b41a381f 402 onUserListEnd: function (e, data) {\r
ce119b06 403 var chan;\r
b41a381f
D
404 if (!kiwi.front.cache.userlist) {\r
405 kiwi.front.cache.userlist = {};\r
406 }\r
407 kiwi.front.cache.userlist.updating = false;\r
bb6a9775 408 chan = kiwi.channels.getByName(data.channel);\r
54a2a4e1
JA
409 if (chan) {\r
410 chan.get("members").trigger("change");\r
411 }\r
b41a381f
D
412 },\r
413\r
5a29866a
JA
414 /**\r
415 * Handles the channelListStart event\r
416 * @param {eventObject} e The event object\r
417 * @param {Object} data The event data\r
418 */\r
b41a381f 419 onChannelListStart: function (e, data) {\r
dde5dcd9
JA
420 /*global ChannelList */\r
421 kiwi.front.cache.list = new ChannelList();\r
422 console.profile('list');\r
b41a381f 423 },\r
5a29866a
JA
424 /**\r
425 * Handles the channelList event\r
426 * @param {eventObject} e The event object\r
427 * @param {Object} data The event data\r
428 */\r
b41a381f 429 onChannelList: function (e, data) {\r
dde5dcd9 430 kiwi.front.cache.list.addChannel(data.chans);\r
b41a381f 431 },\r
5a29866a
JA
432 /**\r
433 * Handles the channelListEnd event\r
434 * @param {eventObject} e The event object\r
435 * @param {Object} data The event data\r
436 */\r
b41a381f 437 onChannelListEnd: function (e, data) {\r
dde5dcd9
JA
438 kiwi.front.cache.list.show();\r
439 console.profileEnd();\r
b41a381f
D
440 },\r
441\r
5a29866a
JA
442 /**\r
443 * Handles the banList event\r
444 * @param {eventObject} e The event object\r
445 * @param {Object} data The event data\r
446 */\r
936eabe7
JA
447 onBanList: function (e, data) {\r
448 },\r
449\r
5a29866a
JA
450 /**\r
451 * Handles the banListEnd event\r
452 * @param {eventObject} e The event object\r
453 * @param {Object} data The event data\r
454 */\r
936eabe7
JA
455 onBanListEnd: function (e, data) {\r
456 },\r
b41a381f 457\r
5a29866a
JA
458 /**\r
459 * Handles the join event\r
460 * @param {eventObject} e The event object\r
461 * @param {Object} data The event data\r
462 */\r
b41a381f 463 onJoin: function (e, data) {\r
bb6a9775 464 var chan = kiwi.channels.getByName(data.channel);\r
54a2a4e1
JA
465 if (!chan) {\r
466 chan = new kiwi.model.Channel({"name": data.channel.toLowerCase()});\r
bb6a9775 467 kiwi.channels.add(chan);\r
ce119b06 468 // No need to add ourselves to the MemberList as RPL_NAMESREPLY will be next\r
bb6a9775 469 chan.view.show();\r
54a2a4e1 470 } else {\r
ce119b06 471 chan.get("members").add(new kiwi.model.Member({"nick": data.nick, "modes": [], "ident": data.ident, "hostname": data.hostname}));\r
b41a381f 472 }\r
b41a381f 473 },\r
5a29866a
JA
474 /**\r
475 * Handles the part event\r
476 * @param {eventObject} e The event object\r
477 * @param {Object} data The event data\r
478 */\r
b41a381f 479 onPart: function (e, data) {\r
ce119b06 480 var chan, members, cid;\r
bb6a9775 481 chan = kiwi.channels.getByName(data.channel);\r
54a2a4e1 482 if (chan) {\r
b41a381f 483 if (data.nick === kiwi.gateway.nick) {\r
54a2a4e1
JA
484 chan.trigger("close");\r
485 } else {\r
54a2a4e1 486 members = chan.get("members");\r
ce119b06 487 members.remove(members.detect(function (m) {\r
54a2a4e1 488 return data.nick === m.get("nick");\r
ce119b06 489 }).cid, {"message": data.message})\r
b41a381f 490 }\r
b41a381f
D
491 }\r
492 },\r
5a29866a
JA
493 /**\r
494 * Handles the kick event\r
495 * @param {eventObject} e The event object\r
496 * @param {Object} data The event data\r
497 */\r
b41a381f 498 onKick: function (e, data) {\r
bb6a9775
JA
499 var panel = kiwi.channels.getByName(data.channel);\r
500 if (panel) {\r
501 // If this is us, close the panel\r
502 if (data.kicked === kiwi.gateway.nick) {\r
503 kiwi.channels.remove(panel);\r
504 kiwi.channels.server.addMsg(null, ' ', '=== You have been kicked from ' + data.channel + '. ' + data.message, 'status kick');\r
505 return;\r
506 }\r
507\r
508 panel.addMsg(null, ' ', '<-- ' + data.kicked + ' kicked by ' + data.nick + '(' + data.message + ')', 'action kick', 'color:#990000;');\r
509 panel.userlist.removeUser(data.nick);\r
510 }\r
b41a381f 511 },\r
5a29866a
JA
512 /**\r
513 * Handles the nick event\r
514 * @param {eventObject} e The event object\r
515 * @param {Object} data The event data\r
516 */\r
b41a381f 517 onNick: function (e, data) {\r
bb6a9775
JA
518 if (data.nick === kiwi.gateway.nick) {\r
519 kiwi.gateway.nick = data.newnick;\r
520 kiwi.front.ui.doLayout();\r
521 }\r
b41a381f 522\r
bb6a9775
JA
523 kiwi.channels.each(function (panel) {\r
524 if (panel.isChannel) {\r
525 var member = panel.get("members").getByNick(data.nick);\r
526 if (member) {\r
527 member.set({"nick": data.newnick});\r
528 panel.addMsg(null, ' ', '=== ' + data.nick + ' is now known as ' + data.newnick, 'action changenick');\r
529 }\r
530 }\r
531 });\r
b41a381f 532 },\r
5a29866a
JA
533 /**\r
534 * Handles the quit event\r
535 * @param {eventObject} e The event object\r
536 * @param {Object} data The event data\r
537 */\r
b41a381f 538 onQuit: function (e, data) {\r
ce119b06 539 var chan, members, member;\r
bb6a9775 540 kiwi.channels.forEach(function (chan) {\r
ce119b06
JA
541 members = chan.get("members");\r
542 member = members.detect(function (m) {\r
543 return data.nick === m.get("nick");\r
544 });\r
545 if (member) {\r
546 members.trigger("quit", {"member": member, "message": data.message});\r
547 members.remove(member.cid);\r
548 }\r
549 });\r
b41a381f 550 },\r
5a29866a
JA
551 /**\r
552 * Handles the channelRedirect event\r
553 * @param {eventObject} e The event object\r
554 * @param {Object} data The event data\r
555 */\r
b41a381f 556 onChannelRedirect: function (e, data) {\r
54a2a4e1
JA
557 //var tab = Tabview.getTab(data.from);\r
558 //tab.close();\r
559 //tab = new Tabview(data.to);\r
560 //tab.addMsg(null, ' ', '=== Redirected from ' + data.from, 'action');\r
b41a381f
D
561 },\r
562\r
5a29866a
JA
563 /**\r
564 * Handles the IRCError event\r
565 * @param {eventObject} e The event object\r
566 * @param {Object} data The event data\r
567 */\r
b41a381f 568 onIRCError: function (e, data) {\r
54a2a4e1 569 /*var t_view,\r
b41a381f
D
570 tab = Tabview.getTab(data.channel);\r
571 if (data.channel !== undefined && tab) {\r
572 t_view = data.channel;\r
573 } else {\r
574 t_view = 'server';\r
575 tab = Tabview.getServerTab();\r
576 }\r
577\r
578 switch (data.error) {\r
579 case 'banned_from_channel':\r
580 tab.addMsg(null, ' ', '=== You are banned from ' + data.channel + '. ' + data.reason, 'status');\r
581 if (t_view !== 'server') {\r
582 tab.safe_to_close = true;\r
583 }\r
584 break;\r
585 case 'bad_channel_key':\r
586 tab.addMsg(null, ' ', '=== Bad channel key for ' + data.channel, 'status');\r
587 if (t_view !== 'server') {\r
588 tab.safe_to_close = true;\r
589 }\r
590 break;\r
591 case 'invite_only_channel':\r
592 tab.addMsg(null, ' ', '=== ' + data.channel + ' is invite only.', 'status');\r
593 if (t_view !== 'server') {\r
dde5dcd9 594 tab.safe_to_close = true;\r
b41a381f
D
595 }\r
596 break;\r
597 case 'channel_is_full':\r
598 tab.addMsg(null, ' ', '=== ' + data.channel + ' is full.', 'status');\r
599 if (t_view !== 'server') {\r
600 tab.safe_to_close = true;\r
601 }\r
602 break;\r
603 case 'chanop_privs_needed':\r
604 tab.addMsg(null, ' ', '=== ' + data.reason, 'status');\r
605 break;\r
606 case 'no_such_nick':\r
607 Tabview.getServerTab().addMsg(null, ' ', '=== ' + data.nick + ': ' + data.reason, 'status');\r
608 break;\r
609 case 'nickname_in_use':\r
610 Tabview.getServerTab().addMsg(null, ' ', '=== The nickname ' + data.nick + ' is already in use. Please select a new nickname', 'status');\r
3586a76e 611 kiwi.front.ui.showChangeNick('That nick is already taken');\r
b41a381f
D
612 break;\r
613 default:\r
614 // We don't know what data contains, so don't do anything with it.\r
af979742 615 console.log(e, data);\r
54a2a4e1 616 }*/\r
b41a381f
D
617 },\r
618\r
619\r
620\r
621\r
622\r
623\r
624\r
5a29866a
JA
625 /**\r
626 * Handles the sync event\r
627 * @param {eventObject} e The event object\r
628 * @param {Object} data The event data\r
629 */\r
b41a381f
D
630 onSync: function (e, data) {\r
631 // Set any settings\r
632 if (data.nick !== undefined) {\r
633 kiwi.gateway.nick = data.nick;\r
634 }\r
635\r
636 // Add the tabviews\r
637 if (data.tabviews !== undefined) {\r
638 _.each(data.tabviews, function (tab) {\r
639 var newTab;\r
640 if (!Tabview.tabExists(tab.name)) {\r
641 newTab = new Tabview(kiwi.gateway.channel_prefix + tab.name);\r
642\r
643 if (tab.userlist !== undefined) {\r
644 kiwi.front.events.onUserList({'channel': kiwi.gateway.channel_prefix + tab.name, 'users': tab.userlist.getUsers(false)});\r
645 }\r
646 }\r
647 });\r
648 }\r
649\r
3586a76e 650 kiwi.front.ui.doLayout();\r
bfdeb872 651 }\r
b41a381f
D
652\r
653\r
bfdeb872 654};