Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
d188f33
base UI
diegolmello Nov 27, 2024
c474027
Improve optimistic update of toggle room e2ee so it reverts back to o…
diegolmello Nov 28, 2024
351b70b
Toggle e2ee working
diegolmello Nov 28, 2024
67a2129
Patch fix for array on query params
diegolmello Nov 28, 2024
d3ee09d
Reset room key
diegolmello Nov 29, 2024
62538f4
i18n
diegolmello Nov 29, 2024
a1668be
Reenable room header if warning
diegolmello Nov 29, 2024
82d9c13
Room encryption on/off subtitle on room actions
diegolmello Nov 29, 2024
1cf3aca
i18n
diegolmello Nov 29, 2024
2681bab
UX fix on ListInfo
diegolmello Nov 29, 2024
a4e71cd
Minor UI changes
diegolmello Nov 29, 2024
7c75689
i18n room type lowercase
diegolmello Nov 29, 2024
17c2f6b
Fix room actions e2ee permission
diegolmello Nov 29, 2024
4bc7f7e
RoomView header button navigate to E2EEToggleRoomView
diegolmello Nov 29, 2024
f3ddc7d
Tablet layout
diegolmello Nov 29, 2024
179e5b5
Fix i18n glitch
diegolmello Dec 2, 2024
8ea5ebb
Only display reset room keys when room key is missing
diegolmello Dec 2, 2024
e721b01
Reset working properly
diegolmello Dec 2, 2024
1aff90c
handshake lock
diegolmello Dec 3, 2024
08ea158
Decrypt with old keys
diegolmello Dec 3, 2024
30311b7
Revert "handshake lock"
diegolmello Dec 4, 2024
262000e
provide old keys
diegolmello Dec 5, 2024
8b762b8
Provide async keys on create room
diegolmello Dec 5, 2024
b8fc35b
building tests
diegolmello Dec 10, 2024
609748c
Fix room key creation missing await
diegolmello Dec 11, 2024
6509061
Fix encryption header icon disabled
diegolmello Dec 11, 2024
f5f1c39
DX
diegolmello Dec 11, 2024
cd47410
Refactored tests to cover async key exchange
diegolmello Dec 11, 2024
cff7f25
Merge branch 'feat.e2ee-key-async' into test.async-e2ee
diegolmello Dec 11, 2024
5dddf0a
Make searchRoom faster
diegolmello Dec 12, 2024
83dce62
Fix launch app on Android
diegolmello Dec 12, 2024
74247cf
Fix searchRoom
diegolmello Dec 16, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/lib/encryption/room.ts
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ export default class EncryptionRoom {
};

