feat: add Giphy support with embed component and power levels state management

This commit is contained in:
2026-04-21 21:35:47 +10:00
parent 7c824392b7
commit 9a463facce
14 changed files with 218 additions and 11 deletions

View File

@@ -182,6 +182,25 @@ export class CallService {
): Promise<void> {
const stateKey = this.config.userId;
// Check if user has permission to send this state event
const room = this.matrixClient.getRoom(roomId);
if (room) {
const powerLevelsEvent = room.currentState.getStateEvents('m.room.power_levels', '');
const powerLevelsContent = powerLevelsEvent?.getContent() || {};
const myPower = powerLevelsContent.users?.[this.config.userId] ?? powerLevelsContent.users_default ?? 0;
const requiredPower = powerLevelsContent.events?.[CALL_MEMBER_EVENT_TYPE] ?? powerLevelsContent.state_default ?? 50;
if (myPower < requiredPower) {
console.warn(
`Cannot send call member event: insufficient permissions. ` +
`User power level (${myPower}) < required power level (${requiredPower}). ` +
`Call will work locally but room members won't see your call status.`
);
return;
}
}
if (active) {
const content: CallMemberEventContent = {
'm.calls': [