Ensure widgets always have a sender associated with them
Fixes https://github.com/vector-im/riot-web/issues/11419pull/21833/head
parent
f543a113cf
commit
f5ec9eb8f4
|
@ -67,7 +67,7 @@ module.exports = createReactClass({
|
||||||
return ev.getStateKey() === ActiveWidgetStore.getPersistentWidgetId();
|
return ev.getStateKey() === ActiveWidgetStore.getPersistentWidgetId();
|
||||||
});
|
});
|
||||||
const app = WidgetUtils.makeAppConfig(
|
const app = WidgetUtils.makeAppConfig(
|
||||||
appEvent.getStateKey(), appEvent.getContent(), appEvent.sender, persistentWidgetInRoomId,
|
appEvent.getStateKey(), appEvent.getContent(), appEvent.getSender(), persistentWidgetInRoomId,
|
||||||
);
|
);
|
||||||
const capWhitelist = WidgetUtils.getCapWhitelistForAppTypeInRoomId(app.type, persistentWidgetInRoomId);
|
const capWhitelist = WidgetUtils.getCapWhitelistForAppTypeInRoomId(app.type, persistentWidgetInRoomId);
|
||||||
const AppTile = sdk.getComponent('elements.AppTile');
|
const AppTile = sdk.getComponent('elements.AppTile');
|
||||||
|
|
|
@ -107,7 +107,7 @@ module.exports = createReactClass({
|
||||||
this.props.room.roomId, WidgetUtils.getRoomWidgets(this.props.room),
|
this.props.room.roomId, WidgetUtils.getRoomWidgets(this.props.room),
|
||||||
);
|
);
|
||||||
return widgets.map((ev) => {
|
return widgets.map((ev) => {
|
||||||
return WidgetUtils.makeAppConfig(ev.getStateKey(), ev.getContent(), ev.sender);
|
return WidgetUtils.makeAppConfig(ev.getStateKey(), ev.getContent(), ev.getSender());
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -400,7 +400,7 @@ export default class WidgetUtils {
|
||||||
return client.setAccountData('m.widgets', userWidgets);
|
return client.setAccountData('m.widgets', userWidgets);
|
||||||
}
|
}
|
||||||
|
|
||||||
static makeAppConfig(appId, app, sender, roomId) {
|
static makeAppConfig(appId, app, senderUserId, roomId) {
|
||||||
const myUserId = MatrixClientPeg.get().credentials.userId;
|
const myUserId = MatrixClientPeg.get().credentials.userId;
|
||||||
const user = MatrixClientPeg.get().getUser(myUserId);
|
const user = MatrixClientPeg.get().getUser(myUserId);
|
||||||
const params = {
|
const params = {
|
||||||
|
@ -413,6 +413,11 @@ export default class WidgetUtils {
|
||||||
'$theme': SettingsStore.getValue("theme"),
|
'$theme': SettingsStore.getValue("theme"),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (!senderUserId) {
|
||||||
|
throw new Error("Widgets must be created by someone - provide a senderUserId");
|
||||||
|
}
|
||||||
|
app.creatorUserId = senderUserId;
|
||||||
|
|
||||||
app.id = appId;
|
app.id = appId;
|
||||||
app.name = app.name || app.type;
|
app.name = app.name || app.type;
|
||||||
|
|
||||||
|
@ -425,7 +430,6 @@ export default class WidgetUtils {
|
||||||
}
|
}
|
||||||
|
|
||||||
app.url = encodeUri(app.url, params);
|
app.url = encodeUri(app.url, params);
|
||||||
app.creatorUserId = (sender && sender.userId) ? sender.userId : null;
|
|
||||||
|
|
||||||
return app;
|
return app;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue