Use Stanza.io 6.10.2
This commit is contained in:
parent
735b9ca08f
commit
edc7151987
|
@ -2,8 +2,9 @@
|
|||
"use strict";
|
||||
|
||||
var _ = require('underscore');
|
||||
var async = require('async');
|
||||
var Backbone = require('backbone');
|
||||
Backbone.$ = $;
|
||||
var async = require('async');
|
||||
var StanzaIO = require('stanza.io');
|
||||
|
||||
var AppState = require('./models/state');
|
||||
|
@ -17,16 +18,16 @@ var Notify = require('notify.js');
|
|||
var Desktop = require('./helpers/desktop');
|
||||
var AppCache = require('./helpers/cache');
|
||||
|
||||
|
||||
module.exports = {
|
||||
launch: function () {
|
||||
|
||||
var self = window.app = this;
|
||||
var config = localStorage.config;
|
||||
|
||||
|
||||
if (!config) {
|
||||
console.log('missing config');
|
||||
window.location = '/login';
|
||||
return;
|
||||
}
|
||||
|
||||
config = JSON.parse(config);
|
||||
|
@ -128,5 +129,6 @@ module.exports = {
|
|||
}
|
||||
};
|
||||
|
||||
|
||||
module.exports.launch();
|
||||
$(function () {
|
||||
module.exports.launch();
|
||||
});
|
||||
|
|
|
@ -32,7 +32,6 @@ module.exports = function (jid, id, type, source, cb) {
|
|||
return cb(fallback(jid));
|
||||
}
|
||||
|
||||
resp = resp.toJSON();
|
||||
type = resp.vCardTemp.photo.type || type;
|
||||
|
||||
var data = resp.vCardTemp.photo.data;
|
||||
|
@ -53,7 +52,6 @@ module.exports = function (jid, id, type, source, cb) {
|
|||
return cb(fallback(jid));
|
||||
}
|
||||
|
||||
resp = resp.toJSON();
|
||||
var data = resp.pubsub.retrieve.item.avatarData;
|
||||
var uri = 'data:' + type + ';base64,' + data;
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ var discoCapsQueue = async.queue(function (pres, cb) {
|
|||
}
|
||||
if (client.verifyVerString(result.discoInfo, caps.hash, caps.ver)) {
|
||||
log.info('Saving info for ' + caps.ver);
|
||||
var data = result.discoInfo.toJSON();
|
||||
var data = result.discoInfo;
|
||||
app.storage.disco.add(caps.ver, data, function () {
|
||||
if (resource) resource.discoInfo = data;
|
||||
cb();
|
||||
|
@ -112,8 +112,6 @@ module.exports = function (client, app) {
|
|||
window.readyForDeviceID = true;
|
||||
|
||||
client.getRoster(function (err, resp) {
|
||||
resp = resp.toJSON();
|
||||
|
||||
if (resp.roster && resp.roster.items && resp.roster.items.length) {
|
||||
app.storage.roster.clear(function () {
|
||||
me.contacts.reset();
|
||||
|
@ -143,7 +141,6 @@ module.exports = function (client, app) {
|
|||
});
|
||||
|
||||
client.on('roster:update', function (iq) {
|
||||
iq = iq.toJSON();
|
||||
var items = iq.roster.items;
|
||||
|
||||
me.rosterVer = iq.roster.ver;
|
||||
|
@ -169,7 +166,6 @@ module.exports = function (client, app) {
|
|||
});
|
||||
|
||||
client.on('available', function (pres) {
|
||||
pres = pres.toJSON();
|
||||
var contact = me.getContact(pres.from);
|
||||
if (contact) {
|
||||
delete pres.id;
|
||||
|
@ -206,7 +202,6 @@ module.exports = function (client, app) {
|
|||
});
|
||||
|
||||
client.on('unavailable', function (pres) {
|
||||
pres = pres.toJSON();
|
||||
var contact = me.getContact(pres.from);
|
||||
if (contact) {
|
||||
var resource = contact.resources.get(pres.from.full);
|
||||
|
@ -273,7 +268,6 @@ module.exports = function (client, app) {
|
|||
});
|
||||
|
||||
client.on('chat', function (msg) {
|
||||
msg = msg.toJSON();
|
||||
msg.mid = msg.id;
|
||||
delete msg.id;
|
||||
|
||||
|
@ -298,7 +292,6 @@ module.exports = function (client, app) {
|
|||
});
|
||||
|
||||
client.on('groupchat', function (msg) {
|
||||
msg = msg.toJSON();
|
||||
msg.mid = msg.id;
|
||||
delete msg.id;
|
||||
|
||||
|
@ -318,7 +311,6 @@ module.exports = function (client, app) {
|
|||
});
|
||||
|
||||
client.on('replace', function (msg) {
|
||||
msg = msg.toJSON();
|
||||
msg.mid = msg.id;
|
||||
delete msg.id;
|
||||
|
||||
|
@ -333,8 +325,6 @@ module.exports = function (client, app) {
|
|||
});
|
||||
|
||||
client.on('receipt', function (msg) {
|
||||
msg = msg.toJSON();
|
||||
|
||||
var contact = me.getContact(msg.from, msg.to);
|
||||
if (!contact) return;
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -313,7 +313,6 @@ module.exports = HumanModel.define({
|
|||
var results = res.mamQuery.results || [];
|
||||
results.reverse();
|
||||
results.forEach(function (result) {
|
||||
result = result.toJSON();
|
||||
var msg = result.mam.forwarded.message;
|
||||
|
||||
msg.mid = msg.id;
|
||||
|
|
|
@ -115,7 +115,7 @@ module.exports = HumanModel.define({
|
|||
app.whenConnected(function () {
|
||||
client.getDiscoInfo(self.id, '', function (err, res) {
|
||||
if (err) return;
|
||||
self.discoInfo = res.discoInfo.toJSON();
|
||||
self.discoInfo = res.discoInfo;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
@ -211,16 +211,17 @@ module.exports = BasePage.extend({
|
|||
this.$('button.call').prop('disabled', !resources.length);
|
||||
},
|
||||
appendModel: function (model, preload) {
|
||||
var newEl, first, last;
|
||||
var newEl, first, last, newDay = false;
|
||||
|
||||
var messageDay = Date.create(model.timestamp).format('{month} {ord}, {yyyy}');
|
||||
if (messageDay !== this.lastDate) {
|
||||
var dayDivider = $(templates.includes.dayDivider({day_name: messageDay}));
|
||||
this.staydown.append(dayDivider[0]);
|
||||
this.lastDate = messageDay;
|
||||
newDay = true;
|
||||
}
|
||||
|
||||
var isGrouped = model.shouldGroupWith(this.lastModel);
|
||||
var isGrouped = !newDay && model.shouldGroupWith(this.lastModel);
|
||||
if (isGrouped) {
|
||||
newEl = $(model.partialTemplateHtml);
|
||||
last = this.$messageList.find('li').last();
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,17 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html manifest="/manifest.cache">
|
||||
<head>
|
||||
<title>Otalk</title>
|
||||
<link rel="stylesheet" type="text/css" href="#{cssFileName}" />
|
||||
<script src="#{jsFileName}"></script>
|
||||
</head>
|
||||
<body class="aux">
|
||||
<header>
|
||||
<img id="logo" src="/images/logo.png" alt="Otalk" />
|
||||
</header>
|
||||
<section class="box connect">
|
||||
<h2>Connecting...</h2>
|
||||
<a class="button secondary" href="/logout">Cancel</a>
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
32
package.json
32
package.json
|
@ -1,41 +1,43 @@
|
|||
{
|
||||
"name": "otalk.im",
|
||||
"description": "Otalk: WebRTC Enabled XMPP Client, in the Browser",
|
||||
"version": "0.0.40",
|
||||
"version": "0.0.50",
|
||||
"browser": {
|
||||
"crypto": "crypto-browserify"
|
||||
},
|
||||
"dependencies": {
|
||||
"andlog": "0.0.4",
|
||||
"async": "0.2.9",
|
||||
"async": "^0.9.0",
|
||||
"attachmediastream": "1.0.1",
|
||||
"backbone": "1.0.0",
|
||||
"bluebird": "1.0.0",
|
||||
"bluebird": "^2.3.2",
|
||||
"bows": "0.3.0",
|
||||
"browserify": "2.25.1",
|
||||
"crypto-browserify": "1.0.3",
|
||||
"express": "3.3.7",
|
||||
"browserify": "4.x",
|
||||
"compression": "1.2.2",
|
||||
"crypto-browserify": "",
|
||||
"express": "4.10.6",
|
||||
"getconfig": "0.0.5",
|
||||
"getusermedia": "0.2.1",
|
||||
"helmet": "0.1.0",
|
||||
"human-model": "2.6.0",
|
||||
"human-view": "1.5.0",
|
||||
"jade": "0.35.0",
|
||||
"jxt": "0.6.0",
|
||||
"moonboots": "1.0.0",
|
||||
"node-uuid": "1.4.1",
|
||||
"human-view": "1.8.0",
|
||||
"jade": "1.8.2",
|
||||
"jxt": "^2.6.1",
|
||||
"moonboots-express": "2.x",
|
||||
"node-uuid": "^1.4.1",
|
||||
"notify.js": "0.0.3",
|
||||
"oembed": "0.1.0",
|
||||
"semi-static": "0.0.4",
|
||||
"serve-static": "1.7.1",
|
||||
"sound-effect-manager": "0.0.5",
|
||||
"stanza.io": "3.6.x",
|
||||
"stanza.io": "6.10.2",
|
||||
"staydown": "1.0.3",
|
||||
"templatizer": "0.1.2",
|
||||
"underscore": "1.5.1",
|
||||
"wildemitter": "1.0.1"
|
||||
"underscore": "1.6.0",
|
||||
"wildemitter": "^1.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"precommit-hook": "0.3.6"
|
||||
"precommit-hook": "^1.0.2"
|
||||
},
|
||||
"license": "MIT",
|
||||
"main": "server.js",
|
||||
|
|
121
server.js
121
server.js
|
@ -2,17 +2,18 @@ var fs = require('fs');
|
|||
var https = require('https');
|
||||
var express = require('express');
|
||||
var helmet = require('helmet');
|
||||
var Moonboots = require('moonboots');
|
||||
var Moonboots = require('moonboots-express');
|
||||
var config = require('getconfig');
|
||||
var templatizer = require('templatizer');
|
||||
var oembed = require('oembed');
|
||||
var async = require('async');
|
||||
|
||||
|
||||
var app = express();
|
||||
var compression = require('compression');
|
||||
var serveStatic = require('serve-static');
|
||||
|
||||
app.use(express.compress());
|
||||
app.use(express.static(__dirname + '/public'));
|
||||
app.use(compression());
|
||||
app.use(serveStatic(__dirname + '/public'));
|
||||
if (!config.isDev) {
|
||||
app.use(helmet.xframe());
|
||||
}
|
||||
|
@ -22,58 +23,9 @@ app.use(helmet.contentTypeOptions());
|
|||
oembed.EMBEDLY_URL = config.embedly.url || 'https://api.embed.ly/1/oembed';
|
||||
oembed.EMBEDLY_KEY = config.embedly.key;
|
||||
|
||||
var clientApp = new Moonboots({
|
||||
main: __dirname + '/clientapp/app.js',
|
||||
templateFile: __dirname + '/clientapp/templates/main.html',
|
||||
developmentMode: config.isDev,
|
||||
cachePeriod: 0,
|
||||
libraries: [
|
||||
__dirname + '/clientapp/libraries/jquery.js',
|
||||
__dirname + '/clientapp/libraries/ui.js',
|
||||
__dirname + '/clientapp/libraries/resampler.js',
|
||||
__dirname + '/clientapp/libraries/IndexedDBShim.min.js',
|
||||
__dirname + '/clientapp/libraries/sugar-1.2.1-dates.js'
|
||||
],
|
||||
browserify: {
|
||||
debug: false
|
||||
},
|
||||
stylesheets: [
|
||||
__dirname + '/public/css/otalk.css'
|
||||
],
|
||||
server: app
|
||||
});
|
||||
|
||||
if (config.isDev) {
|
||||
clientApp.config.beforeBuildJS = function () {
|
||||
var clientFolder = __dirname + '/clientapp';
|
||||
templatizer(clientFolder + '/templates', clientFolder + '/templates.js');
|
||||
};
|
||||
}
|
||||
|
||||
clientApp.on('ready', function () {
|
||||
console.log('Client app ready');
|
||||
var pkginfo = JSON.parse(fs.readFileSync(__dirname + '/package.json'));
|
||||
|
||||
var manifestTemplate = fs.readFileSync(__dirname + '/clientapp/templates/misc/manifest.cache', 'utf-8');
|
||||
var cacheManifest = manifestTemplate
|
||||
.replace('#{version}', pkginfo.version + config.isDev ? ' ' + Date.now() : '')
|
||||
.replace('#{jsFileName}', clientApp.jsFileName())
|
||||
.replace('#{cssFileName}', clientApp.cssFileName());
|
||||
console.log('Cache manifest generated');
|
||||
|
||||
|
||||
app.get('/manifest.cache', function (req, res, next) {
|
||||
res.set('Content-Type', 'text/cache-manifest');
|
||||
res.set('Cache-Control', 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0');
|
||||
res.send(cacheManifest);
|
||||
});
|
||||
|
||||
// serves app on every other url
|
||||
app.get('*', clientApp.html());
|
||||
});
|
||||
|
||||
var webappManifest = fs.readFileSync('./public/x-manifest.webapp');
|
||||
|
||||
app.set('views', __dirname + '/views');
|
||||
app.set('view engine', 'jade');
|
||||
|
||||
app.get('/login', function (req, res) {
|
||||
|
@ -168,9 +120,66 @@ app.use(function handleError(err, req, res, next) {
|
|||
res.render('error', errorResult);
|
||||
});
|
||||
|
||||
var clientApp = new Moonboots({
|
||||
moonboots: {
|
||||
main: __dirname + '/clientapp/app.js',
|
||||
developmentMode: config.isDev,
|
||||
libraries: [
|
||||
__dirname + '/clientapp/libraries/jquery.js',
|
||||
__dirname + '/clientapp/libraries/ui.js',
|
||||
__dirname + '/clientapp/libraries/resampler.js',
|
||||
__dirname + '/clientapp/libraries/IndexedDBShim.min.js',
|
||||
__dirname + '/clientapp/libraries/sugar-1.2.1-dates.js'
|
||||
],
|
||||
browserify: {
|
||||
debug: false
|
||||
},
|
||||
stylesheets: [
|
||||
__dirname + '/public/css/otalk.css'
|
||||
],
|
||||
beforeBuildJS: function () {
|
||||
if (config.isDev) {
|
||||
var clientFolder = __dirname + '/clientapp';
|
||||
templatizer(clientFolder + '/templates', clientFolder + '/templates.js');
|
||||
}
|
||||
}
|
||||
},
|
||||
server: app,
|
||||
cachePeriod: 0,
|
||||
render: function (req, res) {
|
||||
res.render('index');
|
||||
}
|
||||
});
|
||||
|
||||
clientApp.on('ready', function () {
|
||||
console.log('Client app ready');
|
||||
var pkginfo = JSON.parse(fs.readFileSync(__dirname + '/package.json'));
|
||||
|
||||
var manifestTemplate = fs.readFileSync(__dirname + '/clientapp/templates/misc/manifest.cache', 'utf-8');
|
||||
var cacheManifest = manifestTemplate
|
||||
.replace('#{version}', pkginfo.version + config.isDev ? ' ' + Date.now() : '')
|
||||
.replace('#{jsFileName}', clientApp.moonboots.jsFileName())
|
||||
.replace('#{cssFileName}', clientApp.moonboots.cssFileName());
|
||||
console.log('Cache manifest generated');
|
||||
|
||||
|
||||
app.get('/manifest.cache', function (req, res, next) {
|
||||
res.set('Content-Type', 'text/cache-manifest');
|
||||
res.set('Cache-Control', 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0');
|
||||
res.send(cacheManifest);
|
||||
});
|
||||
|
||||
// serves app on every other url
|
||||
app.get('*', function (req, res) {
|
||||
res.render(clientApp.moonboots.htmlSource());
|
||||
});
|
||||
});
|
||||
|
||||
//https.createServer({
|
||||
// key: fs.readFileSync(config.http.key),
|
||||
// cert: fs.readFileSync(config.http.cert)
|
||||
//}, app).listen(config.http.port);
|
||||
app.listen(config.http.port);
|
||||
console.log('demo.stanza.io running at: ' + config.http.baseUrl);
|
||||
|
||||
app.listen(config.http.port, function () {
|
||||
console.log('demo.stanza.io running at: ' + config.http.baseUrl);
|
||||
})
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue