Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 8 additions & 14 deletions src/ClientWidgetApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -626,8 +626,8 @@ export class ClientWidgetApi extends EventEmitter {
});
}

const isDelayedEvent = request.data.delay !== undefined || request.data.parent_delay_id !== undefined;
if (isDelayedEvent && !this.hasCapability(MatrixCapabilities.MSC4157SendDelayedEvent)) {
const delay = request.data.delay;
if (delay !== undefined && !this.hasCapability(MatrixCapabilities.MSC4157SendDelayedEvent)) {
return this.transport.reply<IWidgetApiErrorResponseData>(request, {
error: { message: `Missing capability for ${MatrixCapabilities.MSC4157SendDelayedEvent}` },
});
Expand All @@ -653,10 +653,9 @@ export class ClientWidgetApi extends EventEmitter {
});
}

if (isDelayedEvent) {
if (delay !== undefined) {
sendEventPromise = this.driver.sendDelayedEvent(
request.data.delay ?? null,
request.data.parent_delay_id ?? null,
delay,
request.data.type,
request.data.content || {},
request.data.state_key,
Expand Down Expand Up @@ -690,21 +689,16 @@ export class ClientWidgetApi extends EventEmitter {
request.data.room_id,
];

if (isDelayedEvent && request.data.sticky_duration_ms) {
if (delay !== undefined && request.data.sticky_duration_ms) {
sendEventPromise = this.driver.sendDelayedStickyEvent(
request.data.delay ?? null,
request.data.parent_delay_id ?? null,
delay,
request.data.sticky_duration_ms,
request.data.type,
content,
request.data.room_id,
);
} else if (isDelayedEvent) {
sendEventPromise = this.driver.sendDelayedEvent(
request.data.delay ?? null,
request.data.parent_delay_id ?? null,
...params,
);
} else if (delay !== undefined) {
sendEventPromise = this.driver.sendDelayedEvent(delay, ...params);
} else if (request.data.sticky_duration_ms) {
sendEventPromise = this.driver.sendStickyEvent(
request.data.sticky_duration_ms,
Expand Down
8 changes: 2 additions & 6 deletions src/WidgetApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -440,10 +440,9 @@ export class WidgetApi extends EventEmitter {
content: unknown,
roomId?: string,
delay?: number,
parentDelayId?: string,
stickyDurationMs?: number,
): Promise<ISendEventFromWidgetResponseData> {
return this.sendEvent(eventType, undefined, content, roomId, delay, parentDelayId, stickyDurationMs);
return this.sendEvent(eventType, undefined, content, roomId, delay, stickyDurationMs);
}

public sendStateEvent(
Expand All @@ -452,9 +451,8 @@ export class WidgetApi extends EventEmitter {
content: unknown,
roomId?: string,
delay?: number,
parentDelayId?: string,
): Promise<ISendEventFromWidgetResponseData> {
return this.sendEvent(eventType, stateKey, content, roomId, delay, parentDelayId);
return this.sendEvent(eventType, stateKey, content, roomId, delay);
}

private sendEvent(
Expand All @@ -463,7 +461,6 @@ export class WidgetApi extends EventEmitter {
content: unknown,
roomId?: string,
delay?: number,
parentDelayId?: string,
stickyDurationMs?: number,
): Promise<ISendEventFromWidgetResponseData> {
return this.transport.send<ISendEventFromWidgetRequestData, ISendEventFromWidgetResponseData>(
Expand All @@ -474,7 +471,6 @@ export class WidgetApi extends EventEmitter {
...(stateKey !== undefined && { state_key: stateKey }),
...(roomId !== undefined && { room_id: roomId }),
...(delay !== undefined && { delay }),
...(parentDelayId !== undefined && { parent_delay_id: parentDelayId }),
...(stickyDurationMs !== undefined && { sticky_duration_ms: stickyDurationMs }),
},
);
Expand Down
16 changes: 4 additions & 12 deletions src/driver/WidgetDriver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -138,10 +138,7 @@ export abstract class WidgetDriver {
* Sends a delayed event into a room. If `roomId` is falsy, the client should send it
* into the room the user is currently looking at. The widget API will have already
* verified that the widget is capable of sending the event to that room.
* @param {number|null} delay How much later to send the event, or null to not send the
* event automatically. May not be null if {@link parentDelayId} is null.
* @param {string|null} parentDelayId The ID of the delayed event this one is grouped with,
* or null if it will be put in a new group. May not be null if {@link delay} is null.
* @param {number} delay How much later to send the event.
* @param {string} eventType The event type of the event to be sent.
* @param {*} content The content for the event to be sent.
* @param {string|null} stateKey The state key if the event to be sent a state event,
Expand All @@ -153,8 +150,7 @@ export abstract class WidgetDriver {
* @throws Rejected when the delayed event could not be sent.
*/
public sendDelayedEvent(
delay: number | null,
parentDelayId: string | null,
delay: number,
eventType: string,
content: unknown,
stateKey: string | null = null,
Expand All @@ -169,10 +165,7 @@ export abstract class WidgetDriver {
* into the room the user is currently looking at. The widget API will have already
* verified that the widget is capable of sending the event to that room.
* @param {number} stickyDurationMs The length of time a sticky event may remain sticky, in milliseconds.
* @param {number|null} delay How much later to send the event, or null to not send the
* event automatically. May not be null if {@link parentDelayId} is null.
* @param {string|null} parentDelayId The ID of the delayed event this one is grouped with,
* or null if it will be put in a new group. May not be null if {@link delay} is null.
* @param {number} delay How much later to send the event.
* @param {string} eventType The event type to be sent.
* @param {*} content The content for the event.
* @param {string|null} roomId The room ID to send the event to. If falsy, the room the
Expand All @@ -182,8 +175,7 @@ export abstract class WidgetDriver {
* @throws Rejected when the event could not be sent.
*/
public sendDelayedStickyEvent(
delay: number | null,
parentDelayId: string | null,
delay: number,
stickyDurationMs: number,
eventType: string,
content: unknown,
Expand Down
1 change: 0 additions & 1 deletion src/interfaces/SendEventAction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ export interface ISendEventFromWidgetRequestData extends IWidgetApiRequestData {

// MSC4157
delay?: number; // eslint-disable-line camelcase
parent_delay_id?: string; // eslint-disable-line camelcase

// MSC4407
sticky_duration_ms?: number;
Expand Down
Loading