Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `EventTile.tsx` (#28510)

* Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `EventTile.tsx`

* Use `roomContext.isRoomEncrypted`
toger5/guest-link-room-access-prompt
Florian Duros 2024-12-02 11:20:13 +01:00 committed by GitHub
parent b87437d439
commit 6d8cbf39f5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 29 additions and 5 deletions

View File

@ -775,7 +775,7 @@ export class UnwrappedEventTile extends React.Component<EventTileProps, IState>
} }
} }
if (MatrixClientPeg.safeGet().isRoomEncrypted(ev.getRoomId()!)) { if (this.context.isRoomEncrypted) {
// else if room is encrypted // else if room is encrypted
// and event is being encrypted or is not_sent (Unknown Devices/Network Error) // and event is being encrypted or is not_sent (Unknown Devices/Network Error)
if (ev.status === EventStatus.ENCRYPTING) { if (ev.status === EventStatus.ENCRYPTING) {

View File

@ -135,6 +135,7 @@ export function createTestClient(): MatrixClient {
loadSessionBackupPrivateKeyFromSecretStorage: jest.fn(), loadSessionBackupPrivateKeyFromSecretStorage: jest.fn(),
storeSessionBackupPrivateKey: jest.fn(), storeSessionBackupPrivateKey: jest.fn(),
getKeyBackupInfo: jest.fn().mockResolvedValue(null), getKeyBackupInfo: jest.fn().mockResolvedValue(null),
getEncryptionInfoForEvent: jest.fn().mockResolvedValue(null),
}), }),
getPushActionsForEvent: jest.fn(), getPushActionsForEvent: jest.fn(),

View File

@ -67,7 +67,6 @@ describe("ForwardDialog", () => {
getAccountData: jest.fn().mockReturnValue(accountDataEvent), getAccountData: jest.fn().mockReturnValue(accountDataEvent),
getPushActionsForEvent: jest.fn(), getPushActionsForEvent: jest.fn(),
mxcUrlToHttp: jest.fn().mockReturnValue(""), mxcUrlToHttp: jest.fn().mockReturnValue(""),
isRoomEncrypted: jest.fn().mockReturnValue(false),
getProfileInfo: jest.fn().mockResolvedValue({ getProfileInfo: jest.fn().mockResolvedValue({
displayname: "Alice", displayname: "Alice",
}), }),

View File

@ -71,9 +71,11 @@ describe("EventTile", () => {
function getComponent( function getComponent(
overrides: Partial<EventTileProps> = {}, overrides: Partial<EventTileProps> = {},
renderingType: TimelineRenderingType = TimelineRenderingType.Room, renderingType: TimelineRenderingType = TimelineRenderingType.Room,
roomContext: Partial<IRoomState> = {},
) { ) {
const context = getRoomContext(room, { const context = getRoomContext(room, {
timelineRenderingType: renderingType, timelineRenderingType: renderingType,
...roomContext,
}); });
return render(<WrappedEventTile roomContext={context} eventTilePropertyOverrides={overrides} />); return render(<WrappedEventTile roomContext={context} eventTilePropertyOverrides={overrides} />);
} }
@ -437,8 +439,6 @@ describe("EventTile", () => {
}); });
it("should update the warning when the event is replaced with an unencrypted one", async () => { it("should update the warning when the event is replaced with an unencrypted one", async () => {
jest.spyOn(client, "isRoomEncrypted").mockReturnValue(true);
// we start out with an event from the trusted device // we start out with an event from the trusted device
mxEvent = await mkEncryptedMatrixEvent({ mxEvent = await mkEncryptedMatrixEvent({
plainContent: { msgtype: "m.text", body: "msg1" }, plainContent: { msgtype: "m.text", body: "msg1" },
@ -452,7 +452,7 @@ describe("EventTile", () => {
shieldReason: null, shieldReason: null,
} as EventEncryptionInfo); } as EventEncryptionInfo);
const roomContext = getRoomContext(room, {}); const roomContext = getRoomContext(room, { isRoomEncrypted: true });
const { container, rerender } = render(<WrappedEventTile roomContext={roomContext} />); const { container, rerender } = render(<WrappedEventTile roomContext={roomContext} />);
await flushPromises(); await flushPromises();
@ -581,4 +581,28 @@ describe("EventTile", () => {
}); });
}); });
}); });
it("should display the not encrypted status for an unencrypted event when the room becomes encrypted", async () => {
jest.spyOn(client.getCrypto()!, "getEncryptionInfoForEvent").mockResolvedValue({
shieldColour: EventShieldColour.NONE,
shieldReason: null,
});
const { rerender } = getComponent();
await flushPromises();
// The room and the event are unencrypted, the tile should not show the not encrypted status
expect(screen.queryByText("Not encrypted")).toBeNull();
// The room is now encrypted
rerender(
<WrappedEventTile
roomContext={getRoomContext(room, {
isRoomEncrypted: true,
})}
/>,
);
// The event tile should now show the not encrypted status
await waitFor(() => expect(screen.getByText("Not encrypted")).toBeInTheDocument());
});
}); });