mirror of
https://github.com/vector-im/hydrogen-web.git
synced 2024-11-20 03:25:52 +01:00
Merge pull request #1153 from element-hq/hs/add-ability-to-adjust-token-on-api
Add ability to adjust the token on the homeserver API.
This commit is contained in:
commit
43825ee8df
@ -337,6 +337,19 @@ export class Client {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the access token in use by the client.
|
||||
* Will also update the token in session storage.
|
||||
* @param {string} token A Matrix Access Token
|
||||
*/
|
||||
async updateAccessToken(token) {
|
||||
if (!this._session) {
|
||||
throw Error("No session loaded, cannot update access token");
|
||||
}
|
||||
this._session.updateAccessToken(token);
|
||||
await this._platform.sessionInfoStorage.updateAccessToken(this._sessionId, token);
|
||||
}
|
||||
|
||||
async _waitForFirstSync() {
|
||||
this._sync.start();
|
||||
this._status.set(LoadStatus.FirstSync);
|
||||
|
@ -1094,6 +1094,15 @@ export class Session {
|
||||
return body.room_id;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the access token used by the API. Does NOT
|
||||
* change the token in storage.
|
||||
* @param {string} token
|
||||
*/
|
||||
updateAccessToken(token) {
|
||||
this._hsApi.updateAccessToken(token);
|
||||
}
|
||||
}
|
||||
|
||||
import {FeatureSet} from "../features";
|
||||
|
@ -46,7 +46,7 @@ type BaseRequestOptions = {
|
||||
|
||||
export class HomeServerApi {
|
||||
private readonly _homeserver: string;
|
||||
private readonly _accessToken: string;
|
||||
private _accessToken: string;
|
||||
private readonly _requestFn: RequestFunction;
|
||||
private readonly _reconnector: Reconnector;
|
||||
|
||||
@ -125,6 +125,14 @@ export class HomeServerApi {
|
||||
return this._authedRequest("GET", this._url(csPath, options?.prefix || CS_R0_PREFIX), queryParams, body, options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the access token used by the API.
|
||||
* @param token
|
||||
*/
|
||||
public updateAccessToken(token: string) {
|
||||
this._accessToken = token;
|
||||
}
|
||||
|
||||
sync(since: string, filter: string, timeout: number, options?: BaseRequestOptions): IHomeServerRequest {
|
||||
return this._get("/sync", {since, timeout, filter}, undefined, options);
|
||||
}
|
||||
|
@ -37,6 +37,7 @@ interface ISessionInfo {
|
||||
interface ISessionInfoStorage {
|
||||
getAll(): Promise<ISessionInfo[]>;
|
||||
updateLastUsed(id: string, timestamp: number): Promise<void>;
|
||||
updateAccessToken(id: string, token: string): Promise<void>;
|
||||
get(id: string): Promise<ISessionInfo | undefined>;
|
||||
add(sessionInfo: ISessionInfo): Promise<void>;
|
||||
delete(sessionId: string): Promise<void>;
|
||||
@ -60,16 +61,24 @@ export class SessionInfoStorage implements ISessionInfoStorage {
|
||||
return Promise.resolve([]);
|
||||
}
|
||||
|
||||
async updateAccessToken(id: string, accessToken: string): Promise<void> {
|
||||
const sessions = await this.getAll();
|
||||
const session = sessions.find(session => session.id === id);
|
||||
if (!session) {
|
||||
throw Error('No session found');
|
||||
}
|
||||
session.accessToken = accessToken;
|
||||
localStorage.setItem(this._name, JSON.stringify(sessions));
|
||||
}
|
||||
|
||||
async updateLastUsed(id: string, timestamp: number): Promise<void> {
|
||||
const sessions = await this.getAll();
|
||||
if (sessions) {
|
||||
const session = sessions.find(session => session.id === id);
|
||||
if (session) {
|
||||
session.lastUsed = timestamp;
|
||||
localStorage.setItem(this._name, JSON.stringify(sessions));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async get(id: string): Promise<ISessionInfo | undefined> {
|
||||
const sessions = await this.getAll();
|
||||
|
Loading…
Reference in New Issue
Block a user