kaiwa/clientapp/helpers/pushNotifications.js

80 lines
1.7 KiB
JavaScript

"use strict";
var jxt = require('jxt');
var JXT = jxt.createRegistry();
JXT.use(require('jxt-xmpp-types'));
JXT.use(require('jxt-xmpp'));
jxt.extend(JXT.getMessage(), jxt.define({
name: 'pushNotification',
namespace: 'urn:xmpp:push:0',
element: 'push',
fields: {
body: jxt.subText('urn:xmpp:push:0', 'body')
}
}));
jxt.extend(JXT.getIQ(), jxt.define({
name: 'registerPush',
namespace: 'urn:xmpp:push:0',
element: 'register',
fields: {
service: jxt.text()
}
}));
jxt.extend(JXT.getIQ(), jxt.define({
name: 'unregisterPush',
namespace: 'urn:xmpp:push:0',
element: 'unregister',
fields: {
service: jxt.text()
}
}));
jxt.extend(JXT.getIQ(), jxt.define({
name: 'otalkRegister',
namespace: 'http://otalk.im/protocol/push',
element: 'register',
fields: {
deviceID: jxt.text()
}
}));
module.exports = function (client) {
client.registerPushService = function (jid, cb) {
return client.sendIq({
type: 'set',
registerPush: {
service: jid
}
}, cb);
};
client.getPushServices = function (cb) {
return client.getDiscoItems('', 'urn:xmpp:push', cb);
};
client.unregisterPushService = function (jid, cb) {
return client.sendIq({
type: 'set',
unregisterPush: {
service: jid
}
}, cb);
};
client.otalkRegister = function (deviceID, cb) {
return client.sendIq({
type: 'set',
to: 'push@push.otalk.im/prod',
otalkRegister: {
deviceID: deviceID
}
}, cb);
};
};