Support avatar_url in the scalar client API (#8550)

* Support avatar_url in the scalar client API

Signed-off-by: Oliver Sand <oliver.sand@nordeck.net>

* Fix return type

* Remove automatic upload

* Remove return type

* Fix indention
pull/28788/head^2
Oliver Sand 2022-05-20 00:22:38 +02:00 committed by GitHub
parent efc36acf93
commit f7ba3f07cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 6 deletions

View File

@ -148,6 +148,7 @@ Request:
can configure/lay out the widget in different ways. All widgets must have a type.
- `name` (String) is an optional human-readable string about the widget.
- `data` (Object) is some optional data about the widget, and can contain arbitrary key/value pairs.
- `avatar_url` (String) is some optional mxc: URI pointing to the avatar of the widget.
Response:
{
success: true
@ -319,6 +320,7 @@ function setWidget(event: MessageEvent<any>, roomId: string): void {
const widgetUrl = event.data.url;
const widgetName = event.data.name; // optional
const widgetData = event.data.data; // optional
const widgetAvatarUrl = event.data.avatar_url; // optional
const userWidget = event.data.userWidget;
// both adding/removing widgets need these checks
@ -337,6 +339,14 @@ function setWidget(event: MessageEvent<any>, roomId: string): void {
sendError(event, _t("Unable to create widget."), new Error("Optional field 'data' must be an Object."));
return;
}
if (widgetAvatarUrl !== undefined && typeof widgetAvatarUrl !== 'string') {
sendError(
event,
_t("Unable to create widget."),
new Error("Optional field 'avatar_url' must be a string."),
);
return;
}
if (typeof widgetType !== 'string') {
sendError(event, _t("Unable to create widget."), new Error("Field 'type' must be a string."));
return;
@ -364,13 +374,14 @@ function setWidget(event: MessageEvent<any>, roomId: string): void {
if (!roomId) {
sendError(event, _t('Missing roomId.'), null);
}
WidgetUtils.setRoomWidget(roomId, widgetId, widgetType, widgetUrl, widgetName, widgetData).then(() => {
sendResponse(event, {
success: true,
WidgetUtils.setRoomWidget(roomId, widgetId, widgetType, widgetUrl, widgetName, widgetData, widgetAvatarUrl)
.then(() => {
sendResponse(event, {
success: true,
});
}, (err) => {
sendError(event, _t('Failed to send request.'), err);
});
}, (err) => {
sendError(event, _t('Failed to send request.'), err);
});
}
}

View File

@ -286,6 +286,7 @@ export default class WidgetUtils {
widgetUrl?: string,
widgetName?: string,
widgetData?: object,
widgetAvatarUrl?: string,
) {
let content;
@ -299,6 +300,7 @@ export default class WidgetUtils {
url: widgetUrl,
name: widgetName,
data: widgetData,
avatar_url: widgetAvatarUrl,
};
} else {
content = {};