You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-12-11 19:37:30 +03:00
* Delayed event management: split endpoints, no auth Add dedicated endpoints for each of the cancel/restart/send actions for updating a delayed event, and make them unauthenticated. Also keep support for the original endpoint where the update action is in the request body, and make the split-endpoint versions fall back to it if they are unsupported by the homeserver. * Don't @link parameters in method docstrings as TypeDoc doesn't support that * Reduce code duplication * Reduce code duplication again * Add a little more test coverage * Use split delayed event management for widgets * Specify which eslint rule to ignore Co-authored-by: Will Hunt <2072976+Half-Shot@users.noreply.github.com> * Restore embedded non-split delay evt update method Keep supporting it to not break widgets that currently use it. Also add back the test for it. * Deprecate the non-split delay evt update methods * Comment to explain fallback to non-split endpoint * Add backwards compatibility with authed endpoints * Comment backwards compatibility helper method * Await returned promises because `return await promise` is at least as fast as `return promise` --------- Co-authored-by: Will Hunt <2072976+Half-Shot@users.noreply.github.com>
88 lines
2.6 KiB
TypeScript
88 lines
2.6 KiB
TypeScript
/*
|
|
Copyright 2022 The Matrix.org Foundation C.I.C.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
export enum InvalidCryptoStoreState {
|
|
TooNew = "TOO_NEW",
|
|
}
|
|
|
|
export class InvalidCryptoStoreError extends Error {
|
|
public static TOO_NEW = InvalidCryptoStoreState.TooNew;
|
|
|
|
public constructor(public readonly reason: InvalidCryptoStoreState) {
|
|
const message =
|
|
`Crypto store is invalid because ${reason}, ` +
|
|
`please stop the client, delete all data and start the client again`;
|
|
super(message);
|
|
this.name = "InvalidCryptoStoreError";
|
|
}
|
|
}
|
|
|
|
export class KeySignatureUploadError extends Error {
|
|
public constructor(
|
|
message: string,
|
|
public readonly value: any,
|
|
) {
|
|
super(message);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* It is invalid to call most methods once {@link MatrixClient#stopClient} has been called.
|
|
*
|
|
* This error will be thrown if you attempt to do so.
|
|
*
|
|
* {@link MatrixClient#stopClient} itself is an exception to this: it may safely be called multiple times on the same
|
|
* instance.
|
|
*/
|
|
export class ClientStoppedError extends Error {
|
|
public constructor() {
|
|
super("MatrixClient has been stopped");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* This error is thrown when the Homeserver does not support the delayed events endpoints.
|
|
*/
|
|
export class UnsupportedDelayedEventsEndpointError extends Error {
|
|
public constructor(
|
|
message: string,
|
|
public clientEndpoint:
|
|
| "sendDelayedEvent"
|
|
| "updateDelayedEvent"
|
|
| "cancelScheduledDelayedEvent"
|
|
| "restartScheduledDelayedEvent"
|
|
| "sendScheduledDelayedEvent"
|
|
| "sendDelayedStateEvent"
|
|
| "getDelayedEvents",
|
|
) {
|
|
super(message);
|
|
this.name = "UnsupportedDelayedEventsEndpointError";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* This error is thrown when the Homeserver does not support the sticky events endpoints.
|
|
*/
|
|
export class UnsupportedStickyEventsEndpointError extends Error {
|
|
public constructor(
|
|
message: string,
|
|
public clientEndpoint: "sendStickyEvent" | "sendStickyStateEvent",
|
|
) {
|
|
super(message);
|
|
this.name = "UnsupportedStickyEventsEndpointError";
|
|
}
|
|
}
|