RefreshToken support and matrix fixes
Also, some initial TypeScript.
This commit is contained in:
parent
f8f6c2ed94
commit
a6d932ddb5
8 changed files with 169 additions and 120 deletions
|
|
@ -85,19 +85,19 @@ export default {
|
|||
|
||||
joinedRooms() {
|
||||
return this.rooms.filter((room) => {
|
||||
return room.selfMembership === "join";
|
||||
return room.getMyMembership() === "join";
|
||||
});
|
||||
},
|
||||
|
||||
invites() {
|
||||
return this.rooms.filter((room) => {
|
||||
return room.selfMembership === "invite";
|
||||
return room.getMyMembership() === "invite";
|
||||
});
|
||||
},
|
||||
|
||||
joinedAndInvitedRooms() {
|
||||
return this.rooms.filter((room) => {
|
||||
return room.selfMembership === "join" || room.selfMembership === "invite";
|
||||
return room.getMyMembership() === "join" || room.getMyMembership() === "invite";
|
||||
});
|
||||
},
|
||||
},
|
||||
|
|
@ -313,6 +313,8 @@ export default {
|
|||
store: matrixStore,
|
||||
deviceId: user.device_id,
|
||||
accessToken: user.access_token,
|
||||
refreshToken: user.refresh_token,
|
||||
tokenRefreshFunction: this.onSessionRefresh,
|
||||
timelineSupport: true,
|
||||
unstableClientRelationAggregation: true,
|
||||
cryptoStore: cryptoStore
|
||||
|
|
@ -413,7 +415,7 @@ export default {
|
|||
case "m.room.join_rules":
|
||||
{
|
||||
const room = this.matrixClient.getRoom(event.getRoomId());
|
||||
if (room && room.getJoinRule() == "private" && room.selfMembership == "invite") {
|
||||
if (room && room.getJoinRule() == "private" && room.getMyMembership() == "invite") {
|
||||
// We have an invite to a room that's now "private"? This is most probably a deleted DM room.
|
||||
// Reject the invite, i.e. call "leave" on it.
|
||||
this.matrixClient.leave(room.roomId);
|
||||
|
|
@ -451,7 +453,7 @@ export default {
|
|||
},
|
||||
|
||||
onRoom(room) {
|
||||
if (room.selfMembership === "invite") {
|
||||
if (room.getMyMembership() === "invite") {
|
||||
this.matrixClient
|
||||
.getRoomTags(room.roomId)
|
||||
.then((reply) => {
|
||||
|
|
@ -468,7 +470,7 @@ export default {
|
|||
},
|
||||
|
||||
onRoomMyMembership(room) {
|
||||
if (room.selfMembership === "invite") {
|
||||
if (room.getMyMembership() === "invite") {
|
||||
// Invitation. Need to call "recalculate" to pick
|
||||
// up room name, not sure why exactly.
|
||||
room.recalculate();
|
||||
|
|
@ -476,6 +478,28 @@ export default {
|
|||
this.reloadRooms();
|
||||
},
|
||||
|
||||
onSessionRefresh(refreshToken) {
|
||||
const now = Date.now();
|
||||
return this.matrixClient.refreshToken(refreshToken).then((result) => {
|
||||
// Store new one!
|
||||
var user = this.$store.state.auth.user;
|
||||
user.access_token = result.access_token;
|
||||
user.refresh_token = result.refresh_token;
|
||||
user.expires_in_ms = result.expires_in_ms;
|
||||
this.$store.commit("setUser", user);
|
||||
|
||||
// Return AccessTokens struct
|
||||
let accesssTokens = {
|
||||
accessToken: result.access_token,
|
||||
refreshToken: result.refresh_token
|
||||
};
|
||||
if (result.expires_in_ms) {
|
||||
accesssTokens.expiry = new Date(now + result.expires_in_ms);
|
||||
};
|
||||
return accesssTokens;
|
||||
});
|
||||
},
|
||||
|
||||
onSessionLoggedOut() {
|
||||
console.log("Logged out!");
|
||||
if (this.matrixClient) {
|
||||
|
|
@ -517,7 +541,7 @@ export default {
|
|||
// each time!
|
||||
var updatedRooms = this.matrixClient.getVisibleRooms();
|
||||
updatedRooms = updatedRooms.filter((room) => {
|
||||
return room.selfMembership && (room.selfMembership == "invite" || room.selfMembership == "join") && room.currentState.getStateEvents(STATE_EVENT_ROOM_DELETED).length == 0;
|
||||
return room.getMyMembership() && (room.getMyMembership() == "invite" || room.getMyMembership() == "join") && room.currentState.getStateEvents(STATE_EVENT_ROOM_DELETED).length == 0;
|
||||
});
|
||||
updatedRooms.forEach((room) => {
|
||||
room["avatar"] = room.getAvatarUrl(this.matrixClient.getHomeserverUrl(), 80, 80, "scale", true, this.useAuthedMedia);
|
||||
|
|
@ -567,7 +591,7 @@ export default {
|
|||
var ids = {};
|
||||
const ret = [];
|
||||
for (const room of this.rooms) {
|
||||
if (room.selfMembership == "join" && this.getRoomJoinRule(room) == "invite") {
|
||||
if (room.getMyMembership() == "join" && this.getRoomJoinRule(room) == "invite") {
|
||||
for (const member of room.getJoinedMembers()) {
|
||||
if (member.userId != this.currentUserId && !ids[member.userId]) {
|
||||
ids[member.userId] = member;
|
||||
|
|
@ -842,7 +866,7 @@ export default {
|
|||
})
|
||||
.then(() => {
|
||||
//console.log("Purge: create timeline");
|
||||
return timelineWindow.load(null, 100);
|
||||
return timelineWindow.load(undefined, 100);
|
||||
})
|
||||
.then(() => {
|
||||
const getMoreIfAvailable = function _getMoreIfAvailable() {
|
||||
|
|
@ -1234,7 +1258,7 @@ export default {
|
|||
since: response.next_batch,
|
||||
})
|
||||
.then((response) => {
|
||||
return _findOrGetMore(client, response);
|
||||
return _findOrGetMore(client, useAuthedMedia, response);
|
||||
})
|
||||
.catch((err) => {
|
||||
return Promise.reject("Failed to find room: " + err);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue