You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-08-19 16:42:09 +03:00
Merge branch 'develop' into push
Conflicts: lib/client.js
This commit is contained in:
@@ -8,6 +8,8 @@ New features:
|
|||||||
New methods:
|
New methods:
|
||||||
* `MatrixScheduler.getQueueForEvent(event)`
|
* `MatrixScheduler.getQueueForEvent(event)`
|
||||||
* `MatrixScheduler.removeEventFromQueue(event)`
|
* `MatrixScheduler.removeEventFromQueue(event)`
|
||||||
|
* `$DATA_STORE.setSyncToken(token)`
|
||||||
|
* `$DATA_STORE.getSyncToken()`
|
||||||
|
|
||||||
Bug fixes:
|
Bug fixes:
|
||||||
* Fixed an issue which prevented RoomMember.name being disambiguated if there
|
* Fixed an issue which prevented RoomMember.name being disambiguated if there
|
||||||
|
@@ -54,8 +54,6 @@ function MatrixClient(opts) {
|
|||||||
return _sendEventHttpRequest(self, eventToSend);
|
return _sendEventHttpRequest(self, eventToSend);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// track our position in the overall eventstream
|
|
||||||
this.fromToken = undefined;
|
|
||||||
this.clientRunning = false;
|
this.clientRunning = false;
|
||||||
|
|
||||||
var httpOpts = {
|
var httpOpts = {
|
||||||
@@ -1025,7 +1023,7 @@ function doInitialSync(client, historyLen) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
client.fromToken = data.end;
|
client.store.setSyncToken(data.end);
|
||||||
var events = [];
|
var events = [];
|
||||||
for (i = 0; i < data.presence.length; i++) {
|
for (i = 0; i < data.presence.length; i++) {
|
||||||
events.push(new MatrixEvent(data.presence[i]));
|
events.push(new MatrixEvent(data.presence[i]));
|
||||||
@@ -1071,7 +1069,7 @@ MatrixClient.prototype.startClient = function(historyLen) {
|
|||||||
// client is already running.
|
// client is already running.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (this.fromToken) {
|
if (this.store.getSyncToken()) {
|
||||||
// resume from where we left off.
|
// resume from where we left off.
|
||||||
_pollForEvents(this);
|
_pollForEvents(this);
|
||||||
return;
|
return;
|
||||||
@@ -1102,7 +1100,7 @@ function _pollForEvents(client) {
|
|||||||
}, 40000);
|
}, 40000);
|
||||||
|
|
||||||
client._http.authedRequest(undefined, "GET", "/events", {
|
client._http.authedRequest(undefined, "GET", "/events", {
|
||||||
from: client.fromToken,
|
from: client.store.getSyncToken(),
|
||||||
timeout: 30000
|
timeout: 30000
|
||||||
}).done(function(data) {
|
}).done(function(data) {
|
||||||
if (discardResult) {
|
if (discardResult) {
|
||||||
@@ -1167,7 +1165,7 @@ function _pollForEvents(client) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (data) {
|
if (data) {
|
||||||
self.fromToken = data.end;
|
self.store.setSyncToken(data.end);
|
||||||
utils.forEach(events, function(e) {
|
utils.forEach(events, function(e) {
|
||||||
self.emit("event", e);
|
self.emit("event", e);
|
||||||
});
|
});
|
||||||
|
@@ -6,6 +6,8 @@ module.exports.MatrixEvent = require("./models/event").MatrixEvent;
|
|||||||
module.exports.EventStatus = require("./models/event").EventStatus;
|
module.exports.EventStatus = require("./models/event").EventStatus;
|
||||||
/** The {@link module:store/memory.MatrixInMemoryStore|MatrixInMemoryStore} class. */
|
/** The {@link module:store/memory.MatrixInMemoryStore|MatrixInMemoryStore} class. */
|
||||||
module.exports.MatrixInMemoryStore = require("./store/memory").MatrixInMemoryStore;
|
module.exports.MatrixInMemoryStore = require("./store/memory").MatrixInMemoryStore;
|
||||||
|
/** The {@link module:store/localstorage.LocalStorageStore|LocalStorageStore} class. */
|
||||||
|
module.exports.LocalStorageStore = require("./store/localstorage");
|
||||||
/** The {@link module:http-api.MatrixHttpApi|MatrixHttpApi} class. */
|
/** The {@link module:http-api.MatrixHttpApi|MatrixHttpApi} class. */
|
||||||
module.exports.MatrixHttpApi = require("./http-api").MatrixHttpApi;
|
module.exports.MatrixHttpApi = require("./http-api").MatrixHttpApi;
|
||||||
/** The {@link module:http-api.MatrixError|MatrixError} class. */
|
/** The {@link module:http-api.MatrixError|MatrixError} class. */
|
||||||
|
92
lib/store/localstorage.js
Normal file
92
lib/store/localstorage.js
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
"use strict";
|
||||||
|
/**
|
||||||
|
* This is an internal module.
|
||||||
|
* @module store/localstorage
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a localstorage store.
|
||||||
|
* @constructor
|
||||||
|
* @throws if the global 'localStorage' does not exist.
|
||||||
|
*/
|
||||||
|
function LocalStorageStore() {
|
||||||
|
if (!global.localStorage) {
|
||||||
|
throw new Error("localStorage not found.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LocalStorageStore.prototype = {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the token to stream from.
|
||||||
|
* @return {string} The token or null.
|
||||||
|
*/
|
||||||
|
getSyncToken: function() {
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the token to stream from.
|
||||||
|
* @param {string} token The token to stream from.
|
||||||
|
*/
|
||||||
|
setSyncToken: function(token) {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a room in local storage.
|
||||||
|
* @param {Room} room
|
||||||
|
*/
|
||||||
|
storeRoom: function(room) {
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve a room from local storage.
|
||||||
|
* @param {string} roomId
|
||||||
|
* @return {null}
|
||||||
|
*/
|
||||||
|
getRoom: function(roomId) {
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of all rooms from local storage.
|
||||||
|
* @return {Array} An empty array.
|
||||||
|
*/
|
||||||
|
getRooms: function() {
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of summaries from local storage.
|
||||||
|
* @return {Array} An empty array.
|
||||||
|
*/
|
||||||
|
getRoomSummaries: function() {
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a user in local storage.
|
||||||
|
* @param {User} user
|
||||||
|
*/
|
||||||
|
storeUser: function(user) {
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a user from local storage.
|
||||||
|
* @param {string} userId
|
||||||
|
* @return {null}
|
||||||
|
*/
|
||||||
|
getUser: function(userId) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
//setMaxHistoryPerRoom: function(maxHistory) {},
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
//reapOldMessages: function() {},
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Local Storage Store class. */
|
||||||
|
module.exports = LocalStorageStore;
|
@@ -16,10 +16,27 @@ module.exports.MatrixInMemoryStore = function MatrixInMemoryStore() {
|
|||||||
this.users = {
|
this.users = {
|
||||||
// userId: User
|
// userId: User
|
||||||
};
|
};
|
||||||
|
this.syncToken = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports.MatrixInMemoryStore.prototype = {
|
module.exports.MatrixInMemoryStore.prototype = {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the token to stream from.
|
||||||
|
* @return {string} The token or null.
|
||||||
|
*/
|
||||||
|
getSyncToken: function() {
|
||||||
|
return this.syncToken;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the token to stream from.
|
||||||
|
* @param {string} token The token to stream from.
|
||||||
|
*/
|
||||||
|
setSyncToken: function(token) {
|
||||||
|
this.syncToken = token;
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store the given room.
|
* Store the given room.
|
||||||
* @param {Room} room The room to be stored. All properties must be stored.
|
* @param {Room} room The room to be stored. All properties must be stored.
|
||||||
|
@@ -5,15 +5,31 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a stub store. This does no-ops on all store methods.
|
* Construct a stub store. This does no-ops on most store methods.
|
||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
function StubStore() {
|
function StubStore() {
|
||||||
|
this.fromToken = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
StubStore.prototype = {
|
StubStore.prototype = {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the sync token.
|
||||||
|
* @return {string}
|
||||||
|
*/
|
||||||
|
getSyncToken: function() {
|
||||||
|
return this.fromToken;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the sync token.
|
||||||
|
* @param {string} token
|
||||||
|
*/
|
||||||
|
setSyncToken: function(token) {
|
||||||
|
this.fromToken = token;
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* No-op.
|
* No-op.
|
||||||
* @param {Room} room
|
* @param {Room} room
|
||||||
|
Reference in New Issue
Block a user