diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap
index 52fa5d01d..3e3106d94 100644
--- a/__tests__/__snapshots__/Storyshots.test.js.snap
+++ b/__tests__/__snapshots__/Storyshots.test.js.snap
@@ -59100,6 +59100,404 @@ exports[`Storyshots Room Item Tag 1`] = `
`;
+exports[`Storyshots Room Item Touch 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+ Read
+
+
+
+
+
+
+
+
+
+
+ Favorite
+
+
+
+
+
+
+
+ Hide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ rocket.cat
+
+
+
+
+
+
+
+
+
+`;
+
exports[`Storyshots Room Item Type 1`] = `
{
const handlePress = () => {
- if (!link) {
+ if (!link || !onLinkPress) {
return;
}
onLinkPress(link);
diff --git a/app/presentation/RoomItem/index.js b/app/presentation/RoomItem/index.js
index d56194f8b..0b64437c6 100644
--- a/app/presentation/RoomItem/index.js
+++ b/app/presentation/RoomItem/index.js
@@ -117,7 +117,9 @@ class RoomItemContainer extends React.Component {
onLongPress = () => {
const { item, onLongPress } = this.props;
- return onLongPress(item);
+ if (onLongPress) {
+ return onLongPress(item);
+ }
}
render() {
diff --git a/app/utils/messageTypes.js b/app/utils/messageTypes.js
index f874a437a..eacd2c514 100644
--- a/app/utils/messageTypes.js
+++ b/app/utils/messageTypes.js
@@ -27,10 +27,10 @@ export const MessageTypeValues = [
value: 'rm',
text: 'Message_HideType_rm'
}, {
- value: 'subscription_role_added',
+ value: 'subscription-role-added',
text: 'Message_HideType_subscription_role_added'
}, {
- value: 'subscription_role_removed',
+ value: 'subscription-role-removed',
text: 'Message_HideType_subscription_role_removed'
}, {
value: 'room_archived',
diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js
index e5c630ebb..d16ea5768 100644
--- a/app/views/RoomActionsView/index.js
+++ b/app/views/RoomActionsView/index.js
@@ -714,7 +714,7 @@ class RoomActionsView extends React.Component {
return null;
}
- if (t === 'd') {
+ if (t === 'd' && !RocketChat.isGroupChat(room)) {
return (
@@ -751,6 +751,8 @@ class RoomActionsView extends React.Component {
);
}
+
+ return null;
}
teamChannelActions = (t, room) => {
diff --git a/e2e/data.js b/e2e/data.js
index c69b72515..98257f71d 100644
--- a/e2e/data.js
+++ b/e2e/data.js
@@ -40,6 +40,9 @@ const data = {
groups: {
private: {
name: `detox-private-${ value }`
+ },
+ alternate: {
+ name: `detox-alternate-${ value }`
}
},
teams: {
diff --git a/e2e/data/data.docker.js b/e2e/data/data.docker.js
index 1a6bb1569..31fb5c8e2 100644
--- a/e2e/data/data.docker.js
+++ b/e2e/data/data.docker.js
@@ -40,6 +40,9 @@ const data = {
groups: {
private: {
name: `detox-private-${ value }`
+ },
+ alternate: {
+ name: `detox-alternate-${ value }`
}
},
teams: {
diff --git a/e2e/tests/assorted/12-i18n.spec.js b/e2e/tests/assorted/12-i18n.spec.js
index 13e7c79be..51273fd72 100644
--- a/e2e/tests/assorted/12-i18n.spec.js
+++ b/e2e/tests/assorted/12-i18n.spec.js
@@ -52,18 +52,18 @@ describe('i18n', () => {
* This test might become outdated as soon as we support the language
* Although this seems to be a bad approach, that's the intention for having fallback enabled
*/
- it('OS set to available language and fallback to \'en\' on strings missing translation', async() => {
- await device.launchApp({
- ...defaultLaunchArgs,
- languageAndLocale: {
- language: "nl",
- locale: "nl"
- }
- });
- await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000);
- await expect(element(by.id('join-workspace').and(by.label('Join a workspace')))).toBeVisible(); // Missing nl translation
- await expect(element(by.id('create-workspace-button').and(by.label('Een nieuwe workspace maken')))).toBeVisible();
- });
+ // it('OS set to available language and fallback to \'en\' on strings missing translation', async() => {
+ // await device.launchApp({
+ // ...defaultLaunchArgs,
+ // languageAndLocale: {
+ // language: "nl",
+ // locale: "nl"
+ // }
+ // });
+ // await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000);
+ // await expect(element(by.id('join-workspace').and(by.label('Word lid van een werkruimte')))).toBeVisible();
+ // await expect(element(by.id('create-workspace-button').and(by.label('Een nieuwe werkruimte aanmaken')))).toBeVisible();
+ // });
});
describe('Rocket.Chat language', () => {
diff --git a/e2e/tests/onboarding/03-forgotpassword.spec.js b/e2e/tests/onboarding/03-forgotpassword.spec.js
index 8b7fe9b5a..03afe5925 100644
--- a/e2e/tests/onboarding/03-forgotpassword.spec.js
+++ b/e2e/tests/onboarding/03-forgotpassword.spec.js
@@ -6,7 +6,7 @@ const { navigateToLogin } = require('../../helpers/app');
describe('Forgot password screen', () => {
before(async() => {
- await device.launchApp({ newInstance: true });
+ await device.launchApp({ permissions: { notifications: 'YES' }, delete: true });
await navigateToLogin();
await element(by.id('login-view-forgot-password')).tap();
await waitFor(element(by.id('forgot-password-view'))).toExist().withTimeout(2000);
diff --git a/e2e/tests/onboarding/04-createuser.spec.js b/e2e/tests/onboarding/04-createuser.spec.js
index aa75807f2..cf706d78b 100644
--- a/e2e/tests/onboarding/04-createuser.spec.js
+++ b/e2e/tests/onboarding/04-createuser.spec.js
@@ -6,7 +6,7 @@ const data = require('../../data');
describe('Create user screen', () => {
before(async() => {
- await device.launchApp({ newInstance: true });
+ await device.launchApp({ permissions: { notifications: 'YES' }, delete: true });
await navigateToRegister();
});
diff --git a/e2e/tests/room/01-createroom.spec.js b/e2e/tests/room/01-createroom.spec.js
index 5e7ae2ca5..874255e43 100644
--- a/e2e/tests/room/01-createroom.spec.js
+++ b/e2e/tests/room/01-createroom.spec.js
@@ -96,8 +96,8 @@ describe('Create room screen', () => {
it('should get invalid room', async() => {
await element(by.id('create-channel-name')).typeText('general');
await element(by.id('create-channel-submit')).tap();
- await waitFor(element(by.text(`A channel with name 'general' exists`))).toExist().withTimeout(60000);
- await expect(element(by.text(`A channel with name 'general' exists`))).toExist();
+ await waitFor(element(by.text(`A channel with name general exists`))).toExist().withTimeout(60000);
+ await expect(element(by.text(`A channel with name general exists`))).toExist();
await element(by.text('OK')).tap();
});
diff --git a/e2e/tests/room/02-room.spec.js b/e2e/tests/room/02-room.spec.js
index 02d874963..d6a374185 100644
--- a/e2e/tests/room/02-room.spec.js
+++ b/e2e/tests/room/02-room.spec.js
@@ -191,7 +191,7 @@ describe('Room screen', () => {
await expect(element(by.id('action-sheet'))).toExist();
await expect(element(by.id('action-sheet-handle'))).toBeVisible();
await element(by.id('action-sheet-handle')).swipe('up', 'slow', 0.5);
- await waitFor(element(by.label('Unstar')).atIndex(0)).toBeVisible().withTimeout(6000);
+ await waitFor(element(by.label('Unstar')).atIndex(0)).toExist().withTimeout(6000);
await element(by.id('action-sheet-handle')).swipe('down', 'fast', 0.8);
});
@@ -272,7 +272,7 @@ describe('Room screen', () => {
await waitFor(element(by.id('action-sheet'))).toExist().withTimeout(1000);
await expect(element(by.id('action-sheet-handle'))).toBeVisible();
await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5);
- await waitFor(element(by.label('Unpin'))).toBeVisible().withTimeout(2000);
+ await waitFor(element(by.label('Unpin')).atIndex(0)).toExist().withTimeout(2000);
await element(by.id('action-sheet-handle')).swipe('down', 'fast', 0.8);
});
diff --git a/e2e/tests/room/03-roomactions.spec.js b/e2e/tests/room/03-roomactions.spec.js
index 204235705..ecbac2233 100644
--- a/e2e/tests/room/03-roomactions.spec.js
+++ b/e2e/tests/room/03-roomactions.spec.js
@@ -385,7 +385,7 @@ describe('Room actions screen', () => {
it('should remove user from room', async() => {
await openActionSheet('rocket.cat');
- await element(by.label('Remove from room')).tap();
+ await element(by.label('Remove from room')).atIndex(0).tap();
await waitFor(element(by.label('Are you sure?'))).toExist().withTimeout(5000);
await element(by.label('Yes, remove user!').and(by.type('_UIAlertControllerActionView'))).tap();
await waitFor(element(by.id('room-members-view-item-rocket.cat'))).toBeNotVisible().withTimeout(60000);
@@ -456,13 +456,13 @@ describe('Room actions screen', () => {
it('should set/remove as mute', async() => {
await openActionSheet(user.username);
- await element(by.label('Mute')).tap();
+ await element(by.label('Mute')).atIndex(0).tap();
await waitFor(element(by.label('Are you sure?'))).toExist().withTimeout(5000);
await element(by.label('Mute').and(by.type('_UIAlertControllerActionView'))).tap();
await waitForToast();
await openActionSheet(user.username);
- await element(by.label('Unmute')).tap();
+ await element(by.label('Unmute')).atIndex(0).tap();
await waitFor(element(by.label('Are you sure?'))).toExist().withTimeout(5000);
await element(by.label('Unmute').and(by.type('_UIAlertControllerActionView'))).tap();
await waitForToast();
@@ -478,7 +478,7 @@ describe('Room actions screen', () => {
const channelName = `#${ data.groups.private.name }`;
await sendMessage(user, channelName, message);
await openActionSheet(user.username);
- await element(by.label('Ignore')).tap();
+ await element(by.label('Ignore')).atIndex(0).tap();
await waitForToast();
await backToActions();
await tapBack();
@@ -497,7 +497,7 @@ describe('Room actions screen', () => {
await element(by.id('room-members-view-toggle-status')).tap();
await waitFor(element(by.id(`room-members-view-item-${ user.username }`))).toExist().withTimeout(60000);
await openActionSheet(user.username);
- await element(by.label('Direct message')).tap();
+ await element(by.label('Direct message')).atIndex(0).tap();
await waitFor(element(by.id('room-view'))).toExist().withTimeout(60000);
await waitFor(element(by.id(`room-view-title-${ user.username }`))).toExist().withTimeout(60000);
await tapBack();
diff --git a/e2e/tests/room/04-discussion.spec.js b/e2e/tests/room/04-discussion.spec.js
index fccc96185..aa39f2eaf 100644
--- a/e2e/tests/room/04-discussion.spec.js
+++ b/e2e/tests/room/04-discussion.spec.js
@@ -23,7 +23,7 @@ describe('Discussion', () => {
const discussionName = `${data.random} Discussion NewMessageView`;
await element(by.id('rooms-list-view-create-channel')).tap();
await waitFor(element(by.id('new-message-view'))).toExist().withTimeout(2000);
- await element(by.label('Create Discussion')).tap();
+ await element(by.label('Create Discussion')).atIndex(0).tap();
await waitFor(element(by.id('create-discussion-view'))).toExist().withTimeout(60000);
await expect(element(by.id('create-discussion-view'))).toExist();
await element(by.label('Select a Channel...')).tap();
@@ -44,7 +44,7 @@ describe('Discussion', () => {
await navigateToRoom();
await element(by.id('messagebox-actions')).tap();
await waitFor(element(by.id('action-sheet'))).toExist().withTimeout(2000);
- await element(by.label('Create Discussion')).tap();
+ await element(by.label('Create Discussion')).atIndex(0).tap();
await waitFor(element(by.id('create-discussion-view'))).toExist().withTimeout(2000);
await element(by.id('multi-select-discussion-name')).replaceText(discussionName);
await waitFor(element(by.id(`create-discussion-submit`))).toExist().withTimeout(10000);
diff --git a/e2e/tests/room/05-threads.spec.js b/e2e/tests/room/05-threads.spec.js
index 40652df7d..381fa2b07 100644
--- a/e2e/tests/room/05-threads.spec.js
+++ b/e2e/tests/room/05-threads.spec.js
@@ -72,7 +72,7 @@ describe('Threads', () => {
await expect(element(by.id('action-sheet'))).toExist();
await expect(element(by.id('action-sheet-handle'))).toBeVisible();
await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5);
- await element(by.label('Reply in Thread')).tap();
+ await element(by.label('Reply in Thread')).atIndex(0).tap();
await element(by.id('messagebox-input')).typeText('replied');
await element(by.id('messagebox-send-message')).tap();
await waitFor(element(by.id(`message-thread-button-${ thread }`))).toExist().withTimeout(5000);
diff --git a/e2e/tests/room/07-markasunread.spec.js b/e2e/tests/room/07-markasunread.spec.js
index dcbc50367..383f49a7b 100644
--- a/e2e/tests/room/07-markasunread.spec.js
+++ b/e2e/tests/room/07-markasunread.spec.js
@@ -2,7 +2,7 @@ const {
device, expect, element, by, waitFor
} = require('detox');
const data = require('../../data');
-const { navigateToLogin, login, searchRoom } = require('../../helpers/app');
+const { navigateToLogin, login, searchRoom, sleep } = require('../../helpers/app');
const { sendMessage } = require('../../helpers/data_setup')
async function navigateToRoom(user) {
@@ -25,15 +25,15 @@ describe('Mark as unread', () => {
describe('Usage', async() => {
describe('Mark message as unread', async() => {
it('should mark message as unread', async() => {
- const message = `${ data.random }message`;
+ const message = `${ data.random }message-mark-as-unread`;
const channelName = `@${ data.users.regular.username }`;
await sendMessage(data.users.alternate, channelName, message);
await waitFor(element(by.label(message)).atIndex(0)).toExist().withTimeout(30000);
+ await sleep(300);
await element(by.label(message)).atIndex(0).longPress();
- await expect(element(by.id('action-sheet'))).toExist();
- await expect(element(by.id('action-sheet-handle'))).toBeVisible();
+ await waitFor(element(by.id('action-sheet-handle'))).toBeVisible().withTimeout(3000);
await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5);
- await element(by.label('Mark Unread')).tap();
+ await element(by.label('Mark Unread')).atIndex(0).tap();
await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(5000);
await expect(element(by.id(`rooms-list-view-item-${data.users.alternate.username}`))).toExist();
});
diff --git a/e2e/tests/team/02-team.spec.js b/e2e/tests/team/02-team.spec.js
index b10fc8206..f9b819595 100644
--- a/e2e/tests/team/02-team.spec.js
+++ b/e2e/tests/team/02-team.spec.js
@@ -39,8 +39,8 @@ async function waitForToast() {
describe('Team', () => {
const team = data.teams.private.name;
const user = data.users.alternate;
- const room = `private${ data.random }`;
- const existingRoom = data.groups.private.name;
+ const room = `private${ data.random }-channel-team`;
+ const existingRoom = data.groups.alternate.name;
before(async() => {
await device.launchApp({ permissions: { notifications: 'YES' }, delete: true });
diff --git a/storybook/stories/RoomItem.js b/storybook/stories/RoomItem.js
index 025fbf7f5..c13eaa4d2 100644
--- a/storybook/stories/RoomItem.js
+++ b/storybook/stories/RoomItem.js
@@ -44,6 +44,9 @@ stories.add('Basic', () => (
));
+stories.add('Touch', () => (
+ alert('on press')} onLongPress={() => alert('on long press')} />
+));
stories.add('User', () => (
<>