Second IRC connection via /server fix
[KiwiIRC.git] / client / src / models / newconnection.js
1 _kiwi.model.NewConnection = Backbone.Collection.extend({
2 initialize: function() {
3 this.view = new _kiwi.view.ServerSelect();
4
5 this.view.bind('server_connect', this.onMakeConnection, this);
6
7 },
8
9
10 onMakeConnection: function(new_connection_event) {
11 var that = this,
12 transport_path = '',
13 auto_connect_details = new_connection_event;
14
15 this.view.networkConnecting();
16
17 // If not connected already, connect then send the IRC connect info
18 if (!_kiwi.gateway.isConnected()) {
19 _kiwi.gateway.set('kiwi_server', _kiwi.app.kiwi_server);
20 _kiwi.gateway.connect(function() {
21 that.makeConnection(new_connection_event);
22 });
23
24 } else {
25 this.makeConnection(new_connection_event);
26 }
27
28
29 },
30
31
32 onKiwiServerNotFound: function() {
33 this.view.showError();
34 },
35
36
37 makeConnection: function(new_connection_event) {
38 var that = this;
39
40 this.connect_details = new_connection_event;
41
42 _kiwi.gateway.newConnection({
43 nick: new_connection_event.nick,
44 host: new_connection_event.server,
45 port: new_connection_event.port,
46 ssl: new_connection_event.ssl,
47 password: new_connection_event.password,
48 options: new_connection_event.options
49 }, function(err, network) {
50 that.onNewNetwork(err, network);
51 });
52 },
53
54
55 onNewNetwork: function(err, network) {
56 // Show any errors if given
57 if (err) {
58 this.view.showError(err);
59 }
60
61 if (network && this.connect_details) {
62 network.auto_join = {
63 channel: this.connect_details.channel,
64 key: this.connect_details.channel_key
65 };
66 }
67
68
69 // Show the server panel if this is our first network
70 if (network && network.get('connection_id') === 0) {
71 network.panels.server.view.show();
72 }
73 }
74 });