mirror of
https://github.com/status-im/realm-js.git
synced 2025-01-10 22:36:01 +00:00
support notifications in chrome
This commit is contained in:
parent
6f57500972
commit
bb68e45250
@ -15,7 +15,6 @@ let propTypes = {};
|
|||||||
|
|
||||||
[
|
[
|
||||||
'FUNCTION',
|
'FUNCTION',
|
||||||
'NOTIFICATION',
|
|
||||||
'REALM',
|
'REALM',
|
||||||
'RESULTS',
|
'RESULTS',
|
||||||
].forEach(function(type) {
|
].forEach(function(type) {
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
const constants = require('./constants');
|
|
||||||
|
|
||||||
const {keys} = constants;
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
create,
|
|
||||||
};
|
|
||||||
|
|
||||||
class Notification {}
|
|
||||||
|
|
||||||
function create(realmId, info) {
|
|
||||||
let notification = new Notification();
|
|
||||||
|
|
||||||
notification[keys.realm] = realmId;
|
|
||||||
notification[keys.id] = info.id;
|
|
||||||
notification[keys.type] = info.type;
|
|
||||||
|
|
||||||
return notification;
|
|
||||||
}
|
|
30
lib/realm.js
30
lib/realm.js
@ -3,21 +3,18 @@
|
|||||||
const constants = require('./constants');
|
const constants = require('./constants');
|
||||||
const lists = require('./lists');
|
const lists = require('./lists');
|
||||||
const objects = require('./objects');
|
const objects = require('./objects');
|
||||||
const notifications = require('./notifications');
|
|
||||||
const results = require('./results');
|
const results = require('./results');
|
||||||
const rpc = require('./rpc');
|
const rpc = require('./rpc');
|
||||||
const util = require('./util');
|
const util = require('./util');
|
||||||
|
|
||||||
const {keys, propTypes, objectTypes} = constants;
|
const {keys, propTypes, objectTypes} = constants;
|
||||||
const notificationsKey = Symbol();
|
const notificationsKey = Symbol();
|
||||||
const notificationCallbackKey = Symbol();
|
|
||||||
const resultsKey = Symbol();
|
const resultsKey = Symbol();
|
||||||
|
|
||||||
// TODO: DATA
|
// TODO: DATA
|
||||||
rpc.registerTypeConverter(propTypes.DATE, (_, info) => new Date(info.value));
|
rpc.registerTypeConverter(propTypes.DATE, (_, info) => new Date(info.value));
|
||||||
rpc.registerTypeConverter(propTypes.LIST, lists.create);
|
rpc.registerTypeConverter(propTypes.LIST, lists.create);
|
||||||
rpc.registerTypeConverter(propTypes.OBJECT, objects.create);
|
rpc.registerTypeConverter(propTypes.OBJECT, objects.create);
|
||||||
rpc.registerTypeConverter(objectTypes.NOTIFICATION, notifications.create);
|
|
||||||
rpc.registerTypeConverter(objectTypes.RESULTS, results.create);
|
rpc.registerTypeConverter(objectTypes.RESULTS, results.create);
|
||||||
|
|
||||||
class Realm {
|
class Realm {
|
||||||
@ -53,18 +50,26 @@ class Realm {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
addNotification(callback) {
|
addListener(callback) {
|
||||||
if (typeof callback != 'function') {
|
if (typeof callback != 'function') {
|
||||||
throw new Error('Realm.addNotification must be passed a function!');
|
throw new Error('Realm.addListener must be passed a function!');
|
||||||
}
|
}
|
||||||
|
this[notificationsKey].push(callback);
|
||||||
|
}
|
||||||
|
|
||||||
let method = util.createMethod(objectTypes.REALM, 'addNotification');
|
|
||||||
let notification = method.apply(this, arguments);
|
|
||||||
|
|
||||||
notification[notificationCallbackKey] = callback;
|
removeListener(callback) {
|
||||||
|
if (typeof callback != 'function') {
|
||||||
|
throw new Error('Realm.addListener must be passed a function!');
|
||||||
|
}
|
||||||
|
var index = 0;
|
||||||
|
while((index = this[notificationsKey].indexOf(callback, index)) != -1) {
|
||||||
|
this[notificationsKey].splice(index, 1);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
this[notificationsKey].push(notification);
|
removeAllListeners() {
|
||||||
return notification;
|
this[notificationsKey] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
objects() {
|
objects() {
|
||||||
@ -100,9 +105,8 @@ class Realm {
|
|||||||
results[keys.resize]();
|
results[keys.resize]();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let notification of this[notificationsKey]) {
|
for (let callback of this[notificationsKey]) {
|
||||||
let callback = notification[notificationCallbackKey];
|
callback(this, 'change');
|
||||||
callback(this, 'DidChangeNotification');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user