1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-11-25 05:23:13 +03:00

Specify /preview_url requests as low priority (#3609)

* Specify /preview_url requests as low priority

* Update src/@types/global.d.ts

Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>

* Simplify interface

---------

Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
This commit is contained in:
Michael Telatynski
2023-07-19 10:29:41 +01:00
committed by GitHub
parent fed9910fa1
commit 43b2404865
4 changed files with 20 additions and 2 deletions

View File

@@ -96,4 +96,20 @@ declare global {
// but we still need this for MatrixCall::getRidOfRTXCodecs() // but we still need this for MatrixCall::getRidOfRTXCodecs()
setCodecPreferences(codecs: RTCRtpCodecCapability[]): void; setCodecPreferences(codecs: RTCRtpCodecCapability[]): void;
} }
interface RequestInit {
/**
* Specifies the priority of the fetch request relative to other requests of the same type.
* Must be one of the following strings:
* high: A high priority fetch request relative to other requests of the same type.
* low: A low priority fetch request relative to other requests of the same type.
* auto: Automatically determine the priority of the fetch request relative to other requests of the same type (default).
*
* @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#fetch-priority-attribute
* @see https://github.com/microsoft/TypeScript/issues/54472
* @see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API#browser_compatibility
* Not yet supported in Safari or Firefox
*/
priority?: "high" | "low" | "auto";
}
} }

View File

@@ -5128,6 +5128,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
undefined, undefined,
{ {
prefix: MediaPrefix.R0, prefix: MediaPrefix.R0,
priority: "low",
}, },
); );
// TODO: Expire the URL preview cache sometimes // TODO: Expire the URL preview cache sometimes

View File

@@ -222,7 +222,7 @@ export class FetchHttpApi<O extends IHttpOpts> {
method: Method, method: Method,
url: URL | string, url: URL | string,
body?: Body, body?: Body,
opts: Pick<IRequestOpts, "headers" | "json" | "localTimeoutMs" | "keepAlive" | "abortSignal"> = {}, opts: Pick<IRequestOpts, "headers" | "json" | "localTimeoutMs" | "keepAlive" | "abortSignal" | "priority"> = {},
): Promise<ResponseType<T, O>> { ): Promise<ResponseType<T, O>> {
const urlForLogs = this.sanitizeUrlForLogs(url); const urlForLogs = this.sanitizeUrlForLogs(url);
logger.debug(`FetchHttpApi: --> ${method} ${urlForLogs}`); logger.debug(`FetchHttpApi: --> ${method} ${urlForLogs}`);
@@ -276,6 +276,7 @@ export class FetchHttpApi<O extends IHttpOpts> {
cache: "no-cache", cache: "no-cache",
credentials: "omit", // we send credentials via headers credentials: "omit", // we send credentials via headers
keepalive: keepAlive, keepalive: keepAlive,
priority: opts.priority,
}); });
logger.debug(`FetchHttpApi: <-- ${method} ${urlForLogs} [${Date.now() - start}ms ${res.status}]`); logger.debug(`FetchHttpApi: <-- ${method} ${urlForLogs} [${Date.now() - start}ms ${res.status}]`);

View File

@@ -33,7 +33,7 @@ export interface IHttpOpts {
localTimeoutMs?: number; localTimeoutMs?: number;
} }
export interface IRequestOpts { export interface IRequestOpts extends Pick<RequestInit, "priority"> {
/** /**
* The alternative base url to use. * The alternative base url to use.
* If not specified, uses this.opts.baseUrl * If not specified, uses this.opts.baseUrl