mirror of
https://github.com/vector-im/element-web.git
synced 2024-11-15 20:54:59 +08:00
Fix soft crash around unknown room pills (#9301)
* Fix soft crash around unknown room pills * Add tests * Fix types
This commit is contained in:
parent
7e435eef13
commit
fa2ec7f6c9
@ -411,7 +411,7 @@ export class EmojiPart extends BasePart implements IBasePart {
|
||||
}
|
||||
|
||||
class RoomPillPart extends PillPart {
|
||||
constructor(resourceId: string, label: string, private room: Room) {
|
||||
constructor(resourceId: string, label: string, private room?: Room) {
|
||||
super(resourceId, label);
|
||||
}
|
||||
|
||||
@ -419,8 +419,8 @@ class RoomPillPart extends PillPart {
|
||||
let initialLetter = "";
|
||||
let avatarUrl = Avatar.avatarUrlForRoom(this.room, 16, 16, "crop");
|
||||
if (!avatarUrl) {
|
||||
initialLetter = Avatar.getInitialLetter(this.room ? this.room.name : this.resourceId);
|
||||
avatarUrl = Avatar.defaultAvatarUrlForString(this.room ? this.room.roomId : this.resourceId);
|
||||
initialLetter = Avatar.getInitialLetter(this.room?.name || this.resourceId);
|
||||
avatarUrl = Avatar.defaultAvatarUrlForString(this.room?.roomId ?? this.resourceId);
|
||||
}
|
||||
this.setAvatarVars(node, avatarUrl, initialLetter);
|
||||
}
|
||||
@ -430,7 +430,7 @@ class RoomPillPart extends PillPart {
|
||||
}
|
||||
|
||||
protected get className() {
|
||||
return "mx_Pill " + (this.room.isSpaceRoom() ? "mx_SpacePill" : "mx_RoomPill");
|
||||
return "mx_Pill " + (this.room?.isSpaceRoom() ? "mx_SpacePill" : "mx_RoomPill");
|
||||
}
|
||||
}
|
||||
|
||||
@ -610,7 +610,7 @@ export class PartCreator {
|
||||
}
|
||||
|
||||
public roomPill(alias: string, roomId?: string): RoomPillPart {
|
||||
let room;
|
||||
let room: Room | undefined;
|
||||
if (roomId || alias[0] !== "#") {
|
||||
room = this.client.getRoom(roomId || alias);
|
||||
} else {
|
||||
|
@ -15,6 +15,7 @@ limitations under the License.
|
||||
*/
|
||||
|
||||
import { EmojiPart, PlainPart } from "../../src/editor/parts";
|
||||
import { createPartCreator } from "./mock";
|
||||
|
||||
describe("editor/parts", () => {
|
||||
describe("appendUntilRejected", () => {
|
||||
@ -32,4 +33,10 @@ describe("editor/parts", () => {
|
||||
expect(part.text).toEqual(femaleFacepalmEmoji);
|
||||
});
|
||||
});
|
||||
|
||||
it("should not explode on room pills for unknown rooms", () => {
|
||||
const pc = createPartCreator();
|
||||
const part = pc.roomPill("#room:server");
|
||||
expect(() => part.toDOMNode()).not.toThrow();
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user