Skip to content

Commit df7baad

Browse files
authored
Sprint 2.3.0
Added chat functionality for Node environment. Write chatbot example.
1 parent 3229781 commit df7baad

29 files changed

+3506
-2196
lines changed

.jshintrc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"browserify" : true,
66
"jasmine" : true,
77
"jquery" : true,
8-
"predef" : [
8+
"esnext" : true,
9+
"globals" : [
910
"jasmine",
1011
"describe",
1112
"xdescribe",

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,13 @@
4343
"dependencies": {
4444
"crypto-js": "3.1.2-2",
4545
"jquery": "^2.2.0",
46+
"node-xmpp-client": "^3.0.0",
4647
"request": "^2.48.0",
4748
"strophe.js": "^1.2.8",
4849
"xml2js": "^0.4.13"
4950
},
5051
"devDependencies": {
51-
"ghooks": "^1.0.3",
52+
"ghooks": "^1.3.2",
5253
"grunt": "^0.4.5",
5354
"grunt-browserify": "^3.2.1",
5455
"grunt-contrib-connect": "^0.9.0",

quickblox.min.js

Lines changed: 21 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

samples/chat/index.html

Lines changed: 50 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,47 @@
11
<!DOCTYPE html>
22
<html lang="en">
33
<head>
4-
<meta charset="UTF-8">
5-
<meta name="viewport" content="width=device-width, initial-scale=1">
6-
<title>QuickBlox JavaScript Chat code sample</title>
7-
<link rel="shortcut icon" href="https://quickblox.com/favicon.ico">
8-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.min.css">
9-
<link rel="stylesheet" href="libs/stickerpipe/css/stickerpipe.min.css">
10-
<link rel="stylesheet" href="css/style.css">
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1">
6+
<title>QuickBlox JavaScript Chat code sample</title>
7+
<link rel="shortcut icon" href="https://quickblox.com/favicon.ico">
8+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.min.css">
9+
<link rel="stylesheet" href="libs/stickerpipe/css/stickerpipe.min.css">
10+
<link rel="stylesheet" href="css/style.css">
1111
</head>
1212
<body>
13-
1413
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
15-
<div class="container">
16-
<div class="navbar-header">
17-
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
18-
<span class="sr-only">Toggle navigation</span>
19-
<span class="glyphicon glyphicon-cog"></span>
20-
</button>
21-
<a href="https://quickblox.com/developers/Chat"><img src="images/logo-quickblox.png" id="logo"></a>
14+
<div class="container">
15+
<div class="navbar-header">
16+
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
17+
<span class="sr-only">Toggle navigation</span>
18+
<span class="glyphicon glyphicon-cog"></span>
19+
</button>
20+
21+
<a href="https://quickblox.com/developers/Chat">
22+
<img src="images/logo-quickblox.png" id="logo">
23+
</a>
24+
</div>
25+
26+
<div class="collapse navbar-collapse">
27+
<ul class="nav navbar-nav">
28+
<li class="active">
29+
<a href="#">Chat</a>
30+
</li>
31+
<li>
32+
<a href="#" onclick="showNewDialogPopup()">Create dialog</a>
33+
</li>
34+
<li>
35+
<a href="#" onclick="showDialogInfoPopup()">Dialog info</a>
36+
</li>
37+
</ul>
38+
39+
<a href="https://github.com/QuickBlox/quickblox-javascript-sdk/tree/gh-pages/samples/chat"
40+
style="position:absolute;top:20px;right:12%;font-size:0.85em;color:grey;">
41+
View source on GitHub
42+
</a>
43+
</div><!--/.nav-collapse -->
2244
</div>
23-
<div class="collapse navbar-collapse">
24-
<ul class="nav navbar-nav">
25-
<li class="active"><a href="#">Chat</a></li>
26-
<li><a href="#" onclick="showNewDialogPopup()">Create dialog</a></li>
27-
<li><a href="#" onclick="showDialogInfoPopup()">Dialog info</a></li>
28-
</ul>
29-
<a href="https://github.com/QuickBlox/quickblox-javascript-sdk/tree/gh-pages/samples/chat"
30-
style="position:absolute;top:20px;right:12%;font-size:0.85em;color:grey;">View source on GitHub</a>
31-
</div><!--/.nav-collapse -->
32-
</div>
3345
</div>
3446

3547
<!-- Main block -->
@@ -158,20 +170,19 @@ <h5 class="col-md-12 col-sm-12 col-xs-12" id="all_occupants"></h5>
158170
</div>
159171

160172

161-
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js" type="text/javascript"></script>
162-
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.nicescroll/3.6.0/jquery.nicescroll.min.js" type="text/javascript"></script>
163-
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-timeago/1.4.1/jquery.timeago.min.js" type="text/javascript"></script>
164-
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/js/bootstrap.min.js" type="text/javascript"></script>
165-
166-
<script src="../../quickblox.min.js"></script>
167-
<script src="libs/stickerpipe/js/stickerpipe.js"></script>
168-
<script src="js/config.js"></script>
169-
<script src="js/connection.js"></script>
170-
<script src="js/messages.js"></script>
171-
<script src="js/stickerpipe.js"></script>
172-
<script src="js/ui_helpers.js"></script>
173-
<script src="js/dialogs.js"></script>
174-
<script src="js/users.js"></script>
173+
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
174+
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.nicescroll/3.6.0/jquery.nicescroll.min.js"></script>
175+
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-timeago/1.4.1/jquery.timeago.min.js"></script>
176+
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/js/bootstrap.min.js"></script>
175177

178+
<script src="../../quickblox.min.js"></script>
179+
<script src="libs/stickerpipe/js/stickerpipe.js"></script>
180+
<script src="js/config.js"></script>
181+
<script src="js/connection.js"></script>
182+
<script src="js/messages.js"></script>
183+
<script src="js/stickerpipe.js"></script>
184+
<script src="js/ui_helpers.js"></script>
185+
<script src="js/dialogs.js"></script>
186+
<script src="js/users.js"></script>
176187
</body>
177188
</html>

samples/chat/js/config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ var QBUser1 = {
3333
name: 'quickuser',
3434
login: 'chatusr11',
3535
pass: 'chatusr11'
36-
},
36+
},
3737
QBUser2 = {
3838
id: 6729119,
3939
name: 'bloxuser',

samples/chat/js/connection.js

Lines changed: 51 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,71 @@
1-
//"use strict";
1+
'use strict';
22

3-
var currentUser;
3+
var currentUser,
4+
token;
45

5-
$(document).ready(function() {
6+
$(function() {
7+
$('#loginForm').modal('show');
8+
$('#loginForm .progress').hide();
69

7-
$("#loginForm").modal("show");
8-
$('#loginForm .progress').hide();
10+
$('#user1').on('click', function() {
11+
currentUser = QBUser1;
12+
connectToChat(QBUser1);
13+
});
914

10-
// User1 login action
11-
//
12-
$('#user1').click(function() {
13-
currentUser = QBUser1;
14-
connectToChat(QBUser1);
15-
});
15+
$('#user2').on('click', function() {
16+
currentUser = QBUser2;
17+
connectToChat(QBUser2);
18+
});
1619

17-
// User2 login action
18-
//
19-
$('#user2').click(function() {
20-
currentUser = QBUser2;
21-
connectToChat(QBUser2);
22-
});
20+
var niceScrollSettings = {
21+
cursorcolor:'#02B923',
22+
cursorwidth:'7',
23+
zindex:'99999'
24+
};
25+
26+
$('html').niceScroll(niceScrollSettings);
27+
$('.nice-scroll').niceScroll(niceScrollSettings);
2328
});
2429

2530
function connectToChat(user) {
26-
$('#loginForm button').hide();
27-
$('#loginForm .progress').show();
28-
29-
// Create session and connect to chat
30-
//
31-
QB.createSession({login: user.login, password: user.pass}, function(err, res) {
32-
if (res) {
33-
// save session token
34-
token = res.token;
35-
36-
user.id = res.user_id;
37-
mergeUsers([{user: user}]);
38-
39-
QB.chat.connect({userId: user.id, password: user.pass}, function(err, roster) {
40-
if (err) {
41-
console.log(err);
42-
} else {
43-
console.log(roster);
44-
45-
// setup scroll stickerpipe module
46-
//
47-
setupStickerPipe();
48-
49-
// load chat dialogs
50-
//
51-
retrieveChatDialogs();
52-
53-
// setup message listeners
54-
//
55-
setupAllListeners();
56-
57-
// setup scroll events handler
58-
//
59-
setupMsgScrollHandler();
31+
$('#loginForm button').hide();
32+
$('#loginForm .progress').show();
33+
34+
QB.createSession({login: user.login, password: user.pass}, function(err, res) {
35+
if (res) {
36+
token = res.token;
37+
user.id = res.user_id;
38+
39+
mergeUsers([{user: user}]);
40+
41+
QB.chat.connect({userId: user.id, password: user.pass}, function(err, roster) {
42+
if (err) {
43+
console.log(err);
44+
} else {
45+
// setup scroll stickerpipe module
46+
setupStickerPipe();
47+
48+
retrieveChatDialogs();
49+
50+
// setup message listeners
51+
setupAllListeners();
52+
53+
// setup scroll events handler
54+
setupMsgScrollHandler();
55+
}
56+
});
6057
}
61-
});
62-
}
63-
});
58+
});
6459
}
6560

6661
function setupAllListeners() {
67-
QB.chat.onDisconnectedListener = onDisconnectedListener;
68-
QB.chat.onReconnectListener = onReconnectListener;
6962
QB.chat.onMessageListener = onMessage;
7063
QB.chat.onSystemMessageListener = onSystemMessageListener;
7164
QB.chat.onDeliveredStatusListener = onDeliveredStatusListener;
7265
QB.chat.onReadStatusListener = onReadStatusListener;
66+
7367
setupIsTypingHandler();
7468
}
75-
7669
// reconnection listeners
7770
function onDisconnectedListener(){
7871
console.log("onDisconnectedListener");
@@ -86,7 +79,6 @@ function onReconnectListener(){
8679
// niceScroll() - ON
8780
$(document).ready(
8881
function() {
89-
$("html").niceScroll({cursorcolor:"#02B923", cursorwidth:"7", zindex:"99999"});
90-
$(".nice-scroll").niceScroll({cursorcolor:"#02B923", cursorwidth:"7", zindex:"99999"});
82+
9183
}
9284
);

0 commit comments

Comments
 (0)