createRoomKey = async () => {
this.createNewRoomKey();
await this.createNewRoomKey();
await Services.e2eSetRoomKeyID(this.roomId, this.keyID);
await this.encryptKeyForOtherParticipants();
};
Expand Down
9 changes: 7 additions & 2 deletions app/views/E2EEToggleRoomView/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ const E2EEToggleRoomView = ({ navigation }: { navigation: any }) => {
const roomName = getRoomTitle(room);

return (
<SafeAreaView>
<SafeAreaView testID='e2ee-toggle-room-view'>
<StatusBar />
<List.Container>
<List.Section>
Expand All @@ -62,7 +62,12 @@ const E2EEToggleRoomView = ({ navigation }: { navigation: any }) => {
{isMissingRoomKey ? (
<List.Section>
<List.Separator />
<List.Item title='Reset_encryption_keys' color={colors.fontDanger} onPress={() => resetRoomKey(rid)} />
<List.Item
title='Reset_encryption_keys'
color={colors.fontDanger}
onPress={() => resetRoomKey(rid)}
testID='e2ee-toggle-room-reset-key'
/>
<List.Separator />
<List.Info
info={I18n.t('Reset_encryption_keys_info__room_type__', { room_type: roomType.toLowerCase() })}
Expand Down
20 changes: 16 additions & 4 deletions app/views/RoomView/RightButtons.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ class RightButtonsContainer extends Component<IRightButtonsProps, IRigthButtonsS
}

async componentDidMount() {
const { tmid, rid } = this.props;
const { tmid, rid, hasE2EEWarning } = this.props;
const db = database.active;
if (tmid) {
try {
Expand All @@ -97,7 +97,9 @@ class RightButtonsContainer extends Component<IRightButtonsProps, IRigthButtonsS
console.log("Can't find subscription to observe.");
}
}
this.setCanToggleEncryption();
if (hasE2EEWarning) {
this.setCanToggleEncryption();
}
}

shouldComponentUpdate(nextProps: IRightButtonsProps, nextState: IRigthButtonsState) {
Expand Down Expand Up @@ -160,7 +162,7 @@ class RightButtonsContainer extends Component<IRightButtonsProps, IRigthButtonsS

componentDidUpdate(prevProps: Readonly<IRightButtonsProps>): void {
const { toggleRoomE2EEncryptionPermission } = this.props;
if (prevProps.toggleRoomE2EEncryptionPermission !== toggleRoomE2EEncryptionPermission) {
if (!dequal(prevProps.toggleRoomE2EEncryptionPermission, toggleRoomE2EEncryptionPermission)) {
this.setCanToggleEncryption();
}
}
Expand Down Expand Up @@ -190,6 +192,11 @@ class RightButtonsContainer extends Component<IRightButtonsProps, IRigthButtonsS
const subObservable = subRecord.observe();
this.subSubscription = subObservable.subscribe(sub => {
this.updateSubscription(sub);

const { hasE2EEWarning } = this.props;
if (hasE2EEWarning) {
this.setCanToggleEncryption();
}
});
};

Expand Down Expand Up @@ -459,7 +466,12 @@ class RightButtonsContainer extends Component<IRightButtonsProps, IRigthButtonsS
return (
<HeaderButton.Container onLayout={this.onLayout}>
{hasE2EEWarning ? (
<HeaderButton.Item iconName='encrypted' onPress={this.goE2EEToggleRoomView} disabled={!canToggleEncryption} />
<HeaderButton.Item
iconName='encrypted'
onPress={this.goE2EEToggleRoomView}
disabled={!canToggleEncryption}
testID='room-view-header-encryption'
/>
) : null}
{issuesWithNotifications || notificationsDisabled ? (
<HeaderButton.Item
Expand Down
28 changes: 18 additions & 10 deletions e2e/helpers/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,20 +132,28 @@ async function searchRoom(
nativeElementAction: keyof Pick<Detox.NativeElementActions, 'typeText' | 'replaceText'> = 'typeText',
roomTestID?: string
) {
const testID = roomTestID || `rooms-list-view-item-${room}`;
await waitFor(element(by.id('rooms-list-view')))
.toExist()
.withTimeout(30000);
await tapAndWaitFor(element(by.id('rooms-list-view-search')), element(by.id('rooms-list-view-search-input')), 5000);
if (nativeElementAction === 'replaceText') {
// trigger the input's onChangeText
await element(by.id('rooms-list-view-search-input')).typeText(' ');

try {
await waitFor(element(by.id(testID)))
.toBeVisible()
.withTimeout(2000);
await expect(element(by.id(testID))).toBeVisible();
} catch {
await tapAndWaitFor(element(by.id('rooms-list-view-search')), element(by.id('rooms-list-view-search-input')), 5000);
if (nativeElementAction === 'replaceText') {
// trigger the input's onChangeText
await element(by.id('rooms-list-view-search-input')).typeText(' ');
}
await element(by.id('rooms-list-view-search-input'))[nativeElementAction](room);
await sleep(500);
await waitFor(element(by.id(testID)))
.toBeVisible()
.withTimeout(60000);
}
await element(by.id('rooms-list-view-search-input'))[nativeElementAction](room);
await sleep(500);
await sleep(500);
await waitFor(element(by.id(roomTestID || `rooms-list-view-item-${room}`)))
.toBeVisible()
.withTimeout(60000);
}

async function navigateToRoom(room: string) {
Expand Down
1 change: 1 addition & 0 deletions e2e/helpers/data_setup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ export const createRandomUser = async (customProps?: Object): Promise<ITestUser>
email: user.email,
...(customProps || {})
});
console.log(`Created ${user.username} / ${user.password}`);
return user;
} catch (error) {
console.log(JSON.stringify(error));
Expand Down
Loading