Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/candy-chat/candy.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Langfeld <ben@langfeld.me>2015-08-30 01:31:21 +0300
committerBen Langfeld <ben@langfeld.me>2015-09-03 23:47:45 +0300
commit12e89e23e6989a074be19f5a59cc89d541612a43 (patch)
tree3d0ab62b37ad49aec858b5da522057dd134c731e
parent53c8d31ad2e0e86439e3f4fdac933a892b90def7 (diff)
Use Webpack for packagingfeature/es6-modules
With Babel for ES6 imports/exports
-rw-r--r--.jshintrc3
-rw-r--r--Gruntfile.js47
-rw-r--r--package.json7
-rw-r--r--src/candy.js16
-rw-r--r--src/core.js26
-rw-r--r--src/core/action.js11
-rw-r--r--src/core/chatRoom.js24
-rw-r--r--src/core/chatRoster.js20
-rw-r--r--src/core/chatUser.js73
-rw-r--r--src/core/contact.js35
-rw-r--r--src/core/event.js184
-rw-r--r--src/util.js6
-rw-r--r--src/view.js29
-rw-r--r--src/view/observer.js4
-rw-r--r--src/view/pane/chat.js45
-rw-r--r--src/view/pane/message.js30
-rw-r--r--src/view/pane/privateRoom.js44
-rw-r--r--src/view/pane/room.js105
-rw-r--r--src/view/pane/roster.js48
-rw-r--r--src/view/pane/window.js13
-rw-r--r--src/view/template.js6
-rw-r--r--src/view/translation.js4
-rw-r--r--tests/candy/unit/candy.js2
-rw-r--r--tests/candy/unit/util.js4
24 files changed, 452 insertions, 334 deletions
diff --git a/.jshintrc b/.jshintrc
index 6a2ea00..45b36fd 100644
--- a/.jshintrc
+++ b/.jshintrc
@@ -10,5 +10,6 @@
"trailing": true,
"maxdepth": 5,
"laxcomma": true,
- "browser": true
+ "browser": true,
+ "esnext": true
}
diff --git a/Gruntfile.js b/Gruntfile.js
index d8a253e..072bfc4 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -24,29 +24,31 @@ module.exports = function(grunt) {
]
}
},
- uglify: {
- bundle: {
- files: {
- 'candy.bundle.js': [
- 'src/candy.js', 'src/core.js', 'src/view.js',
- 'src/util.js', 'src/core/action.js',
- 'src/core/chatRoom.js', 'src/core/chatRoster.js',
- 'src/core/chatUser.js', 'src/core/contact.js',
- 'src/core/event.js', 'src/view/observer.js',
- 'src/view/pane/chat.js', 'src/view/pane/message.js',
- 'src/view/pane/privateRoom.js', 'src/view/pane/room.js',
- 'src/view/pane/roster.js', 'src/view/pane/window.js',
- 'src/view/template.js', 'src/view/translation.js'
- ]
+ webpack: {
+ all: {
+ entry: './src/candy.js',
+ output: {
+ path: ".",
+ filename: "candy.bundle.js",
+ libraryTarget: "var",
+ library: "Candy"
},
- options: {
- sourceMap: true,
- mangle: false,
- compress: false,
- beautify: true,
- preserveComments: 'all'
+ externals: {
+ "jquery": "jQuery",
+ "strophe": "Strophe",
+ "mustache": "Mustache"
+ },
+ module: {
+ loaders: [
+ {
+ test: /.*/,
+ loader: 'babel-loader'
+ }
+ ]
}
},
+ },
+ uglify: {
min: {
files: {
'candy.min.js': ['candy.bundle.js']
@@ -92,7 +94,7 @@ module.exports = function(grunt) {
},
bundle: {
files: ['src/**/*.js'],
- tasks: ['todo:src', 'jshint', 'uglify:bundle', 'uglify:min', 'notify:bundle', 'intern:unit']
+ tasks: ['todo:src', 'jshint', 'webpack:all', 'uglify:min', 'notify:bundle', 'intern:unit']
},
libs: {
files: ['bower_components/*/**/*.js', 'vendor_libs/*/**/*.js'],
@@ -258,10 +260,11 @@ module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-clear');
grunt.loadNpmTasks('grunt-coveralls');
grunt.loadNpmTasks('grunt-todo');
+ grunt.loadNpmTasks('grunt-webpack');
grunt.registerTask('test', ['intern:all']);
grunt.registerTask('ci', ['todo', 'jshint', 'build', 'intern:all', 'coveralls:all', 'docs']);
- grunt.registerTask('build', ['uglify:libs', 'uglify:libs-min', 'uglify:bundle', 'uglify:min']);
+ grunt.registerTask('build', ['uglify:libs', 'uglify:libs-min', 'webpack:all', 'uglify:min']);
grunt.registerTask('default', [
'jshint', 'build', 'notify:default', 'intern:unit'
]);
diff --git a/package.json b/package.json
index f769158..f2d1fee 100644
--- a/package.json
+++ b/package.json
@@ -39,6 +39,8 @@
},
"homepage": "http://candy-chat.github.io/candy/",
"devDependencies": {
+ "babel-core": "^5.8.23",
+ "babel-loader": "^5.3.2",
"grunt": "^0.4.5",
"grunt-clear": "^0.2.1",
"grunt-contrib-clean": "^0.5.0",
@@ -54,10 +56,13 @@
"grunt-prompt": "^1.3.0",
"grunt-sync-pkg": "^0.1.2",
"grunt-todo": "~0.4.0",
+ "grunt-webpack": "^1.0.11",
"intern": "^3.0.0",
"jshint-stylish": "^0.2.0",
"lolex": "^1.2.0",
"sinon": "^1.10.3",
- "sinon-chai": "^2.5.0"
+ "sinon-chai": "^2.5.0",
+ "webpack": "^1.12.0",
+ "webpack-dev-server": "^1.10.1"
}
}
diff --git a/src/candy.js b/src/candy.js
index c7b2bc0..e4a338e 100644
--- a/src/candy.js
+++ b/src/candy.js
@@ -7,6 +7,10 @@
/* global jQuery */
+import Core from './core.js';
+import Util from './util.js';
+import View from './view.js';
+
/** Class: Candy
* Candy base class for initalizing the view and the core
*
@@ -40,11 +44,17 @@ var Candy = (function(self, $) {
*/
self.init = function(service, options) {
if (!options.viewClass) {
- options.viewClass = self.View;
+ options.viewClass = View;
}
options.viewClass.init($('#candy'), options.view);
- self.Core.init(service, options.core);
+ Core.init(service, options.core);
};
return self;
-}(Candy || {}, jQuery));
+}({}, jQuery));
+
+Candy.Core = Core;
+Candy.Util = Util;
+Candy.View = View;
+
+export default Candy;
diff --git a/src/core.js b/src/core.js
index c40d29b..40a2f3b 100644
--- a/src/core.js
+++ b/src/core.js
@@ -7,6 +7,13 @@
/* global Candy, window, Strophe, jQuery */
+import Action from './core/action.js';
+import ChatRoom from './core/chatRoom.js';
+import ChatRoster from './core/chatRoster.js';
+import ChatUser from './core/chatUser.js';
+import Contact from './core/contact.js';
+import Event from './core/event.js';
+
/** Class: Candy.Core
* Candy Chat Core
*
@@ -15,7 +22,7 @@
* (Strophe) Strophe - Strophe JS
* (jQuery) $ - jQuery
*/
-Candy.Core = (function(self, Strophe, $) {
+var Core = (function(self, Strophe, $) {
/** PrivateVariable: _connection
* Strophe connection
*/
@@ -102,7 +109,7 @@ Candy.Core = (function(self, Strophe, $) {
* JID resource to use when connecting to the server.
* Specify `''` (an empty string) to request a random resource.
*/
- resource: Candy.about.name,
+ resource: undefined,
/** Boolean: useParticipantRealJid
* If set true, will direct one-on-one chats to participant's real JID rather than their MUC jid
*/
@@ -277,6 +284,10 @@ Candy.Core = (function(self, Strophe, $) {
_anonymousConnection = !_anonymousConnection ? jidOrHost && jidOrHost.indexOf("@") < 0 : true;
+ if(_options.resource === undefined) {
+ _options.resource = Candy.about.name;
+ }
+
if(jidOrHost && password) {
// Respect the resource, if provided
var resource = Strophe.getResourceFromJid(jidOrHost);
@@ -525,4 +536,13 @@ Candy.Core = (function(self, Strophe, $) {
};
return self;
-}(Candy.Core || {}, Strophe, jQuery));
+}({}, Strophe, jQuery));
+
+Core.Action = Action;
+Core.ChatRoom = ChatRoom;
+Core.ChatRoster = ChatRoster;
+Core.ChatUser = ChatUser;
+Core.Contact = Contact;
+Core.Event = Event;
+
+export default Core;
diff --git a/src/core/action.js b/src/core/action.js
index 966107b..1b4b467 100644
--- a/src/core/action.js
+++ b/src/core/action.js
@@ -5,7 +5,10 @@
*/
'use strict';
-/* global Candy, $iq, navigator, Candy, $pres, Strophe, jQuery, $msg */
+/* global Candy, $iq, navigator, $pres, $msg */
+
+import $ from 'jquery';
+import Strophe from 'strophe';
/** Class: Candy.Core.Action
* Chat Actions (basicly a abstraction of Jabber commands)
@@ -15,7 +18,7 @@
* (Strophe) Strophe - Strophe
* (jQuery) $ - jQuery
*/
-Candy.Core.Action = (function(self, Strophe, $) {
+var Action = (function(self) {
/** Class: Candy.Core.Action.Jabber
* Jabber actions
*/
@@ -431,4 +434,6 @@ Candy.Core.Action = (function(self, Strophe, $) {
};
return self;
-}(Candy.Core.Action || {}, Strophe, jQuery));
+}({}));
+
+export default Action;
diff --git a/src/core/chatRoom.js b/src/core/chatRoom.js
index fe4cb41..d555b38 100644
--- a/src/core/chatRoom.js
+++ b/src/core/chatRoom.js
@@ -5,7 +5,9 @@
*/
'use strict';
-/* global Candy, Strophe */
+import Strophe from 'strophe';
+
+import Core from '../core.js';
/** Class: Candy.Core.ChatRoom
* Candy Chat Room
@@ -13,7 +15,7 @@
* Parameters:
* (String) roomJid - Room jid
*/
-Candy.Core.ChatRoom = function(roomJid) {
+var ChatRoom = function(roomJid) {
/** Object: room
* Object containing roomJid and name.
*/
@@ -30,7 +32,7 @@ Candy.Core.ChatRoom = function(roomJid) {
/** Variable: Roster
* Candy.Core.ChatRoster instance
*/
- this.roster = new Candy.Core.ChatRoster();
+ this.roster = new Core.ChatRoster();
};
/** Function: setUser
@@ -39,7 +41,7 @@ Candy.Core.ChatRoom = function(roomJid) {
* Parameters:
* (Candy.Core.ChatUser) user - Chat user
*/
-Candy.Core.ChatRoom.prototype.setUser = function(user) {
+ChatRoom.prototype.setUser = function(user) {
this.user = user;
};
@@ -49,7 +51,7 @@ Candy.Core.ChatRoom.prototype.setUser = function(user) {
* Returns:
* (Object) - Candy.Core.ChatUser instance or null
*/
-Candy.Core.ChatRoom.prototype.getUser = function() {
+ChatRoom.prototype.getUser = function() {
return this.user;
};
@@ -59,7 +61,7 @@ Candy.Core.ChatRoom.prototype.getUser = function() {
* Returns:
* (String) - Room jid
*/
-Candy.Core.ChatRoom.prototype.getJid = function() {
+ChatRoom.prototype.getJid = function() {
return this.room.jid;
};
@@ -69,7 +71,7 @@ Candy.Core.ChatRoom.prototype.getJid = function() {
* Parameters:
* (String) name - Room name
*/
-Candy.Core.ChatRoom.prototype.setName = function(name) {
+ChatRoom.prototype.setName = function(name) {
this.room.name = name;
};
@@ -79,7 +81,7 @@ Candy.Core.ChatRoom.prototype.setName = function(name) {
* Returns:
* (String) - Room name
*/
-Candy.Core.ChatRoom.prototype.getName = function() {
+ChatRoom.prototype.getName = function() {
return this.room.name;
};
@@ -89,7 +91,7 @@ Candy.Core.ChatRoom.prototype.getName = function() {
* Parameters:
* (Candy.Core.ChatRoster) roster - Chat roster
*/
-Candy.Core.ChatRoom.prototype.setRoster = function(roster) {
+ChatRoom.prototype.setRoster = function(roster) {
this.roster = roster;
};
@@ -99,6 +101,8 @@ Candy.Core.ChatRoom.prototype.setRoster = function(roster) {
* Returns
* (Candy.Core.ChatRoster) - instance
*/
-Candy.Core.ChatRoom.prototype.getRoster = function() {
+ChatRoom.prototype.getRoster = function() {
return this.roster;
};
+
+export default ChatRoom;
diff --git a/src/core/chatRoster.js b/src/core/chatRoster.js
index d90a17f..a0e0ab8 100644
--- a/src/core/chatRoster.js
+++ b/src/core/chatRoster.js
@@ -5,12 +5,10 @@
*/
'use strict';
-/* global Candy */
-
-/** Class: Candy.Core.ChatRoster
+/** Class: ChatRoster
* Chat Roster
*/
-Candy.Core.ChatRoster = function () {
+var ChatRoster = function () {
/** Object: items
* Roster items
*/
@@ -21,9 +19,9 @@ Candy.Core.ChatRoster = function () {
* Add user to roster
*
* Parameters:
- * (Candy.Core.ChatUser) user - User to add
+ * (ChatUser) user - User to add
*/
-Candy.Core.ChatRoster.prototype.add = function(user) {
+ChatRoster.prototype.add = function(user) {
this.items[user.getJid()] = user;
};
@@ -33,7 +31,7 @@ Candy.Core.ChatRoster.prototype.add = function(user) {
* Parameters:
* (String) jid - User jid
*/
-Candy.Core.ChatRoster.prototype.remove = function(jid) {
+ChatRoster.prototype.remove = function(jid) {
delete this.items[jid];
};
@@ -44,9 +42,9 @@ Candy.Core.ChatRoster.prototype.remove = function(jid) {
* (String) jid - User jid
*
* Returns:
- * (Candy.Core.ChatUser) - User
+ * (ChatUser) - User
*/
-Candy.Core.ChatRoster.prototype.get = function(jid) {
+ChatRoster.prototype.get = function(jid) {
return this.items[jid];
};
@@ -56,6 +54,8 @@ Candy.Core.ChatRoster.prototype.get = function(jid) {
* Returns:
* (Object) - all roster items
*/
-Candy.Core.ChatRoster.prototype.getAll = function() {
+ChatRoster.prototype.getAll = function() {
return this.items;
};
+
+export default ChatRoster;
diff --git a/src/core/chatUser.js b/src/core/chatUser.js
index 2014762..55bb8c8 100644
--- a/src/core/chatUser.js
+++ b/src/core/chatUser.js
@@ -5,12 +5,15 @@
*/
'use strict';
-/* global Candy, Strophe */
+import Strophe from 'strophe';
-/** Class: Candy.Core.ChatUser
+import Core from '../core.js';
+import Util from '../util.js';
+
+/** Class: ChatUser
* Chat User
*/
-Candy.Core.ChatUser = function(jid, nick, affiliation, role, realJid) {
+var ChatUser = function(jid, nick, affiliation, role, realJid) {
/** Constant: ROLE_MODERATOR
* Moderator role
*/
@@ -48,14 +51,14 @@ Candy.Core.ChatUser = function(jid, nick, affiliation, role, realJid) {
* Gets an unescaped user jid
*
* See:
- * <Candy.Util.unescapeJid>
+ * <Util.unescapeJid>
*
* Returns:
* (String) - jid
*/
-Candy.Core.ChatUser.prototype.getJid = function() {
+ChatUser.prototype.getJid = function() {
if(this.data.jid) {
- return Candy.Util.unescapeJid(this.data.jid);
+ return Util.unescapeJid(this.data.jid);
}
return;
};
@@ -64,13 +67,13 @@ Candy.Core.ChatUser.prototype.getJid = function() {
* Escapes the user's jid (node & resource get escaped)
*
* See:
- * <Candy.Util.escapeJid>
+ * <Util.escapeJid>
*
* Returns:
* (String) - escaped jid
*/
-Candy.Core.ChatUser.prototype.getEscapedJid = function() {
- return Candy.Util.escapeJid(this.data.jid);
+ChatUser.prototype.getEscapedJid = function() {
+ return Util.escapeJid(this.data.jid);
};
/** Function: setJid
@@ -79,7 +82,7 @@ Candy.Core.ChatUser.prototype.getEscapedJid = function() {
* Parameters:
* (String) jid - New Jid
*/
-Candy.Core.ChatUser.prototype.setJid = function(jid) {
+ChatUser.prototype.setJid = function(jid) {
this.data.jid = jid;
};
@@ -87,14 +90,14 @@ Candy.Core.ChatUser.prototype.setJid = function(jid) {
* Gets an unescaped real jid if known
*
* See:
- * <Candy.Util.unescapeJid>
+ * <Util.unescapeJid>
*
* Returns:
* (String) - realJid
*/
-Candy.Core.ChatUser.prototype.getRealJid = function() {
+ChatUser.prototype.getRealJid = function() {
if(this.data.realJid) {
- return Candy.Util.unescapeJid(this.data.realJid);
+ return Util.unescapeJid(this.data.realJid);
}
return;
};
@@ -105,7 +108,7 @@ Candy.Core.ChatUser.prototype.getRealJid = function() {
* Returns:
* (String) - nick
*/
-Candy.Core.ChatUser.prototype.getNick = function() {
+ChatUser.prototype.getNick = function() {
return Strophe.unescapeNode(this.data.nick);
};
@@ -115,7 +118,7 @@ Candy.Core.ChatUser.prototype.getNick = function() {
* Parameters:
* (String) nick - New nick
*/
-Candy.Core.ChatUser.prototype.setNick = function(nick) {
+ChatUser.prototype.setNick = function(nick) {
this.data.nick = nick;
};
@@ -125,7 +128,7 @@ Candy.Core.ChatUser.prototype.setNick = function(nick) {
* Returns:
* (String) - name
*/
-Candy.Core.ChatUser.prototype.getName = function() {
+ChatUser.prototype.getName = function() {
var contact = this.getContact();
if (contact) {
return contact.getName();
@@ -140,7 +143,7 @@ Candy.Core.ChatUser.prototype.getName = function() {
* Returns:
* (String) - role
*/
-Candy.Core.ChatUser.prototype.getRole = function() {
+ChatUser.prototype.getRole = function() {
return this.data.role;
};
@@ -150,7 +153,7 @@ Candy.Core.ChatUser.prototype.getRole = function() {
* Parameters:
* (String) role - Role
*/
-Candy.Core.ChatUser.prototype.setRole = function(role) {
+ChatUser.prototype.setRole = function(role) {
this.data.role = role;
};
@@ -160,7 +163,7 @@ Candy.Core.ChatUser.prototype.setRole = function(role) {
* Parameters:
* (String) affiliation - new affiliation
*/
-Candy.Core.ChatUser.prototype.setAffiliation = function(affiliation) {
+ChatUser.prototype.setAffiliation = function(affiliation) {
this.data.affiliation = affiliation;
};
@@ -170,7 +173,7 @@ Candy.Core.ChatUser.prototype.setAffiliation = function(affiliation) {
* Returns:
* (String) - affiliation
*/
-Candy.Core.ChatUser.prototype.getAffiliation = function() {
+ChatUser.prototype.getAffiliation = function() {
return this.data.affiliation;
};
@@ -180,7 +183,7 @@ Candy.Core.ChatUser.prototype.getAffiliation = function() {
* Returns:
* (Boolean) - true if user has role moderator or affiliation owner
*/
-Candy.Core.ChatUser.prototype.isModerator = function() {
+ChatUser.prototype.isModerator = function() {
return this.getRole() === this.ROLE_MODERATOR || this.getAffiliation() === this.AFFILIATION_OWNER;
};
@@ -196,7 +199,7 @@ Candy.Core.ChatUser.prototype.isModerator = function() {
* Returns:
* (Array) - Current privacy list.
*/
-Candy.Core.ChatUser.prototype.addToOrRemoveFromPrivacyList = function(list, jid) {
+ChatUser.prototype.addToOrRemoveFromPrivacyList = function(list, jid) {
if (!this.data.privacyLists[list]) {
this.data.privacyLists[list] = [];
}
@@ -218,7 +221,7 @@ Candy.Core.ChatUser.prototype.addToOrRemoveFromPrivacyList = function(list, jid)
* Returns:
* (Array) - Privacy List
*/
-Candy.Core.ChatUser.prototype.getPrivacyList = function(list) {
+ChatUser.prototype.getPrivacyList = function(list) {
if (!this.data.privacyLists[list]) {
this.data.privacyLists[list] = [];
}
@@ -231,7 +234,7 @@ Candy.Core.ChatUser.prototype.getPrivacyList = function(list) {
* Parameters:
* (Object) lists - List object
*/
-Candy.Core.ChatUser.prototype.setPrivacyLists = function(lists) {
+ChatUser.prototype.setPrivacyLists = function(lists) {
this.data.privacyLists = lists;
};
@@ -245,7 +248,7 @@ Candy.Core.ChatUser.prototype.setPrivacyLists = function(lists) {
* Returns:
* (Boolean)
*/
-Candy.Core.ChatUser.prototype.isInPrivacyList = function(list, jid) {
+ChatUser.prototype.isInPrivacyList = function(list, jid) {
if (!this.data.privacyLists[list]) {
return false;
}
@@ -258,7 +261,7 @@ Candy.Core.ChatUser.prototype.isInPrivacyList = function(list, jid) {
* Parameter:
* (Object) data - Object containing custom data
*/
-Candy.Core.ChatUser.prototype.setCustomData = function(data) {
+ChatUser.prototype.setCustomData = function(data) {
this.data.customData = data;
};
@@ -268,7 +271,7 @@ Candy.Core.ChatUser.prototype.setCustomData = function(data) {
* Returns:
* (Object) - Object containing custom data
*/
-Candy.Core.ChatUser.prototype.getCustomData = function() {
+ChatUser.prototype.getCustomData = function() {
return this.data.customData;
};
@@ -278,7 +281,7 @@ Candy.Core.ChatUser.prototype.getCustomData = function() {
* Parameters:
* (String) previousNick - the previous nickname
*/
-Candy.Core.ChatUser.prototype.setPreviousNick = function(previousNick) {
+ChatUser.prototype.setPreviousNick = function(previousNick) {
this.data.previousNick = previousNick;
};
@@ -288,7 +291,7 @@ Candy.Core.ChatUser.prototype.setPreviousNick = function(previousNick) {
* Returns:
* (String) - previous nickname
*/
-Candy.Core.ChatUser.prototype.getPreviousNick = function() {
+ChatUser.prototype.getPreviousNick = function() {
return this.data.previousNick;
};
@@ -296,10 +299,10 @@ Candy.Core.ChatUser.prototype.getPreviousNick = function() {
* Gets the contact matching this user from our roster
*
* Returns:
- * (Candy.Core.Contact) - contact from roster
+ * (.Contact) - contact from roster
*/
-Candy.Core.ChatUser.prototype.getContact = function() {
- return Candy.Core.getRoster().get(Strophe.getBareJidFromJid(this.data.realJid));
+ChatUser.prototype.getContact = function() {
+ return Core.getRoster().get(Strophe.getBareJidFromJid(this.data.realJid));
};
/** Function: setStatus
@@ -308,7 +311,7 @@ Candy.Core.ChatUser.prototype.getContact = function() {
* Parameters:
* (String) status - the new status
*/
-Candy.Core.ChatUser.prototype.setStatus = function(status) {
+ChatUser.prototype.setStatus = function(status) {
this.data.status = status;
};
@@ -318,6 +321,8 @@ Candy.Core.ChatUser.prototype.setStatus = function(status) {
* Returns:
* (String) - status
*/
-Candy.Core.ChatUser.prototype.getStatus = function() {
+ChatUser.prototype.getStatus = function() {
return this.data.status;
};
+
+export default ChatUser;
diff --git a/src/core/contact.js b/src/core/contact.js
index 2d8a4d8..16d225e 100644
--- a/src/core/contact.js
+++ b/src/core/contact.js
@@ -5,12 +5,15 @@
*/
'use strict';
-/* global Candy, Strophe, $ */
+import $ from 'jquery';
+import Strophe from 'strophe';
-/** Class: Candy.Core.Contact
+import Util from '../util.js';
+
+/** Class: Contact
* Roster contact
*/
-Candy.Core.Contact = function(stropheRosterItem) {
+var Contact = function(stropheRosterItem) {
/** Object: data
* Strophe Roster plugin item model containing:
* - jid
@@ -25,14 +28,14 @@ Candy.Core.Contact = function(stropheRosterItem) {
* Gets an unescaped user jid
*
* See:
- * <Candy.Util.unescapeJid>
+ * <Util.unescapeJid>
*
* Returns:
* (String) - jid
*/
-Candy.Core.Contact.prototype.getJid = function() {
+Contact.prototype.getJid = function() {
if(this.data.jid) {
- return Candy.Util.unescapeJid(this.data.jid);
+ return Util.unescapeJid(this.data.jid);
}
return;
};
@@ -41,13 +44,13 @@ Candy.Core.Contact.prototype.getJid = function() {
* Escapes the user's jid (node & resource get escaped)
*
* See:
- * <Candy.Util.escapeJid>
+ * <Util.escapeJid>
*
* Returns:
* (String) - escaped jid
*/
-Candy.Core.Contact.prototype.getEscapedJid = function() {
- return Candy.Util.escapeJid(this.data.jid);
+Contact.prototype.getEscapedJid = function() {
+ return Util.escapeJid(this.data.jid);
};
/** Function: getName
@@ -56,7 +59,7 @@ Candy.Core.Contact.prototype.getEscapedJid = function() {
* Returns:
* (String) - name
*/
-Candy.Core.Contact.prototype.getName = function() {
+Contact.prototype.getName = function() {
if (!this.data.name) {
return this.getJid();
}
@@ -69,7 +72,7 @@ Candy.Core.Contact.prototype.getName = function() {
* Returns:
* (String) - name
*/
-Candy.Core.Contact.prototype.getNick = Candy.Core.Contact.prototype.getName;
+Contact.prototype.getNick = Contact.prototype.getName;
/** Function: getSubscription
* Gets user subscription
@@ -77,7 +80,7 @@ Candy.Core.Contact.prototype.getNick = Candy.Core.Contact.prototype.getName;
* Returns:
* (String) - subscription
*/
-Candy.Core.Contact.prototype.getSubscription = function() {
+Contact.prototype.getSubscription = function() {
if (!this.data.subscription) {
return 'none';
}
@@ -90,7 +93,7 @@ Candy.Core.Contact.prototype.getSubscription = function() {
* Returns:
* (Array) - groups
*/
-Candy.Core.Contact.prototype.getGroups = function() {
+Contact.prototype.getGroups = function() {
return this.data.groups;
};
@@ -100,7 +103,7 @@ Candy.Core.Contact.prototype.getGroups = function() {
* Returns:
* (String) - aggregate status, one of chat|dnd|available|away|xa|unavailable
*/
-Candy.Core.Contact.prototype.getStatus = function() {
+Contact.prototype.getStatus = function() {
var status = 'unavailable',
self = this,
highestResourcePriority;
@@ -133,7 +136,7 @@ Candy.Core.Contact.prototype.getStatus = function() {
return status;
};
-Candy.Core.Contact.prototype._weightForStatus = function(status) {
+Contact.prototype._weightForStatus = function(status) {
switch (status) {
case 'chat':
case 'dnd':
@@ -149,3 +152,5 @@ Candy.Core.Contact.prototype._weightForStatus = function(status) {
return 5;
}
};
+
+export default Contact;
diff --git a/src/core/event.js b/src/core/event.js
index 9486ede..b2081e8 100644
--- a/src/core/event.js
+++ b/src/core/event.js
@@ -5,17 +5,21 @@
*/
'use strict';
-/* global Candy, Strophe, jQuery */
+/* global Candy */
-/** Class: Candy.Core.Event
+import $ from 'jquery';
+import Strophe from 'strophe';
+
+import Core from '../core.js';
+import Util from '../util.js';
+
+/** Class: Core.Event
* Chat Events
*
* Parameters:
- * (Candy.Core.Event) self - itself
- * (Strophe) Strophe - Strophe
- * (jQuery) $ - jQuery
+ * (Core.Event) self - itself
*/
-Candy.Core.Event = (function(self, Strophe, $) {
+export default (function(self) {
/** Function: Login
* Notify view that the login window should be displayed
*
@@ -35,7 +39,7 @@ Candy.Core.Event = (function(self, Strophe, $) {
$(Candy).triggerHandler('candy:core.login', { presetJid: presetJid } );
};
- /** Class: Candy.Core.Event.Strophe
+ /** Class: Core.Event.Strophe
* Strophe-related events
*/
self.Strophe = {
@@ -49,50 +53,50 @@ Candy.Core.Event = (function(self, Strophe, $) {
* candy:core.chat.connection using {status}
*/
Connect: function(status) {
- Candy.Core.setStropheStatus(status);
+ Core.setStropheStatus(status);
switch(status) {
case Strophe.Status.CONNECTED:
- Candy.Core.log('[Connection] Connected');
- Candy.Core.Action.Jabber.GetJidIfAnonymous();
+ Core.log('[Connection] Connected');
+ Core.Action.Jabber.GetJidIfAnonymous();
/* falls through */
case Strophe.Status.ATTACHED:
- Candy.Core.log('[Connection] Attached');
+ Core.log('[Connection] Attached');
$(Candy).on('candy:core:roster:fetched', function () {
- Candy.Core.Action.Jabber.Presence();
+ Core.Action.Jabber.Presence();
});
- Candy.Core.Action.Jabber.Roster();
- Candy.Core.Action.Jabber.EnableCarbons();
- Candy.Core.Action.Jabber.Autojoin();
- Candy.Core.Action.Jabber.GetIgnoreList();
+ Core.Action.Jabber.Roster();
+ Core.Action.Jabber.EnableCarbons();
+ Core.Action.Jabber.Autojoin();
+ Core.Action.Jabber.GetIgnoreList();
break;
case Strophe.Status.DISCONNECTED:
- Candy.Core.log('[Connection] Disconnected');
+ Core.log('[Connection] Disconnected');
break;
case Strophe.Status.AUTHFAIL:
- Candy.Core.log('[Connection] Authentication failed');
+ Core.log('[Connection] Authentication failed');
break;
case Strophe.Status.CONNECTING:
- Candy.Core.log('[Connection] Connecting');
+ Core.log('[Connection] Connecting');
break;
case Strophe.Status.DISCONNECTING:
- Candy.Core.log('[Connection] Disconnecting');
+ Core.log('[Connection] Disconnecting');
break;
case Strophe.Status.AUTHENTICATING:
- Candy.Core.log('[Connection] Authenticating');
+ Core.log('[Connection] Authenticating');
break;
case Strophe.Status.ERROR:
case Strophe.Status.CONNFAIL:
- Candy.Core.log('[Connection] Failed (' + status + ')');
+ Core.log('[Connection] Failed (' + status + ')');
break;
default:
- Candy.Core.warn('[Connection] Unknown status received:', status);
+ Core.warn('[Connection] Unknown status received:', status);
break;
}
/** Event: candy:core.chat.connection
@@ -105,7 +109,7 @@ Candy.Core.Event = (function(self, Strophe, $) {
}
};
- /** Class: Candy.Core.Event.Jabber
+ /** Class: Core.Event.Jabber
* Jabber related events
*/
self.Jabber = {
@@ -119,8 +123,8 @@ Candy.Core.Event = (function(self, Strophe, $) {
* (Boolean) - true
*/
Version: function(msg) {
- Candy.Core.log('[Jabber] Version');
- Candy.Core.Action.Jabber.Version($(msg));
+ Core.log('[Jabber] Version');
+ Core.Action.Jabber.Version($(msg));
return true;
},
@@ -137,7 +141,7 @@ Candy.Core.Event = (function(self, Strophe, $) {
* (Boolean) - true
*/
Presence: function(msg) {
- Candy.Core.log('[Jabber] Presence');
+ Core.log('[Jabber] Presence');
msg = $(msg);
if(msg.children('x[xmlns^="' + Strophe.NS.MUC + '"]').length > 0) {
if (msg.attr('type') === 'error') {
@@ -176,7 +180,7 @@ Candy.Core.Event = (function(self, Strophe, $) {
/** Event: candy:core.roster.loaded
* Notification of the roster having been loaded from cache
*/
- $(Candy).triggerHandler('candy:core:roster:loaded', {roster: Candy.Core.getRoster()});
+ $(Candy).triggerHandler('candy:core:roster:loaded', {roster: Core.getRoster()});
return true;
},
@@ -199,7 +203,7 @@ Candy.Core.Event = (function(self, Strophe, $) {
/** Event: candy:core.roster.fetched
* Notification of the roster having been fetched
*/
- $(Candy).triggerHandler('candy:core:roster:fetched', {roster: Candy.Core.getRoster()});
+ $(Candy).triggerHandler('candy:core:roster:fetched', {roster: Core.getRoster()});
return true;
},
@@ -224,24 +228,24 @@ Candy.Core.Event = (function(self, Strophe, $) {
}
if (updatedItem.subscription === "remove") {
- var contact = Candy.Core.getRoster().get(updatedItem.jid);
- Candy.Core.getRoster().remove(updatedItem.jid);
+ var contact = Core.getRoster().get(updatedItem.jid);
+ Core.getRoster().remove(updatedItem.jid);
/** Event: candy:core.roster.removed
* Notification of a roster entry having been removed
*
* Parameters:
- * (Candy.Core.Contact) contact - The contact that was removed from the roster
+ * (Core.Contact) contact - The contact that was removed from the roster
*/
$(Candy).triggerHandler('candy:core:roster:removed', {contact: contact});
} else {
- var user = Candy.Core.getRoster().get(updatedItem.jid);
+ var user = Core.getRoster().get(updatedItem.jid);
if (!user) {
user = self.Jabber._addRosterItem(updatedItem);
/** Event: candy:core.roster.added
* Notification of a roster entry having been added
*
* Parameters:
- * (Candy.Core.Contact) contact - The contact that was added
+ * (Core.Contact) contact - The contact that was added
*/
$(Candy).triggerHandler('candy:core:roster:added', {contact: user});
} else {
@@ -249,7 +253,7 @@ Candy.Core.Event = (function(self, Strophe, $) {
* Notification of a roster entry having been updated
*
* Parameters:
- * (Candy.Core.Contact) contact - The contact that was updated
+ * (Core.Contact) contact - The contact that was updated
*/
$(Candy).triggerHandler('candy:core:roster:updated', {contact: user});
}
@@ -259,8 +263,8 @@ Candy.Core.Event = (function(self, Strophe, $) {
},
_addRosterItem: function(item) {
- var user = new Candy.Core.Contact(item);
- Candy.Core.getRoster().add(user);
+ var user = new Core.Contact(item);
+ Core.getRoster().add(user);
return user;
},
@@ -280,12 +284,12 @@ Candy.Core.Event = (function(self, Strophe, $) {
* (Boolean) - true
*/
Bookmarks: function(msg) {
- Candy.Core.log('[Jabber] Bookmarks');
+ Core.log('[Jabber] Bookmarks');
// Autojoin bookmarks
$('conference', msg).each(function() {
var item = $(this);
if(item.attr('autojoin')) {
- Candy.Core.Action.Jabber.Room.Join(item.attr('jid'));
+ Core.Action.Jabber.Room.Join(item.attr('jid'));
}
});
return true;
@@ -303,8 +307,8 @@ Candy.Core.Event = (function(self, Strophe, $) {
* (Boolean) - false to disable the handler after first call.
*/
PrivacyList: function(msg) {
- Candy.Core.log('[Jabber] PrivacyList');
- var currentUser = Candy.Core.getUser();
+ Core.log('[Jabber] PrivacyList');
+ var currentUser = Core.getUser();
msg = $(msg);
if(msg.attr('type') === 'result') {
$('list[name="ignore"] item', msg).each(function() {
@@ -313,7 +317,7 @@ Candy.Core.Event = (function(self, Strophe, $) {
currentUser.addToOrRemoveFromPrivacyList('ignore', item.attr('value'));
}
});
- Candy.Core.Action.Jabber.SetIgnoreListActive();
+ Core.Action.Jabber.SetIgnoreListActive();
return false;
}
return self.Jabber.PrivacyListError(msg);
@@ -331,11 +335,11 @@ Candy.Core.Event = (function(self, Strophe, $) {
* (Boolean) - false to disable the handler after first call.
*/
PrivacyListError: function(msg) {
- Candy.Core.log('[Jabber] PrivacyListError');
+ Core.log('[Jabber] PrivacyListError');
// check if msg says that privacyList doesn't exist
if ($('error[code="404"][type="cancel"] item-not-found', msg)) {
- Candy.Core.Action.Jabber.ResetIgnoreList();
- Candy.Core.Action.Jabber.SetIgnoreListActive();
+ Core.Action.Jabber.ResetIgnoreList();
+ Core.Action.Jabber.SetIgnoreListActive();
}
return false;
},
@@ -354,7 +358,7 @@ Candy.Core.Event = (function(self, Strophe, $) {
* (Boolean) - true
*/
Message: function(msg) {
- Candy.Core.log('[Jabber] Message');
+ Core.log('[Jabber] Message');
msg = $(msg);
var type = msg.attr('type') || 'normal';
@@ -489,7 +493,7 @@ Candy.Core.Event = (function(self, Strophe, $) {
return invite;
},
- /** Class: Candy.Core.Event.Jabber.Room
+ /** Class: Core.Event.Jabber.Room
* Room specific events
*/
Room: {
@@ -503,7 +507,7 @@ Candy.Core.Event = (function(self, Strophe, $) {
* (Boolean) - true
*/
Disco: function(msg) {
- Candy.Core.log('[Jabber:Room] Disco');
+ Core.log('[Jabber:Room] Disco');
msg = $(msg);
// Temp fix for #219
// Don't go further if it's no conference disco reply
@@ -511,17 +515,17 @@ Candy.Core.Event = (function(self, Strophe, $) {
if(!msg.find('identity[category="conference"]').length) {
return true;
}
- var roomJid = Strophe.getBareJidFromJid(Candy.Util.unescapeJid(msg.attr('from')));
+ var roomJid = Strophe.getBareJidFromJid(Util.unescapeJid(msg.attr('from')));
// Client joined a room
- if(!Candy.Core.getRooms()[roomJid]) {
- Candy.Core.getRooms()[roomJid] = new Candy.Core.ChatRoom(roomJid);
+ if(!Core.getRooms()[roomJid]) {
+ Core.getRooms()[roomJid] = new Core.ChatRoom(roomJid);
}
// Room existed but room name was unknown
var identity = msg.find('identity');
if(identity.length) {
var roomName = identity.attr('name'),
- room = Candy.Core.getRoom(roomJid);
+ room = Core.getRoom(roomJid);
if(room.getName() === null) {
room.setName(Strophe.unescapeNode(roomName));
// Room name changed
@@ -545,8 +549,8 @@ Candy.Core.Event = (function(self, Strophe, $) {
* (Boolean) - true
*/
Presence: function(msg) {
- Candy.Core.log('[Jabber:Room] Presence');
- var from = Candy.Util.unescapeJid(msg.attr('from')),
+ Core.log('[Jabber:Room] Presence');
+ var from = Util.unescapeJid(msg.attr('from')),
roomJid = Strophe.getBareJidFromJid(from),
presenceType = msg.attr('type'),
isNewRoom = self.Jabber.Room._msgHasStatusCode(msg, 201),
@@ -554,14 +558,14 @@ Candy.Core.Event = (function(self, Strophe, $) {
nickChange = self.Jabber.Room._msgHasStatusCode(msg, 303);
// Current User joined a room
- var room = Candy.Core.getRoom(roomJid);
+ var room = Core.getRoom(roomJid);
if(!room) {
- Candy.Core.getRooms()[roomJid] = new Candy.Core.ChatRoom(roomJid);
- room = Candy.Core.getRoom(roomJid);
+ Core.getRooms()[roomJid] = new Core.ChatRoom(roomJid);
+ room = Core.getRoom(roomJid);
}
var roster = room.getRoster(),
- currentUser = room.getUser() ? room.getUser() : Candy.Core.getUser(),
+ currentUser = room.getUser() ? room.getUser() : Core.getUser(),
action, user,
nick,
show = msg.find('show'),
@@ -584,9 +588,9 @@ Candy.Core.Event = (function(self, Strophe, $) {
action = 'join';
} else {
nick = Strophe.getResourceFromJid(from);
- user = new Candy.Core.ChatUser(from, nick, item.attr('affiliation'), item.attr('role'), item.attr('jid'));
+ user = new Core.ChatUser(from, nick, item.attr('affiliation'), item.attr('role'), item.attr('jid'));
// Room existed but client (myself) is not yet registered
- if(room.getUser() === null && (Candy.Core.getUser().getNick() === nick || nickAssign)) {
+ if(room.getUser() === null && (Core.getUser().getNick() === nick || nickAssign)) {
room.setUser(user);
currentUser = user;
}
@@ -634,9 +638,9 @@ Candy.Core.Event = (function(self, Strophe, $) {
* Parameters:
* (String) roomJid - Room JID
* (String) roomName - Room name
- * (Candy.Core.ChatUser) user - User which does the presence update
+ * (Core.ChatUser) user - User which does the presence update
* (String) action - Action [kick, ban, leave, join]
- * (Candy.Core.ChatUser) currentUser - Current local user
+ * (Core.ChatUser) currentUser - Current local user
* (Boolean) isNewRoom - Whether the room is new (has just been created)
*/
$(Candy).triggerHandler('candy:core.presence.room', {
@@ -655,9 +659,9 @@ Candy.Core.Event = (function(self, Strophe, $) {
},
_selfLeave: function(msg, from, roomJid, roomName, action) {
- Candy.Core.log('[Jabber:Room] Leave');
+ Core.log('[Jabber:Room] Leave');
- Candy.Core.removeRoom(roomJid);
+ Core.removeRoom(roomJid);
var item = msg.find('item'),
reason,
@@ -668,7 +672,7 @@ Candy.Core.Event = (function(self, Strophe, $) {
actor = item.find('actor').attr('jid');
}
- var user = new Candy.Core.ChatUser(from, Strophe.getResourceFromJid(from), item.attr('affiliation'), item.attr('role'));
+ var user = new Core.ChatUser(from, Strophe.getResourceFromJid(from), item.attr('affiliation'), item.attr('role'));
/** Event: candy:core.presence.leave
* When the local client leaves a room
@@ -681,7 +685,7 @@ Candy.Core.Event = (function(self, Strophe, $) {
* (String) type - Presence type [kick, ban, leave]
* (String) reason - When type equals kick|ban, this is the reason the moderator has supplied.
* (String) actor - When type equals kick|ban, this is the moderator which did the kick
- * (Candy.Core.ChatUser) user - user which leaves the room
+ * (Core.ChatUser) user - user which leaves the room
*/
$(Candy).triggerHandler('candy:core.presence.leave', {
'roomJid': roomJid,
@@ -706,14 +710,14 @@ Candy.Core.Event = (function(self, Strophe, $) {
* (Boolean) - true
*/
PresenceError: function(msg) {
- Candy.Core.log('[Jabber:Room] Presence Error');
- var from = Candy.Util.unescapeJid(msg.attr('from')),
+ Core.log('[Jabber:Room] Presence Error');
+ var from = Util.unescapeJid(msg.attr('from')),
roomJid = Strophe.getBareJidFromJid(from),
- room = Candy.Core.getRooms()[roomJid],
+ room = Core.getRooms()[roomJid],
roomName = room.getName();
// Presence error: Remove room from array to prevent error when disconnecting
- Candy.Core.removeRoom(roomJid);
+ Core.removeRoom(roomJid);
room = undefined;
/** Event: candy:core.presence.error
@@ -748,28 +752,28 @@ Candy.Core.Event = (function(self, Strophe, $) {
* (Boolean) - true
*/
Message: function(msg) {
- Candy.Core.log('[Jabber:Room] Message');
+ Core.log('[Jabber:Room] Message');
var carbon = false,
- partnerJid = Candy.Util.unescapeJid(msg.attr('from'));
+ partnerJid = Util.unescapeJid(msg.attr('from'));
if (msg.children('sent[xmlns="' + Strophe.NS.CARBONS + '"]').length > 0) {
carbon = true;
msg = $(msg.children('sent').children('forwarded').children('message'));
- partnerJid = Candy.Util.unescapeJid(msg.attr('to'));
+ partnerJid = Util.unescapeJid(msg.attr('to'));
}
if (msg.children('received[xmlns="' + Strophe.NS.CARBONS + '"]').length > 0) {
carbon = true;
msg = $(msg.children('received').children('forwarded').children('message'));
- partnerJid = Candy.Util.unescapeJid(msg.attr('from'));
+ partnerJid = Util.unescapeJid(msg.attr('from'));
}
// Room subject
var roomJid, roomName, from, message, name, room, sender;
if(msg.children('subject').length > 0 && msg.children('subject').text().length > 0 && msg.attr('type') === 'groupchat') {
- roomJid = Candy.Util.unescapeJid(Strophe.getBareJidFromJid(partnerJid));
- from = Candy.Util.unescapeJid(Strophe.getBareJidFromJid(msg.attr('from')));
+ roomJid = Util.unescapeJid(Strophe.getBareJidFromJid(partnerJid));
+ from = Util.unescapeJid(Strophe.getBareJidFromJid(msg.attr('from')));
roomName = Strophe.getNodeFromJid(roomJid);
message = { from: from, name: Strophe.getNodeFromJid(from), body: msg.children('subject').text(), type: 'subject' };
// Error messsage
@@ -784,25 +788,25 @@ Candy.Core.Event = (function(self, Strophe, $) {
} else if(msg.children('body').length > 0) {
// Private chat message
if(msg.attr('type') === 'chat' || msg.attr('type') === 'normal') {
- from = Candy.Util.unescapeJid(msg.attr('from'));
+ from = Util.unescapeJid(msg.attr('from'));
var barePartner = Strophe.getBareJidFromJid(partnerJid),
bareFrom = Strophe.getBareJidFromJid(from),
- isNoConferenceRoomJid = !Candy.Core.getRoom(barePartner);
+ isNoConferenceRoomJid = !Core.getRoom(barePartner);
if (isNoConferenceRoomJid) {
roomJid = barePartner;
- var partner = Candy.Core.getRoster().get(barePartner);
+ var partner = Core.getRoster().get(barePartner);
if (partner) {
roomName = partner.getName();
} else {
roomName = Strophe.getNodeFromJid(barePartner);
}
- if (bareFrom === Candy.Core.getUser().getJid()) {
- sender = Candy.Core.getUser();
+ if (bareFrom === Core.getUser().getJid()) {
+ sender = Core.getUser();
} else {
- sender = Candy.Core.getRoster().get(bareFrom);
+ sender = Core.getRoster().get(bareFrom);
}
if (sender) {
name = sender.getName();
@@ -811,7 +815,7 @@ Candy.Core.Event = (function(self, Strophe, $) {
}
} else {
roomJid = partnerJid;
- room = Candy.Core.getRoom(Candy.Util.unescapeJid(Strophe.getBareJidFromJid(from)));
+ room = Core.getRoom(Util.unescapeJid(Strophe.getBareJidFromJid(from)));
sender = room.getRoster().get(from);
if (sender) {
name = sender.getName();
@@ -823,15 +827,15 @@ Candy.Core.Event = (function(self, Strophe, $) {
message = { from: from, name: name, body: msg.children('body').text(), type: msg.attr('type'), isNoConferenceRoomJid: isNoConferenceRoomJid };
// Multi-user chat message
} else {
- from = Candy.Util.unescapeJid(msg.attr('from'));
- roomJid = Candy.Util.unescapeJid(Strophe.getBareJidFromJid(partnerJid));
+ from = Util.unescapeJid(msg.attr('from'));
+ roomJid = Util.unescapeJid(Strophe.getBareJidFromJid(partnerJid));
var resource = Strophe.getResourceFromJid(partnerJid);
// Message from a user
if(resource) {
- room = Candy.Core.getRoom(roomJid);
+ room = Core.getRoom(roomJid);
roomName = room.getName();
- if (resource === Candy.Core.getUser().getNick()) {
- sender = Candy.Core.getUser();
+ if (resource === Core.getUser().getNick()) {
+ sender = Core.getUser();
} else {
sender = room.getRoster().get(from);
}
@@ -844,7 +848,7 @@ Candy.Core.Event = (function(self, Strophe, $) {
// Message from server (XEP-0045#registrar-statuscodes)
} else {
// we are not yet present in the room, let's just drop this message (issue #105)
- if(!Candy.Core.getRooms()[partnerJid]) {
+ if(!Core.getRooms()[partnerJid]) {
return true;
}
roomName = '';
@@ -955,4 +959,4 @@ Candy.Core.Event = (function(self, Strophe, $) {
};
return self;
-}(Candy.Core.Event || {}, Strophe, jQuery));
+}({}));
diff --git a/src/util.js b/src/util.js
index ed4d1c4..2ffc3e6 100644
--- a/src/util.js
+++ b/src/util.js
@@ -14,7 +14,7 @@
* (Candy.Util) self - itself
* (jQuery) $ - jQuery
*/
-Candy.Util = (function(self, $){
+var Util = (function(self, $){
/** Function: jidToId
* Translates a jid to a MD5-Id
*
@@ -655,4 +655,6 @@ Candy.Util = (function(self, $){
};
return self;
-}(Candy.Util || {}, jQuery));
+}({}, jQuery));
+
+export default Util;
diff --git a/src/view.js b/src/view.js
index 66c21fe..d577f5f 100644
--- a/src/view.js
+++ b/src/view.js
@@ -7,6 +7,17 @@
/* global jQuery, Candy, window, Mustache, document */
+import Observer from './view/observer.js';
+import Template from './view/template.js';
+import Translation from './view/translation.js';
+
+import Chat from './view/pane/chat.js';
+import Message from './view/pane/message.js';
+import PrivateRoom from './view/pane/privateRoom.js';
+import Room from './view/pane/room.js';
+import Roster from './view/pane/roster.js';
+import Window from './view/pane/window.js';
+
/** Class: Candy.View
* The Candy View Class
*
@@ -14,7 +25,7 @@
* (Candy.View) self - itself
* (jQuery) $ - jQuery
*/
-Candy.View = (function(self, $) {
+var View = (function(self, $) {
/** PrivateObject: _current
* Object containing current container & roomJid which the client sees.
*/
@@ -162,4 +173,18 @@ Candy.View = (function(self, $) {
};
return self;
-}(Candy.View || {}, jQuery));
+}({}, jQuery));
+
+View.Observer = Observer;
+View.Template = Template;
+View.Translation = Translation;
+
+View.Pane = {};
+View.Pane.Chat = Chat;
+View.Pane.Message = Message;
+View.Pane.PrivateRoom = PrivateRoom;
+View.Pane.Room = Room;
+View.Pane.Roster = Roster;
+View.Pane.Window = Window;
+
+export default View;
diff --git a/src/view/observer.js b/src/view/observer.js
index 283568c..63e4f91 100644
--- a/src/view/observer.js
+++ b/src/view/observer.js
@@ -14,7 +14,7 @@
* (Candy.View.Observer) self - itself
* (jQuery) $ - jQuery
*/
-Candy.View.Observer = (function(self, $) {
+export default (function(self, $) {
/** PrivateVariable: _showConnectedMessageModal
* Ugly way to determine if the 'connected' modal should be shown.
* Is set to false in case no autojoin param is set.
@@ -322,4 +322,4 @@ Candy.View.Observer = (function(self, $) {
};
return self;
-}(Candy.View.Observer || {}, jQuery));
+}({}, jQuery));
diff --git a/src/view/pane/chat.js b/src/view/pane/chat.js
index bfabaf7..92111ce 100644
--- a/src/view/pane/chat.js
+++ b/src/view/pane/chat.js
@@ -7,6 +7,9 @@
/* global Candy, document, Mustache, Strophe, Audio, jQuery */
+import Room from './room.js';
+import Window from './window.js';
+
/** Class: Candy.View.Pane
* Candy view pane handles everything regarding DOM updates etc.
*
@@ -14,7 +17,7 @@
* (Candy.View.Pane) self - itself
* (jQuery) $ - jQuery
*/
-Candy.View.Pane = (function(self, $) {
+var Pane = (function(self, $) {
/** Class: Candy.View.Pane.Chat
* Chat-View related view updates
@@ -132,7 +135,7 @@ Candy.View.Pane = (function(self, $) {
unreadElem.show().text(unreadElem.text() !== '' ? parseInt(unreadElem.text(), 10) + 1 : 1);
// only increase window unread messages in private chats
if (self.Chat.rooms[roomJid].type === 'chat' || Candy.View.getOptions().updateWindowOnAllMessages === true) {
- self.Window.increaseUnreadMessages();
+ Window.increaseUnreadMessages();
}
},
@@ -147,7 +150,7 @@ Candy.View.Pane = (function(self, $) {
*/
clearUnreadMessages: function(roomJid) {
var unreadElem = self.Chat.getTab(roomJid).find('.unread');
- self.Window.reduceUnreadMessages(unreadElem.text());
+ Window.reduceUnreadMessages(unreadElem.text());
unreadElem.hide().text('');
},
@@ -157,12 +160,12 @@ Candy.View.Pane = (function(self, $) {
tabClick: function(e) {
// remember scroll position of current room
var currentRoomJid = Candy.View.getCurrent().roomJid;
- var roomPane = self.Room.getPane(currentRoomJid, '.message-pane');
+ var roomPane = Room.getPane(currentRoomJid, '.message-pane');
if (roomPane) {
self.Chat.rooms[currentRoomJid].scrollPosition = roomPane.scrollTop();
}
- self.Room.show($(this).attr('data-roomjid'));
+ Room.show($(this).attr('data-roomjid'));
e.preventDefault();
},
@@ -179,7 +182,7 @@ Candy.View.Pane = (function(self, $) {
var roomJid = $(this).parent().attr('data-roomjid');
// close private user tab
if(self.Chat.rooms[roomJid].type === 'chat') {
- self.Room.close(roomJid);
+ Room.close(roomJid);
// close multi-user room tab
} else {
Candy.Core.Action.Jabber.Room.Leave(roomJid);
@@ -246,9 +249,9 @@ Candy.View.Pane = (function(self, $) {
timestamp: timestamp.toISOString()
});
$('#chat-rooms').children().each(function() {
- self.Room.appendToMessagePane($(this).attr('data-roomjid'), html);
+ Room.appendToMessagePane($(this).attr('data-roomjid'), html);
});
- self.Room.scrollToBottom(Candy.View.getCurrent().roomJid);
+ Room.scrollToBottom(Candy.View.getCurrent().roomJid);
/** Event: candy:view.chat.admin-message
* After admin message display
@@ -299,9 +302,9 @@ Candy.View.Pane = (function(self, $) {
time: Candy.Util.localizedTime(timestamp),
timestamp: timestamp.toISOString()
});
- self.Room.appendToMessagePane(roomJid, html);
+ Room.appendToMessagePane(roomJid, html);
if (Candy.View.getCurrent().roomJid === roomJid) {
- self.Room.scrollToBottom(Candy.View.getCurrent().roomJid);
+ Room.scrollToBottom(Candy.View.getCurrent().roomJid);
}
}
},
@@ -364,7 +367,7 @@ Candy.View.Pane = (function(self, $) {
*/
update: function(roomJid) {
var context = $('#chat-toolbar').find('.context'),
- me = self.Room.getUser(roomJid);
+ me = Room.getUser(roomJid);
if(!me || !me.isModerator()) {
context.hide();
} else {
@@ -428,16 +431,16 @@ Candy.View.Pane = (function(self, $) {
onAutoscrollControlClick: function() {
var control = $('#chat-autoscroll-control');
if(control.hasClass('checked')) {
- self.Room.scrollToBottom = function(roomJid) {
- self.Room.onScrollToStoredPosition(roomJid);
+ Room.scrollToBottom = function(roomJid) {
+ Room.onScrollToStoredPosition(roomJid);
};
- self.Window.autoscroll = false;
+ Window.autoscroll = false;
} else {
- self.Room.scrollToBottom = function(roomJid) {
- self.Room.onScrollToBottom(roomJid);
+ Room.scrollToBottom = function(roomJid) {
+ Room.onScrollToBottom(roomJid);
};
- self.Room.scrollToBottom(Candy.View.getCurrent().roomJid);
- self.Window.autoscroll = true;
+ Room.scrollToBottom(Candy.View.getCurrent().roomJid);
+ Window.autoscroll = true;
}
control.toggleClass('checked');
},
@@ -896,7 +899,7 @@ Candy.View.Pane = (function(self, $) {
menulinks = evtData.menulinks;
for(id in menulinks) {
- if(menulinks.hasOwnProperty(id) && menulinks[id].requiredPermission !== undefined && !menulinks[id].requiredPermission(user, self.Room.getUser(roomJid), elem)) {
+ if(menulinks.hasOwnProperty(id) && menulinks[id].requiredPermission !== undefined && !menulinks[id].requiredPermission(user, Room.getUser(roomJid), elem)) {
delete menulinks[id];
}
}
@@ -1056,4 +1059,6 @@ Candy.View.Pane = (function(self, $) {
};
return self;
-}(Candy.View.Pane || {}, jQuery));
+}({}, jQuery));
+
+export default Pane.Chat;
diff --git a/src/view/pane/message.js b/src/view/pane/message.js
index e65b8d2..2a547a9 100644
--- a/src/view/pane/message.js
+++ b/src/view/pane/message.js
@@ -7,6 +7,10 @@
/* global Candy, Mustache, jQuery */
+import Chat from './chat.js';
+import Room from './room.js';
+import Window from './window.js';
+
/** Class: Candy.View.Pane
* Candy view pane handles everything regarding DOM updates etc.
*
@@ -14,7 +18,7 @@
* (Candy.View.Pane) self - itself
* (jQuery) $ - jQuery
*/
-Candy.View.Pane = (function(self, $) {
+var Pane = (function(self, $) {
/** Class: Candy.View.Pane.Message
* Message submit/show handling
@@ -68,7 +72,7 @@ Candy.View.Pane = (function(self, $) {
Candy.Core.Action.Jabber.Room.Message(targetJid, message, roomType, xhtmlMessage);
// Private user chat. Jabber won't notify the user who has sent the message. Just show it as the user hits the button...
if(roomType === 'chat' && message) {
- self.Message.show(roomJid, self.Room.getUser(roomJid).getNick(), message, xhtmlMessage, undefined, Candy.Core.getUser().getJid());
+ self.Message.show(roomJid, Room.getUser(roomJid).getNick(), message, xhtmlMessage, undefined, Candy.Core.getUser().getJid());
}
// Clear input and set focus to it
$(this).children('.field').val('').focus();
@@ -105,7 +109,7 @@ Candy.View.Pane = (function(self, $) {
}
// Before we add the new message, check to see if we should be automatically scrolling or not.
- var messagePane = self.Room.getPane(roomJid, '.message-pane');
+ var messagePane = Room.getPane(roomJid, '.message-pane');
var enableScroll = ((messagePane.scrollTop() + messagePane.outerHeight()) === messagePane.prop('scrollHeight')) || !$(messagePane).is(':visible');
Candy.View.Pane.Chat.rooms[roomJid].enableScroll = enableScroll;
@@ -172,14 +176,14 @@ Candy.View.Pane = (function(self, $) {
$(Candy).triggerHandler('candy:view.message.before-render', renderEvtData);
var html = Mustache.to_html(renderEvtData.template, renderEvtData.templateData);
- self.Room.appendToMessagePane(roomJid, html);
- var elem = self.Room.getPane(roomJid, '.message-pane').children().last();
+ Room.appendToMessagePane(roomJid, html);
+ var elem = Room.getPane(roomJid, '.message-pane').children().last();
// click on username opens private chat
elem.find('a.label').click(function(event) {
event.preventDefault();
// Check if user is online and not myself
var room = Candy.Core.getRoom(roomJid);
- if(room && name !== self.Room.getUser(Candy.View.getCurrent().roomJid).getNick() && room.getRoster().get(roomJid + '/' + name)) {
+ if(room && name !== Room.getUser(Candy.View.getCurrent().roomJid).getNick() && room.getRoster().get(roomJid + '/' + name)) {
if(Candy.View.Pane.PrivateRoom.open(roomJid + '/' + name, name, true) === false) {
return false;
}
@@ -212,19 +216,19 @@ Candy.View.Pane = (function(self, $) {
// Check to see if in-core notifications are disabled
if(!Candy.Core.getOptions().disableCoreNotifications) {
- if(Candy.View.getCurrent().roomJid !== roomJid || !self.Window.hasFocus()) {
- self.Chat.increaseUnreadMessages(roomJid);
- if(!self.Window.hasFocus()) {
+ if(Candy.View.getCurrent().roomJid !== roomJid || !Window.hasFocus()) {
+ Chat.increaseUnreadMessages(roomJid);
+ if(!Window.hasFocus()) {
// Notify the user about a new private message OR on all messages if configured
if(Candy.View.Pane.Chat.rooms[roomJid].type === 'chat' || Candy.View.getOptions().updateWindowOnAllMessages === true) {
- self.Chat.Toolbar.playSound();
+ Chat.Toolbar.playSound();
}
}
}
}
if(Candy.View.getCurrent().roomJid === roomJid) {
- self.Room.scrollToBottom(roomJid);
+ Room.scrollToBottom(roomJid);
}
}
@@ -244,4 +248,6 @@ Candy.View.Pane = (function(self, $) {
};
return self;
-}(Candy.View.Pane || {}, jQuery));
+}({}, jQuery));
+
+export default Pane.Message;
diff --git a/src/view/pane/privateRoom.js b/src/view/pane/privateRoom.js
index 6afda69..a94df9e 100644
--- a/src/view/pane/privateRoom.js
+++ b/src/view/pane/privateRoom.js
@@ -7,6 +7,10 @@
/* global Candy, Strophe, jQuery */
+import Chat from './chat.js';
+import Room from './room.js';
+import Roster from './roster.js';
+
/** Class: Candy.View.Pane
* Candy view pane handles everything regarding DOM updates etc.
*
@@ -14,7 +18,7 @@
* (Candy.View.Pane) self - itself
* (jQuery) $ - jQuery
*/
-Candy.View.Pane = (function(self, $) {
+var Pane = (function(self, $) {
/** Class: Candy.View.Pane.PrivateRoom
* Private room handling
@@ -35,7 +39,7 @@ Candy.View.Pane = (function(self, $) {
* candy:view.private-room.after-open using {roomJid, type, element}
*/
open: function(roomJid, roomName, switchToRoom, isNoConferenceRoomJid) {
- var user = isNoConferenceRoomJid ? Candy.Core.getUser() : self.Room.getUser(Strophe.getBareJidFromJid(roomJid)),
+ var user = isNoConferenceRoomJid ? Candy.Core.getUser() : Room.getUser(Strophe.getBareJidFromJid(roomJid)),
evtData = {
'roomJid': roomJid,
'roomName': roomName,
@@ -61,20 +65,20 @@ Candy.View.Pane = (function(self, $) {
if (Candy.Core.getUser().isInPrivacyList('ignore', roomJid)) {
return false;
}
- if(!self.Chat.rooms[roomJid]) {
- if(self.Room.init(roomJid, roomName, 'chat') === false) {
+ if(!Chat.rooms[roomJid]) {
+ if(Room.init(roomJid, roomName, 'chat') === false) {
return false;
}
}
if(switchToRoom) {
- self.Room.show(roomJid);
+ Room.show(roomJid);
}
- self.Roster.update(roomJid, new Candy.Core.ChatUser(roomJid, roomName), 'join', user);
- self.Roster.update(roomJid, user, 'join', user);
+ Roster.update(roomJid, new Candy.Core.ChatUser(roomJid, roomName), 'join', user);
+ Roster.update(roomJid, user, 'join', user);
self.PrivateRoom.setStatus(roomJid, 'join');
- evtData.element = self.Room.getPane(roomJid);
+ evtData.element = Room.getPane(roomJid);
/** Event: candy:view.private-room.after-open
* After opening a new private room
*
@@ -94,16 +98,16 @@ Candy.View.Pane = (function(self, $) {
* (String) status - "leave"/"join"
*/
setStatus: function(roomJid, status) {
- var messageForm = self.Room.getPane(roomJid, '.message-form');
+ var messageForm = Room.getPane(roomJid, '.message-form');
if(status === 'join') {
- self.Chat.getTab(roomJid).addClass('online').removeClass('offline');
+ Chat.getTab(roomJid).addClass('online').removeClass('offline');
messageForm.children('.field').removeAttr('disabled');
messageForm.children('.submit').removeAttr('disabled');
- self.Chat.getTab(roomJid);
+ Chat.getTab(roomJid);
} else if(status === 'leave') {
- self.Chat.getTab(roomJid).addClass('offline').removeClass('online');
+ Chat.getTab(roomJid).addClass('offline').removeClass('online');
messageForm.children('.field').attr('disabled', true);
messageForm.children('.submit').attr('disabled', true);
@@ -124,22 +128,22 @@ Candy.View.Pane = (function(self, $) {
newPrivateRoomJid = roomJid + '/' + user.getNick(),
previousPrivateRoomId = Candy.Util.jidToId(previousPrivateRoomJid),
newPrivateRoomId = Candy.Util.jidToId(newPrivateRoomJid),
- room = self.Chat.rooms[previousPrivateRoomJid],
+ room = Chat.rooms[previousPrivateRoomJid],
roomElement,
roomTabElement;
// it could happen that the new private room is already existing -> close it first.
// if this is not done, errors appear as two rooms would have the same id
- if (self.Chat.rooms[newPrivateRoomJid]) {
- self.Room.close(newPrivateRoomJid);
+ if (Chat.rooms[newPrivateRoomJid]) {
+ Room.close(newPrivateRoomJid);
}
if (room) { /* someone I talk with, changed nick */
room.name = user.getNick();
room.id = newPrivateRoomId;
- self.Chat.rooms[newPrivateRoomJid] = room;
- delete self.Chat.rooms[previousPrivateRoomJid];
+ Chat.rooms[newPrivateRoomJid] = room;
+ delete Chat.rooms[previousPrivateRoomJid];
roomElement = $('#chat-room-' + previousPrivateRoomId);
if (roomElement) {
@@ -166,10 +170,12 @@ Candy.View.Pane = (function(self, $) {
}
}
if (roomElement && roomElement.length) {
- self.Roster.changeNick(previousPrivateRoomId, user);
+ Roster.changeNick(previousPrivateRoomId, user);
}
}
};
return self;
-}(Candy.View.Pane || {}, jQuery));
+}({}, jQuery));
+
+export default Pane.PrivateRoom;
diff --git a/src/view/pane/room.js b/src/view/pane/room.js
index 2b42cd6..1b4234f 100644
--- a/src/view/pane/room.js
+++ b/src/view/pane/room.js
@@ -7,6 +7,11 @@
/* global Candy, Mustache, Strophe, jQuery */
+import Chat from './chat.js';
+import Message from './message.js';
+import Room from './room.js';
+import Window from './window.js';
+
/** Class: Candy.View.Pane
* Candy view pane handles everything regarding DOM updates etc.
*
@@ -14,7 +19,7 @@
* (Candy.View.Pane) self - itself
* (jQuery) $ - jQuery
*/
-Candy.View.Pane = (function(self, $) {
+var Pane = (function(self, $) {
/** Class: Candy.View.Pane.Room
* Everything which belongs to room view things belongs here.
@@ -62,12 +67,12 @@ Candy.View.Pane = (function(self, $) {
}
// First room, show sound control
- if(Candy.Util.isEmptyObject(self.Chat.rooms)) {
- self.Chat.Toolbar.show();
+ if(Candy.Util.isEmptyObject(Chat.rooms)) {
+ Chat.Toolbar.show();
}
var roomId = Candy.Util.jidToId(roomJid);
- self.Chat.rooms[roomJid] = {id: roomId, usercount: 0, name: roomName, type: roomType, messageCount: 0, scrollPosition: -1, targetJid: roomJid};
+ Chat.rooms[roomJid] = {id: roomId, usercount: 0, name: roomName, type: roomType, messageCount: 0, scrollPosition: -1, targetJid: roomJid};
$('#chat-rooms').append(Mustache.to_html(Candy.View.Template.Room.pane, {
roomId: roomId,
@@ -84,11 +89,11 @@ Candy.View.Pane = (function(self, $) {
messages: Candy.View.Template.Message.pane,
form: Candy.View.Template.Room.form
}));
- self.Chat.addTab(roomJid, roomName, roomType);
- self.Room.getPane(roomJid, '.message-form').submit(self.Message.submit);
- self.Room.scrollToBottom(roomJid);
+ Chat.addTab(roomJid, roomName, roomType);
+ Room.getPane(roomJid, '.message-form').submit(Message.submit);
+ Room.scrollToBottom(roomJid);
- evtData.element = self.Room.getPane(roomJid);
+ evtData.element = Room.getPane(roomJid);
/** Event: candy:view.room.after-add
* After initialising a room
@@ -114,7 +119,7 @@ Candy.View.Pane = (function(self, $) {
* candy:view.room.after-hide using {roomJid, element}
*/
show: function(roomJid) {
- var roomId = self.Chat.rooms[roomJid].id,
+ var roomId = Chat.rooms[roomJid].id,
evtData;
$('.room-pane').each(function() {
@@ -128,11 +133,11 @@ Candy.View.Pane = (function(self, $) {
if(elem.attr('id') === ('chat-room-' + roomId)) {
elem.show();
Candy.View.getCurrent().roomJid = roomJid;
- self.Chat.setActiveTab(roomJid);
- self.Chat.Toolbar.update(roomJid);
- self.Chat.clearUnreadMessages(roomJid);
- self.Room.setFocusToForm(roomJid);
- self.Room.scrollToBottom(roomJid);
+ Chat.setActiveTab(roomJid);
+ Chat.Toolbar.update(roomJid);
+ Chat.clearUnreadMessages(roomJid);
+ Room.setFocusToForm(roomJid);
+ Room.scrollToBottom(roomJid);
/** Event: candy:view.room.after-show
* After showing a room
@@ -175,13 +180,13 @@ Candy.View.Pane = (function(self, $) {
var timestamp = new Date();
var html = Mustache.to_html(Candy.View.Template.Room.subject, {
subject: subject,
- roomName: self.Chat.rooms[roomJid].name,
+ roomName: Chat.rooms[roomJid].name,
_roomSubject: $.i18n._('roomSubject'),
time: Candy.Util.localizedTime(timestamp),
timestamp: timestamp.toISOString()
});
- self.Room.appendToMessagePane(roomJid, html);
- self.Room.scrollToBottom(roomJid);
+ Room.appendToMessagePane(roomJid, html);
+ Room.scrollToBottom(roomJid);
/** Event: candy:view.room.after-subject-change
* After changing the subject of a room
@@ -193,7 +198,7 @@ Candy.View.Pane = (function(self, $) {
*/
$(Candy).triggerHandler('candy:view.room.after-subject-change', {
'roomJid': roomJid,
- 'element' : self.Room.getPane(roomJid),
+ 'element' : Room.getPane(roomJid),
'subject' : subject
});
},
@@ -211,25 +216,25 @@ Candy.View.Pane = (function(self, $) {
* (String) roomJid - Room to close
*/
close: function(roomJid) {
- self.Chat.removeTab(roomJid);
- self.Window.clearUnreadMessages();
+ Chat.removeTab(roomJid);
+ Window.clearUnreadMessages();
/* TODO:
There's a rendering bug in Opera which doesn't redraw (remove) the message form.
Only a cosmetical issue (when all tabs are closed) but it's annoying...
This happens when form has no focus too. Maybe it's because of CSS positioning.
*/
- self.Room.getPane(roomJid).remove();
+ Room.getPane(roomJid).remove();
var openRooms = $('#chat-rooms').children();
if(Candy.View.getCurrent().roomJid === roomJid) {
Candy.View.getCurrent().roomJid = null;
if(openRooms.length === 0) {
- self.Chat.allTabsClosed();
+ Chat.allTabsClosed();
} else {
- self.Room.show(openRooms.last().attr('data-roomjid'));
+ Room.show(openRooms.last().attr('data-roomjid'));
}
}
- delete self.Chat.rooms[roomJid];
+ delete Chat.rooms[roomJid];
/** Event: candy:view.room.after-close
* After closing a room
@@ -250,9 +255,9 @@ Candy.View.Pane = (function(self, $) {
* (String) html - rendered message html
*/
appendToMessagePane: function(roomJid, html) {
- self.Room.getPane(roomJid, '.message-pane').append(html);
- self.Chat.rooms[roomJid].messageCount++;
- self.Room.sliceMessagePane(roomJid);
+ Room.getPane(roomJid, '.message-pane').append(html);
+ Chat.rooms[roomJid].messageCount++;
+ Room.sliceMessagePane(roomJid);
},
/** Function: sliceMessagePane
@@ -267,11 +272,11 @@ Candy.View.Pane = (function(self, $) {
*/
sliceMessagePane: function(roomJid) {
// Only clean if autoscroll is enabled
- if(self.Window.autoscroll) {
+ if(Window.autoscroll) {
var options = Candy.View.getOptions().messages;
- if(self.Chat.rooms[roomJid].messageCount > options.limit) {
- self.Room.getPane(roomJid, '.message-pane').children().slice(0, options.remove).remove();
- self.Chat.rooms[roomJid].messageCount -= options.remove;
+ if(Chat.rooms[roomJid].messageCount > options.limit) {
+ Room.getPane(roomJid, '.message-pane').children().slice(0, options.remove).remove();
+ Chat.rooms[roomJid].messageCount -= options.remove;
}
}
},
@@ -286,7 +291,7 @@ Candy.View.Pane = (function(self, $) {
* - <onScrollToBottom>
*/
scrollToBottom: function(roomJid) {
- self.Room.onScrollToBottom(roomJid);
+ Room.onScrollToBottom(roomJid);
},
/** Function: onScrollToBottom
@@ -296,7 +301,7 @@ Candy.View.Pane = (function(self, $) {
* (String) roomJid - Room JID
*/
onScrollToBottom: function(roomJid) {
- var messagePane = self.Room.getPane(roomJid, '.message-pane-wrapper');
+ var messagePane = Room.getPane(roomJid, '.message-pane-wrapper');
if (Candy.View.Pane.Chat.rooms[roomJid].enableScroll === true) {
messagePane.scrollTop(messagePane.prop('scrollHeight'));
@@ -315,10 +320,10 @@ Candy.View.Pane = (function(self, $) {
onScrollToStoredPosition: function(roomJid) {
// This should only apply when entering a room...
// ... therefore we set scrollPosition to -1 after execution.
- if(self.Chat.rooms[roomJid].scrollPosition > -1) {
- var messagePane = self.Room.getPane(roomJid, '.message-pane-wrapper');
- messagePane.scrollTop(self.Chat.rooms[roomJid].scrollPosition);
- self.Chat.rooms[roomJid].scrollPosition = -1;
+ if(Chat.rooms[roomJid].scrollPosition > -1) {
+ var messagePane = Room.getPane(roomJid, '.message-pane-wrapper');
+ messagePane.scrollTop(Chat.rooms[roomJid].scrollPosition);
+ Chat.rooms[roomJid].scrollPosition = -1;
}
},
@@ -332,7 +337,7 @@ Candy.View.Pane = (function(self, $) {
// If we're on mobile, don't focus the input field.
if (Candy.Util.isMobile()) { return true; }
- var pane = self.Room.getPane(roomJid, '.message-form');
+ var pane = Room.getPane(roomJid, '.message-form');
if (pane) {
// IE8 will fail maybe, because the field isn't there yet.
try {
@@ -352,8 +357,8 @@ Candy.View.Pane = (function(self, $) {
* (Candy.Core.ChatUser) user - The user
*/
setUser: function(roomJid, user) {
- self.Chat.rooms[roomJid].user = user;
- var roomPane = self.Room.getPane(roomJid),
+ Chat.rooms[roomJid].user = user;
+ var roomPane = Room.getPane(roomJid),
chatPane = $('#chat-pane');
roomPane.attr('data-userjid', user.getJid());
@@ -368,7 +373,7 @@ Candy.View.Pane = (function(self, $) {
} else {
chatPane.removeClass('role-moderator affiliation-owner');
}
- self.Chat.Context.init();
+ Chat.Context.init();
},
/** Function: getUser
@@ -381,7 +386,7 @@ Candy.View.Pane = (function(self, $) {
* (Candy.Core.ChatUser) - user
*/
getUser: function(roomJid) {
- return self.Chat.rooms[roomJid].user;
+ return Chat.rooms[roomJid].user;
},
/** Function: ignoreUser
@@ -448,16 +453,16 @@ Candy.View.Pane = (function(self, $) {
* (String) subPane - Sub pane of the chat room pane if needed [optional]
*/
getPane: function(roomJid, subPane) {
- if (self.Chat.rooms[roomJid]) {
+ if (Chat.rooms[roomJid]) {
if(subPane) {
- if(self.Chat.rooms[roomJid]['pane-' + subPane]) {
- return self.Chat.rooms[roomJid]['pane-' + subPane];
+ if(Chat.rooms[roomJid]['pane-' + subPane]) {
+ return Chat.rooms[roomJid]['pane-' + subPane];
} else {
- self.Chat.rooms[roomJid]['pane-' + subPane] = $('#chat-room-' + self.Chat.rooms[roomJid].id).find(subPane);
- return self.Chat.rooms[roomJid]['pane-' + subPane];
+ Chat.rooms[roomJid]['pane-' + subPane] = $('#chat-room-' + Chat.rooms[roomJid].id).find(subPane);
+ return Chat.rooms[roomJid]['pane-' + subPane];
}
} else {
- return $('#chat-room-' + self.Chat.rooms[roomJid].id);
+ return $('#chat-room-' + Chat.rooms[roomJid].id);
}
}
},
@@ -478,4 +483,6 @@ Candy.View.Pane = (function(self, $) {
};
return self;
-}(Candy.View.Pane || {}, jQuery));
+}({}, jQuery));
+
+export default Pane.Room;
diff --git a/src/view/pane/roster.js b/src/view/pane/roster.js
index a902639..063d6d5 100644
--- a/src/view/pane/roster.js
+++ b/src/view/pane/roster.js
@@ -7,6 +7,10 @@
/* global Candy, Mustache, Strophe, jQuery */
+import Chat from './chat.js';
+import PrivateRoom from './privateRoom.js';
+import Room from './room.js';
+
/** Class: Candy.View.Pane
* Candy view pane handles everything regarding DOM updates etc.
*
@@ -14,7 +18,7 @@
* (Candy.View.Pane) self - itself
* (jQuery) $ - jQuery
*/
-Candy.View.Pane = (function(self, $) {
+var Pane = (function(self, $) {
/** Class Candy.View.Pane.Roster
* Handles everyhing regarding roster updates.
@@ -38,7 +42,7 @@ Candy.View.Pane = (function(self, $) {
*/
update: function(roomJid, user, action, currentUser) {
Candy.Core.log('[View:Pane:Roster] ' + action);
- var roomId = self.Chat.rooms[roomJid].id,
+ var roomId = Chat.rooms[roomJid].id,
userId = Candy.Util.jidToId(user.getJid()),
usercountDiff = -1,
userElem = $('#user-' + roomId + '-' + userId),
@@ -73,21 +77,21 @@ Candy.View.Pane = (function(self, $) {
userElem.remove();
self.Roster._insertUser(roomJid, roomId, user, userId, currentUser);
// it's me, update the toolbar
- if(currentUser !== undefined && user.getNick() === currentUser.getNick() && self.Room.getUser(roomJid)) {
- self.Chat.Toolbar.update(roomJid);
+ if(currentUser !== undefined && user.getNick() === currentUser.getNick() && Room.getUser(roomJid)) {
+ Chat.Toolbar.update(roomJid);
}
}
// Presence of client
if (currentUser !== undefined && currentUser.getNick() === user.getNick()) {
- self.Room.setUser(roomJid, user);
+ Room.setUser(roomJid, user);
// add click handler for private chat
} else {
$('#user-' + roomId + '-' + userId).click(self.Roster.userClick);
}
$('#user-' + roomId + '-' + userId + ' .context').click(function(e) {
- self.Chat.Context.show(e.currentTarget, roomJid, user);
+ Chat.Context.show(e.currentTarget, roomJid, user);
e.stopPropagation();
});
@@ -99,27 +103,27 @@ Candy.View.Pane = (function(self, $) {
} else if(action === 'leave') {
self.Roster.leaveAnimation('user-' + roomId + '-' + userId);
// always show leave message in private room, even if status messages have been disabled
- if (self.Chat.rooms[roomJid].type === 'chat') {
- self.Chat.onInfoMessage(roomJid, null, $.i18n._('userLeftRoom', [user.getNick()]));
+ if (Chat.rooms[roomJid].type === 'chat') {
+ Chat.onInfoMessage(roomJid, null, $.i18n._('userLeftRoom', [user.getNick()]));
} else {
- self.Chat.infoMessage(roomJid, null, $.i18n._('userLeftRoom', [user.getNick()]), '');
+ Chat.infoMessage(roomJid, null, $.i18n._('userLeftRoom', [user.getNick()]), '');
}
} else if(action === 'nickchange') {
usercountDiff = 0;
self.Roster.changeNick(roomId, user);
- self.Room.changeDataUserJidIfUserIsMe(roomId, user);
- self.PrivateRoom.changeNick(roomJid, user);
+ Room.changeDataUserJidIfUserIsMe(roomId, user);
+ PrivateRoom.changeNick(roomJid, user);
var infoMessage = $.i18n._('userChangedNick', [user.getPreviousNick(), user.getNick()]);
- self.Chat.infoMessage(roomJid, null, infoMessage);
+ Chat.infoMessage(roomJid, null, infoMessage);
// user has been kicked
} else if(action === 'kick') {
self.Roster.leaveAnimation('user-' + roomId + '-' + userId);
- self.Chat.onInfoMessage(roomJid, null, $.i18n._('userHasBeenKickedFromRoom', [user.getNick()]));
+ Chat.onInfoMessage(roomJid, null, $.i18n._('userHasBeenKickedFromRoom', [user.getNick()]));
// user has been banned
} else if(action === 'ban') {
self.Roster.leaveAnimation('user-' + roomId + '-' + userId);
- self.Chat.onInfoMessage(roomJid, null, $.i18n._('userHasBeenBannedFromRoom', [user.getNick()]));
+ Chat.onInfoMessage(roomJid, null, $.i18n._('userHasBeenBannedFromRoom', [user.getNick()]));
}
// Update user count
@@ -163,7 +167,7 @@ Candy.View.Pane = (function(self, $) {
});
var userInserted = false,
- rosterPane = self.Room.getPane(roomJid, '.roster-pane');
+ rosterPane = Room.getPane(roomJid, '.roster-pane');
// there are already users in the roster
if(rosterPane.children().length > 0) {
@@ -208,7 +212,7 @@ Candy.View.Pane = (function(self, $) {
realJid = elem.attr('data-real-jid'),
useRealJid = Candy.Core.getOptions().useParticipantRealJid && (realJid !== undefined && realJid !== null && realJid !== ''),
targetJid = useRealJid && realJid ? Strophe.getBareJidFromJid(realJid) : elem.attr('data-jid');
- self.PrivateRoom.open(targetJid, elem.attr('data-nick'), true, useRealJid);
+ PrivateRoom.open(targetJid, elem.attr('data-nick'), true, useRealJid);
},
/** Function: showJoinAnimation
@@ -223,12 +227,12 @@ Candy.View.Pane = (function(self, $) {
if (!user.getPreviousNick() || !$rosterUserElem || $rosterUserElem.is(':visible') === false) {
self.Roster.joinAnimation(rosterUserId);
// only show other users joining & don't show if there's no message in the room.
- if(currentUser !== undefined && user.getNick() !== currentUser.getNick() && self.Room.getUser(roomJid)) {
+ if(currentUser !== undefined && user.getNick() !== currentUser.getNick() && Room.getUser(roomJid)) {
// always show join message in private room, even if status messages have been disabled
- if (self.Chat.rooms[roomJid].type === 'chat') {
- self.Chat.onInfoMessage(roomJid, null, $.i18n._('userJoinedRoom', [user.getNick()]));
+ if (Chat.rooms[roomJid].type === 'chat') {
+ Chat.onInfoMessage(roomJid, null, $.i18n._('userJoinedRoom', [user.getNick()]));
} else {
- self.Chat.infoMessage(roomJid, null, $.i18n._('userJoinedRoom', [user.getNick()]));
+ Chat.infoMessage(roomJid, null, $.i18n._('userJoinedRoom', [user.getNick()]));
}
}
}
@@ -286,4 +290,6 @@ Candy.View.Pane = (function(self, $) {
};
return self;
-}(Candy.View.Pane || {}, jQuery));
+}({}, jQuery));
+
+export default Pane.Roster;
diff --git a/src/view/pane/window.js b/src/view/pane/window.js
index 00e2e69..0eb91a5 100644
--- a/src/view/pane/window.js
+++ b/src/view/pane/window.js
@@ -7,6 +7,9 @@
/* global Candy, jQuery, window */
+import Chat from './chat.js';
+import Room from './room.js';
+
/** Class: Candy.View.Pane
* Candy view pane handles everything regarding DOM updates etc.
*
@@ -14,7 +17,7 @@
* (Candy.View.Pane) self - itself
* (jQuery) $ - jQuery
*/
-Candy.View.Pane = (function(self) {
+var Pane = (function(self) {
/** Class: Candy.View.Pane.Window
* Window related view updates
@@ -94,8 +97,8 @@ Candy.View.Pane = (function(self) {
onFocus: function() {
self.Window._hasFocus = true;
if (Candy.View.getCurrent().roomJid) {
- self.Room.setFocusToForm(Candy.View.getCurrent().roomJid);
- self.Chat.clearUnreadMessages(Candy.View.getCurrent().roomJid);
+ Room.setFocusToForm(Candy.View.getCurrent().roomJid);
+ Chat.clearUnreadMessages(Candy.View.getCurrent().roomJid);
}
},
@@ -108,4 +111,6 @@ Candy.View.Pane = (function(self) {
};
return self;
-}(Candy.View.Pane || {}, jQuery));
+}({}, jQuery));
+
+export default Pane.Window;
diff --git a/src/view/template.js b/src/view/template.js
index 1e74011..089e519 100644
--- a/src/view/template.js
+++ b/src/view/template.js
@@ -5,12 +5,10 @@
*/
'use strict';
-/* global Candy */
-
/** Class: Candy.View.Template
* Contains mustache.js templates
*/
-Candy.View.Template = (function(self){
+export default (function(self){
self.Window = {
/**
* Unread messages - used to extend the window title
@@ -116,4 +114,4 @@ Candy.View.Template = (function(self){
};
return self;
-}(Candy.View.Template || {}));
+}({}));
diff --git a/src/view/translation.js b/src/view/translation.js
index 4222117..90cd5d4 100644
--- a/src/view/translation.js
+++ b/src/view/translation.js
@@ -5,12 +5,10 @@
*/
'use strict';
-/* global Candy */
-
/** Class: Candy.View.Translation
* Contains translations
*/
-Candy.View.Translation = {
+export default {
'en' : {
'status': 'Status: %s',
'statusConnecting': 'Connecting...',
diff --git a/tests/candy/unit/candy.js b/tests/candy/unit/candy.js
index bd3ea46..4d954f3 100644
--- a/tests/candy/unit/candy.js
+++ b/tests/candy/unit/candy.js
@@ -5,7 +5,7 @@ define([
, 'intern/chai!expect'
, 'intern/order!jquery'
, 'intern/order!candy/libs.bundle.js'
- , 'intern/order!candy/src/candy.js'
+ , 'intern/order!candy/candy.bundle.js'
], function (bdd, expect, $) {
bdd.describe('Candy', function () {
bdd.describe('event triggering', function () {
diff --git a/tests/candy/unit/util.js b/tests/candy/unit/util.js
index 227d7b1..1e06c3c 100644
--- a/tests/candy/unit/util.js
+++ b/tests/candy/unit/util.js
@@ -6,9 +6,7 @@ define([
, 'intern/chai!expect'
, 'intern/order!jquery'
, 'intern/order!candy/libs.bundle.js'
- , 'intern/order!candy/src/candy.js'
- , 'intern/order!candy/src/core.js'
- , 'intern/order!candy/src/util.js'
+ , 'intern/order!candy/candy.bundle.js'
], function (bdd, expect) {
bdd.describe('Candy.Util', function () {
bdd.describe('jidToId', function () {