Make isEditingAvatar impossible unless you're on the right step

This commit is contained in:
Evan Hahn 2021-08-16 09:33:27 -05:00 committed by GitHub
parent 264bdaaaaf
commit b054802758
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 143 additions and 633 deletions

View file

@ -253,7 +253,6 @@ type ComposerGroupCreationState = {
groupAvatar: undefined | ArrayBuffer; groupAvatar: undefined | ArrayBuffer;
groupName: string; groupName: string;
groupExpireTimer: number; groupExpireTimer: number;
isEditingAvatar: boolean;
maximumGroupSizeModalState: OneTimeModalState; maximumGroupSizeModalState: OneTimeModalState;
recommendedGroupSizeModalState: OneTimeModalState; recommendedGroupSizeModalState: OneTimeModalState;
selectedConversationIds: Array<string>; selectedConversationIds: Array<string>;
@ -272,6 +271,7 @@ type ComposerStateType =
} & ComposerGroupCreationState) } & ComposerGroupCreationState)
| ({ | ({
step: ComposerStep.SetGroupMetadata; step: ComposerStep.SetGroupMetadata;
isEditingAvatar: boolean;
} & ComposerGroupCreationState & } & ComposerGroupCreationState &
( (
| { isCreating: false; hasError: boolean } | { isCreating: false; hasError: boolean }
@ -2687,7 +2687,6 @@ export function reducer(
let groupName: string; let groupName: string;
let groupAvatar: undefined | ArrayBuffer; let groupAvatar: undefined | ArrayBuffer;
let groupExpireTimer: number; let groupExpireTimer: number;
let isEditingAvatar = false;
let userAvatarData = getDefaultAvatars(true); let userAvatarData = getDefaultAvatars(true);
switch (state.composer?.step) { switch (state.composer?.step) {
@ -2701,7 +2700,6 @@ export function reducer(
groupName, groupName,
groupAvatar, groupAvatar,
groupExpireTimer, groupExpireTimer,
isEditingAvatar,
userAvatarData, userAvatarData,
} = state.composer); } = state.composer);
break; break;
@ -2727,7 +2725,6 @@ export function reducer(
groupName, groupName,
groupAvatar, groupAvatar,
groupExpireTimer, groupExpireTimer,
isEditingAvatar,
userAvatarData, userAvatarData,
}, },
}; };
@ -2743,13 +2740,13 @@ export function reducer(
showArchived: false, showArchived: false,
composer: { composer: {
step: ComposerStep.SetGroupMetadata, step: ComposerStep.SetGroupMetadata,
isEditingAvatar: false,
isCreating: false, isCreating: false,
hasError: false, hasError: false,
...pick(composer, [ ...pick(composer, [
'groupAvatar', 'groupAvatar',
'groupName', 'groupName',
'groupExpireTimer', 'groupExpireTimer',
'isEditingAvatar',
'maximumGroupSizeModalState', 'maximumGroupSizeModalState',
'recommendedGroupSizeModalState', 'recommendedGroupSizeModalState',
'selectedConversationIds', 'selectedConversationIds',
@ -2852,13 +2849,12 @@ export function reducer(
const { composer } = state; const { composer } = state;
switch (composer?.step) { switch (composer?.step) {
case ComposerStep.ChooseGroupMembers:
case ComposerStep.SetGroupMetadata: case ComposerStep.SetGroupMetadata:
return { return {
...state, ...state,
composer: { composer: {
...composer, ...composer,
isEditingAvatar: !composer?.isEditingAvatar, isEditingAvatar: !composer.isEditingAvatar,
}, },
}; };
default: default:

View file

@ -0,0 +1,37 @@
// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { ComposerStep } from '../../state/ducks/conversations';
import { OneTimeModalState } from '../../groups/toggleSelectedContactForGroupAddition';
export const defaultStartDirectConversationComposerState = {
step: ComposerStep.StartDirectConversation as const,
searchTerm: '',
};
export const defaultChooseGroupMembersComposerState = {
step: ComposerStep.ChooseGroupMembers as const,
searchTerm: '',
cantAddContactIdForModal: undefined,
groupAvatar: undefined,
groupName: '',
groupExpireTimer: 0,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
selectedConversationIds: [],
userAvatarData: [],
};
export const defaultSetGroupMetadataComposerState = {
step: ComposerStep.SetGroupMetadata as const,
isEditingAvatar: false,
groupAvatar: undefined,
groupName: '',
groupExpireTimer: 0,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
selectedConversationIds: [],
userAvatarData: [],
isCreating: false as const,
hasError: false as const,
};

View file

@ -44,13 +44,11 @@ import { StateType, reducer as rootReducer } from '../../../state/reducer';
import { setup as setupI18n } from '../../../../js/modules/i18n'; import { setup as setupI18n } from '../../../../js/modules/i18n';
import enMessages from '../../../../_locales/en/messages.json'; import enMessages from '../../../../_locales/en/messages.json';
import { getDefaultConversation } from '../../helpers/getDefaultConversation'; import { getDefaultConversation } from '../../helpers/getDefaultConversation';
import {
function getDefaultComposeState() { defaultStartDirectConversationComposerState,
return { defaultChooseGroupMembersComposerState,
isEditingAvatar: false, defaultSetGroupMetadataComposerState,
userAvatarData: [], } from '../../helpers/defaultComposerStates';
};
}
describe('both/state/selectors/conversations', () => { describe('both/state/selectors/conversations', () => {
const getEmptyRootState = (): StateType => { const getEmptyRootState = (): StateType => {
@ -307,10 +305,7 @@ describe('both/state/selectors/conversations', () => {
...getEmptyRootState(), ...getEmptyRootState(),
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultStartDirectConversationComposerState,
step: ComposerStep.StartDirectConversation as const,
searchTerm: 'foo',
},
}, },
}; };
const result = getComposerStep(state); const result = getComposerStep(state);
@ -323,18 +318,7 @@ describe('both/state/selectors/conversations', () => {
...getEmptyRootState(), ...getEmptyRootState(),
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultChooseGroupMembersComposerState,
...getDefaultComposeState(),
step: ComposerStep.ChooseGroupMembers as const,
searchTerm: 'foo',
selectedConversationIds: ['abc'],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
},
}, },
}; };
const result = getComposerStep(state); const result = getComposerStep(state);
@ -347,19 +331,7 @@ describe('both/state/selectors/conversations', () => {
...getEmptyRootState(), ...getEmptyRootState(),
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultSetGroupMetadataComposerState,
...getDefaultComposeState(),
step: ComposerStep.SetGroupMetadata as const,
selectedConversationIds: ['abc'],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
isCreating: false,
hasError: false as const,
},
}, },
}; };
const result = getComposerStep(state); const result = getComposerStep(state);
@ -377,10 +349,7 @@ describe('both/state/selectors/conversations', () => {
...getEmptyRootState(), ...getEmptyRootState(),
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultStartDirectConversationComposerState,
step: ComposerStep.StartDirectConversation,
searchTerm: '',
},
}, },
}) })
); );
@ -392,18 +361,7 @@ describe('both/state/selectors/conversations', () => {
...getEmptyRootState(), ...getEmptyRootState(),
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultSetGroupMetadataComposerState,
...getDefaultComposeState(),
step: ComposerStep.SetGroupMetadata as const,
selectedConversationIds: [],
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
isCreating: false as const,
hasError: false as const,
},
}, },
}) })
); );
@ -416,16 +374,8 @@ describe('both/state/selectors/conversations', () => {
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultSetGroupMetadataComposerState,
step: ComposerStep.SetGroupMetadata as const, hasError: true,
selectedConversationIds: [],
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
isCreating: false as const,
hasError: true as const,
}, },
}, },
}) })
@ -442,10 +392,7 @@ describe('both/state/selectors/conversations', () => {
...getEmptyRootState(), ...getEmptyRootState(),
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultStartDirectConversationComposerState,
step: ComposerStep.StartDirectConversation,
searchTerm: '',
},
}, },
}) })
); );
@ -457,18 +404,7 @@ describe('both/state/selectors/conversations', () => {
...getEmptyRootState(), ...getEmptyRootState(),
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultSetGroupMetadataComposerState,
...getDefaultComposeState(),
step: ComposerStep.SetGroupMetadata as const,
selectedConversationIds: [],
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
isCreating: false as const,
hasError: true as const,
},
}, },
}) })
); );
@ -481,16 +417,9 @@ describe('both/state/selectors/conversations', () => {
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultSetGroupMetadataComposerState,
step: ComposerStep.SetGroupMetadata as const, isCreating: true,
selectedConversationIds: [], hasError: false,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
isCreating: true as const,
hasError: false as const,
}, },
}, },
}) })
@ -856,7 +785,7 @@ describe('both/state/selectors/conversations', () => {
}, },
}, },
composer: { composer: {
step: ComposerStep.StartDirectConversation, ...defaultStartDirectConversationComposerState,
searchTerm, searchTerm,
}, },
}, },
@ -1015,7 +944,7 @@ describe('both/state/selectors/conversations', () => {
}, },
}, },
composer: { composer: {
step: ComposerStep.StartDirectConversation, ...defaultStartDirectConversationComposerState,
searchTerm, searchTerm,
}, },
}, },
@ -1091,16 +1020,8 @@ describe('both/state/selectors/conversations', () => {
}, },
}, },
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers,
searchTerm, searchTerm,
selectedConversationIds: ['abc'],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
}, },
}, },
user: { user: {
@ -1137,10 +1058,7 @@ describe('both/state/selectors/conversations', () => {
...getEmptyRootState(), ...getEmptyRootState(),
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultStartDirectConversationComposerState,
step: ComposerStep.StartDirectConversation,
searchTerm: '',
},
}, },
}) })
); );
@ -1152,18 +1070,7 @@ describe('both/state/selectors/conversations', () => {
...getEmptyRootState(), ...getEmptyRootState(),
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultChooseGroupMembersComposerState,
...getDefaultComposeState(),
cantAddContactIdForModal: undefined,
searchTerm: '',
groupAvatar: undefined,
groupExpireTimer: 0,
groupName: '',
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
selectedConversationIds: [],
step: ComposerStep.ChooseGroupMembers as const,
},
}, },
}) })
); );
@ -1179,16 +1086,8 @@ describe('both/state/selectors/conversations', () => {
...getEmptyState(), ...getEmptyState(),
conversationLookup: { abc123: conversation }, conversationLookup: { abc123: conversation },
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
cantAddContactIdForModal: 'abc123', cantAddContactIdForModal: 'abc123',
searchTerm: '',
groupAvatar: undefined,
groupExpireTimer: 0,
groupName: '',
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
selectedConversationIds: [],
step: ComposerStep.ChooseGroupMembers as const,
}, },
}, },
}), }),
@ -1205,7 +1104,7 @@ describe('both/state/selectors/conversations', () => {
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
step: ComposerStep.StartDirectConversation, ...defaultStartDirectConversationComposerState,
searchTerm: 'foo bar', searchTerm: 'foo bar',
}, },
}, },
@ -1631,16 +1530,8 @@ describe('both/state/selectors/conversations', () => {
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
cantAddContactIdForModal: undefined,
searchTerm: 'to be cleared',
groupAvatar: undefined,
groupExpireTimer: 0,
groupName: '',
maximumGroupSizeModalState: OneTimeModalState.Showing, maximumGroupSizeModalState: OneTimeModalState.Showing,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
selectedConversationIds: [],
step: ComposerStep.ChooseGroupMembers as const,
}, },
}, },
}; };
@ -1658,16 +1549,8 @@ describe('both/state/selectors/conversations', () => {
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
cantAddContactIdForModal: undefined,
searchTerm: 'to be cleared',
groupAvatar: undefined,
groupExpireTimer: 0,
groupName: '',
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
recommendedGroupSizeModalState: OneTimeModalState.Showing, recommendedGroupSizeModalState: OneTimeModalState.Showing,
selectedConversationIds: [],
step: ComposerStep.ChooseGroupMembers as const,
}, },
}, },
}; };
@ -1685,17 +1568,8 @@ describe('both/state/selectors/conversations', () => {
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultSetGroupMetadataComposerState,
step: ComposerStep.SetGroupMetadata as const,
selectedConversationIds: ['abc'],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined, groupAvatar: undefined,
groupExpireTimer: 0,
isCreating: false,
hasError: false as const,
}, },
}, },
}; };
@ -1708,17 +1582,8 @@ describe('both/state/selectors/conversations', () => {
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultSetGroupMetadataComposerState,
step: ComposerStep.SetGroupMetadata as const,
selectedConversationIds: ['abc'],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: new Uint8Array([1, 2, 3]).buffer, groupAvatar: new Uint8Array([1, 2, 3]).buffer,
groupExpireTimer: 0,
isCreating: false,
hasError: false as const,
}, },
}, },
}; };
@ -1736,17 +1601,8 @@ describe('both/state/selectors/conversations', () => {
conversations: { conversations: {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultSetGroupMetadataComposerState,
step: ComposerStep.SetGroupMetadata as const,
selectedConversationIds: ['abc'],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: 'foo bar', groupName: 'foo bar',
groupAvatar: undefined,
groupExpireTimer: 0,
isCreating: false,
hasError: false as const,
}, },
}, },
}; };
@ -1771,17 +1627,8 @@ describe('both/state/selectors/conversations', () => {
}, },
}, },
composer: { composer: {
...getDefaultComposeState(), ...defaultSetGroupMetadataComposerState,
step: ComposerStep.SetGroupMetadata as const,
selectedConversationIds: ['convo-2', 'convo-1'], selectedConversationIds: ['convo-2', 'convo-1'],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: 'foo bar',
groupAvatar: undefined,
groupExpireTimer: 0,
isCreating: false,
hasError: false as const,
}, },
}, },
}; };

View file

@ -29,6 +29,11 @@ import { CallMode } from '../../../types/Calling';
import * as groups from '../../../groups'; import * as groups from '../../../groups';
import { getDefaultConversation } from '../../../test-both/helpers/getDefaultConversation'; import { getDefaultConversation } from '../../../test-both/helpers/getDefaultConversation';
import { getDefaultAvatars } from '../../../types/Avatar'; import { getDefaultAvatars } from '../../../types/Avatar';
import {
defaultStartDirectConversationComposerState,
defaultChooseGroupMembersComposerState,
defaultSetGroupMetadataComposerState,
} from '../../../test-both/helpers/defaultComposerStates';
const { const {
cantAddContactToGroup, cantAddContactToGroup,
@ -58,13 +63,6 @@ const {
toggleConversationInChooseMembers, toggleConversationInChooseMembers,
} = actions; } = actions;
function getDefaultComposeState() {
return {
isEditingAvatar: false,
userAvatarData: [],
};
}
describe('both/state/ducks/conversations', () => { describe('both/state/ducks/conversations', () => {
const getEmptyRootState = () => rootReducer(undefined, noopAction()); const getEmptyRootState = () => rootReducer(undefined, noopAction());
@ -459,18 +457,7 @@ describe('both/state/ducks/conversations', () => {
it('marks the conversation ID as "cannot add"', () => { it('marks the conversation ID as "cannot add"', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultChooseGroupMembersComposerState,
...getDefaultComposeState(),
cantAddContactIdForModal: undefined,
searchTerm: '',
groupAvatar: undefined,
groupExpireTimer: 0,
groupName: '',
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
selectedConversationIds: [],
step: ComposerStep.ChooseGroupMembers as const,
},
}; };
const action = cantAddContactToGroup('abc123'); const action = cantAddContactToGroup('abc123');
const result = reducer(state, action); const result = reducer(state, action);
@ -487,15 +474,7 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultSetGroupMetadataComposerState,
step: ComposerStep.SetGroupMetadata as const,
selectedConversationIds: [],
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
isCreating: false as const,
hasError: true as const, hasError: true as const,
}, },
}; };
@ -527,16 +506,8 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
cantAddContactIdForModal: 'abc123', cantAddContactIdForModal: 'abc123',
searchTerm: '',
groupAvatar: undefined,
groupExpireTimer: 0,
groupName: '',
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
selectedConversationIds: [],
step: ComposerStep.ChooseGroupMembers as const,
}, },
}; };
const action = closeCantAddContactToGroupModal(); const action = closeCantAddContactToGroupModal();
@ -579,16 +550,8 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
cantAddContactIdForModal: 'abc123',
searchTerm: '',
groupAvatar: undefined,
groupExpireTimer: 0,
groupName: '',
maximumGroupSizeModalState: OneTimeModalState.Showing, maximumGroupSizeModalState: OneTimeModalState.Showing,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
selectedConversationIds: [],
step: ComposerStep.ChooseGroupMembers as const,
}, },
}; };
const action = closeMaximumGroupSizeModal(); const action = closeMaximumGroupSizeModal();
@ -605,18 +568,7 @@ describe('both/state/ducks/conversations', () => {
it('does nothing if the maximum group size modal was never shown', () => { it('does nothing if the maximum group size modal was never shown', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultChooseGroupMembersComposerState,
...getDefaultComposeState(),
cantAddContactIdForModal: 'abc123',
searchTerm: '',
groupAvatar: undefined,
groupExpireTimer: 0,
groupName: '',
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
selectedConversationIds: [],
step: ComposerStep.ChooseGroupMembers as const,
},
}; };
const action = closeMaximumGroupSizeModal(); const action = closeMaximumGroupSizeModal();
const result = reducer(state, action); const result = reducer(state, action);
@ -628,16 +580,8 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
cantAddContactIdForModal: 'abc123',
searchTerm: '',
groupAvatar: undefined,
groupExpireTimer: 0,
groupName: '',
maximumGroupSizeModalState: OneTimeModalState.Shown, maximumGroupSizeModalState: OneTimeModalState.Shown,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
selectedConversationIds: [],
step: ComposerStep.ChooseGroupMembers as const,
}, },
}; };
const action = closeMaximumGroupSizeModal(); const action = closeMaximumGroupSizeModal();
@ -652,16 +596,8 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
cantAddContactIdForModal: 'abc123',
searchTerm: '',
groupAvatar: undefined,
groupExpireTimer: 0,
groupName: '',
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
recommendedGroupSizeModalState: OneTimeModalState.Showing, recommendedGroupSizeModalState: OneTimeModalState.Showing,
selectedConversationIds: [],
step: ComposerStep.ChooseGroupMembers as const,
}, },
}; };
const action = closeRecommendedGroupSizeModal(); const action = closeRecommendedGroupSizeModal();
@ -678,18 +614,7 @@ describe('both/state/ducks/conversations', () => {
it('does nothing if the recommended group size modal was never shown', () => { it('does nothing if the recommended group size modal was never shown', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultChooseGroupMembersComposerState,
...getDefaultComposeState(),
cantAddContactIdForModal: 'abc123',
searchTerm: '',
groupAvatar: undefined,
groupExpireTimer: 0,
groupName: '',
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
selectedConversationIds: [],
step: ComposerStep.ChooseGroupMembers as const,
},
}; };
const action = closeRecommendedGroupSizeModal(); const action = closeRecommendedGroupSizeModal();
const result = reducer(state, action); const result = reducer(state, action);
@ -701,16 +626,8 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
cantAddContactIdForModal: 'abc123',
searchTerm: '',
groupAvatar: undefined,
groupExpireTimer: 0,
groupName: '',
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
recommendedGroupSizeModalState: OneTimeModalState.Shown, recommendedGroupSizeModalState: OneTimeModalState.Shown,
selectedConversationIds: [],
step: ComposerStep.ChooseGroupMembers as const,
}, },
}; };
const action = closeRecommendedGroupSizeModal(); const action = closeRecommendedGroupSizeModal();
@ -724,16 +641,10 @@ describe('both/state/ducks/conversations', () => {
const conversationsState = { const conversationsState = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultSetGroupMetadataComposerState,
step: ComposerStep.SetGroupMetadata as const,
selectedConversationIds: ['abc123'], selectedConversationIds: ['abc123'],
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: 'Foo Bar Group', groupName: 'Foo Bar Group',
groupAvatar: new Uint8Array([1, 2, 3]).buffer, groupAvatar: new Uint8Array([1, 2, 3]).buffer,
groupExpireTimer: 0,
isCreating: false as const,
hasError: true as const,
}, },
}; };
@ -1230,16 +1141,8 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultSetGroupMetadataComposerState,
step: ComposerStep.SetGroupMetadata as const,
selectedConversationIds: [],
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: 'foo',
groupAvatar: new ArrayBuffer(2), groupAvatar: new ArrayBuffer(2),
groupExpireTimer: 0,
isCreating: false as const,
hasError: false as const,
}, },
}; };
const action = setComposeGroupAvatar(undefined); const action = setComposeGroupAvatar(undefined);
@ -1256,18 +1159,7 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultSetGroupMetadataComposerState,
...getDefaultComposeState(),
step: ComposerStep.SetGroupMetadata as const,
selectedConversationIds: [],
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: 'foo',
groupAvatar: undefined,
groupExpireTimer: 0,
isCreating: false as const,
hasError: false as const,
},
}; };
const action = setComposeGroupAvatar(avatar); const action = setComposeGroupAvatar(avatar);
const result = reducer(state, action); const result = reducer(state, action);
@ -1283,18 +1175,7 @@ describe('both/state/ducks/conversations', () => {
it("can set the composer's group name", () => { it("can set the composer's group name", () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultSetGroupMetadataComposerState,
...getDefaultComposeState(),
step: ComposerStep.SetGroupMetadata as const,
selectedConversationIds: [],
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
isCreating: false as const,
hasError: false as const,
},
}; };
const action = setComposeGroupName('bing bong'); const action = setComposeGroupName('bing bong');
const result = reducer(state, action); const result = reducer(state, action);
@ -1310,16 +1191,13 @@ describe('both/state/ducks/conversations', () => {
it('updates the contact search term', () => { it('updates the contact search term', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultStartDirectConversationComposerState,
step: ComposerStep.StartDirectConversation as const,
searchTerm: '',
},
}; };
const action = setComposeSearchTerm('foo bar'); const action = setComposeSearchTerm('foo bar');
const result = reducer(state, action); const result = reducer(state, action);
assert.deepEqual(result.composer, { assert.deepEqual(result.composer, {
step: ComposerStep.StartDirectConversation, ...defaultStartDirectConversationComposerState,
searchTerm: 'foo bar', searchTerm: 'foo bar',
}); });
}); });
@ -1384,10 +1262,7 @@ describe('both/state/ducks/conversations', () => {
it('switches from the composer to the archive', () => { it('switches from the composer to the archive', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultStartDirectConversationComposerState,
step: ComposerStep.StartDirectConversation as const,
searchTerm: '',
},
}; };
const action = showArchivedConversations(); const action = showArchivedConversations();
const result = reducer(state, action); const result = reducer(state, action);
@ -1422,10 +1297,7 @@ describe('both/state/ducks/conversations', () => {
it('switches from the composer to the inbox', () => { it('switches from the composer to the inbox', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultStartDirectConversationComposerState,
step: ComposerStep.StartDirectConversation as const,
searchTerm: '',
},
}; };
const action = showInbox(); const action = showInbox();
const result = reducer(state, action); const result = reducer(state, action);
@ -1439,71 +1311,49 @@ describe('both/state/ducks/conversations', () => {
it('does nothing if on the first step of the composer', () => { it('does nothing if on the first step of the composer', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultStartDirectConversationComposerState,
step: ComposerStep.StartDirectConversation as const,
searchTerm: 'foo bar',
},
}; };
const action = startComposing(); const action = startComposing();
const result = reducer(state, action); const result = reducer(state, action);
assert.isFalse(result.showArchived); assert.isFalse(result.showArchived);
assert.deepEqual(result.composer, { assert.deepEqual(
step: ComposerStep.StartDirectConversation, result.composer,
searchTerm: 'foo bar', defaultStartDirectConversationComposerState
}); );
}); });
it('if on the second step of the composer, goes back to the first step, clearing the search term', () => { it('if on the second step of the composer, goes back to the first step, clearing the search term', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
cantAddContactIdForModal: undefined,
searchTerm: 'to be cleared', searchTerm: 'to be cleared',
groupAvatar: undefined,
groupExpireTimer: 0,
groupName: '',
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
selectedConversationIds: [],
step: ComposerStep.ChooseGroupMembers as const,
}, },
}; };
const action = startComposing(); const action = startComposing();
const result = reducer(state, action); const result = reducer(state, action);
assert.isFalse(result.showArchived); assert.isFalse(result.showArchived);
assert.deepEqual(result.composer, { assert.deepEqual(
step: ComposerStep.StartDirectConversation, result.composer,
searchTerm: '', defaultStartDirectConversationComposerState
}); );
}); });
it('if on the third step of the composer, goes back to the first step, clearing everything', () => { it('if on the third step of the composer, goes back to the first step, clearing everything', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultSetGroupMetadataComposerState,
...getDefaultComposeState(),
step: ComposerStep.SetGroupMetadata as const,
selectedConversationIds: [],
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
isCreating: false,
hasError: false as const,
},
}; };
const action = startComposing(); const action = startComposing();
const result = reducer(state, action); const result = reducer(state, action);
assert.isFalse(result.showArchived); assert.isFalse(result.showArchived);
assert.deepEqual(result.composer, { assert.deepEqual(
step: ComposerStep.StartDirectConversation, result.composer,
searchTerm: '', defaultStartDirectConversationComposerState
}); );
}); });
it('switches from the inbox to the composer', () => { it('switches from the inbox to the composer', () => {
@ -1512,10 +1362,10 @@ describe('both/state/ducks/conversations', () => {
const result = reducer(state, action); const result = reducer(state, action);
assert.isFalse(result.showArchived); assert.isFalse(result.showArchived);
assert.deepEqual(result.composer, { assert.deepEqual(
step: ComposerStep.StartDirectConversation, result.composer,
searchTerm: '', defaultStartDirectConversationComposerState
}); );
}); });
it('switches from the archive to the inbox', () => { it('switches from the archive to the inbox', () => {
@ -1527,10 +1377,10 @@ describe('both/state/ducks/conversations', () => {
const result = reducer(state, action); const result = reducer(state, action);
assert.isFalse(result.showArchived); assert.isFalse(result.showArchived);
assert.deepEqual(result.composer, { assert.deepEqual(
step: ComposerStep.StartDirectConversation, result.composer,
searchTerm: '', defaultStartDirectConversationComposerState
}); );
}); });
}); });
@ -1539,7 +1389,7 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
step: ComposerStep.StartDirectConversation as const, ...defaultStartDirectConversationComposerState,
searchTerm: 'to be cleared', searchTerm: 'to be cleared',
}, },
}; };
@ -1548,16 +1398,7 @@ describe('both/state/ducks/conversations', () => {
assert.isFalse(result.showArchived); assert.isFalse(result.showArchived);
assert.deepEqual(result.composer, { assert.deepEqual(result.composer, {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers,
searchTerm: '',
selectedConversationIds: [],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
userAvatarData: getDefaultAvatars(true), userAvatarData: getDefaultAvatars(true),
}); });
}); });
@ -1565,18 +1406,7 @@ describe('both/state/ducks/conversations', () => {
it('does nothing if already on the second step of the composer', () => { it('does nothing if already on the second step of the composer', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultChooseGroupMembersComposerState,
...getDefaultComposeState(),
step: ComposerStep.ChooseGroupMembers as const,
searchTerm: 'foo bar',
selectedConversationIds: [],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
},
}; };
const action = showChooseGroupMembers(); const action = showChooseGroupMembers();
const result = reducer(state, action); const result = reducer(state, action);
@ -1588,17 +1418,9 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultSetGroupMetadataComposerState,
step: ComposerStep.SetGroupMetadata as const,
selectedConversationIds: [],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: 'Foo Bar Group', groupName: 'Foo Bar Group',
groupAvatar: new Uint8Array([4, 2]).buffer, groupAvatar: new Uint8Array([4, 2]).buffer,
groupExpireTimer: 0,
isCreating: false,
hasError: false as const,
}, },
}; };
const action = showChooseGroupMembers(); const action = showChooseGroupMembers();
@ -1606,16 +1428,9 @@ describe('both/state/ducks/conversations', () => {
assert.isFalse(result.showArchived); assert.isFalse(result.showArchived);
assert.deepEqual(result.composer, { assert.deepEqual(result.composer, {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers,
searchTerm: '',
selectedConversationIds: [],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: 'Foo Bar Group', groupName: 'Foo Bar Group',
groupAvatar: new Uint8Array([4, 2]).buffer, groupAvatar: new Uint8Array([4, 2]).buffer,
groupExpireTimer: 0,
}); });
}); });
@ -1626,16 +1441,7 @@ describe('both/state/ducks/conversations', () => {
assert.isFalse(result.showArchived); assert.isFalse(result.showArchived);
assert.deepEqual(result.composer, { assert.deepEqual(result.composer, {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers,
searchTerm: '',
selectedConversationIds: [],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
userAvatarData: getDefaultAvatars(true), userAvatarData: getDefaultAvatars(true),
}); });
}); });
@ -1650,16 +1456,7 @@ describe('both/state/ducks/conversations', () => {
assert.isFalse(result.showArchived); assert.isFalse(result.showArchived);
assert.deepEqual(result.composer, { assert.deepEqual(result.composer, {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers,
searchTerm: '',
selectedConversationIds: [],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
userAvatarData: getDefaultAvatars(true), userAvatarData: getDefaultAvatars(true),
}); });
}); });
@ -1670,32 +1467,16 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers as const,
searchTerm: 'foo bar',
selectedConversationIds: ['abc', 'def'], selectedConversationIds: ['abc', 'def'],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
}, },
}; };
const action = startSettingGroupMetadata(); const action = startSettingGroupMetadata();
const result = reducer(state, action); const result = reducer(state, action);
assert.deepEqual(result.composer, { assert.deepEqual(result.composer, {
...getDefaultComposeState(), ...defaultSetGroupMetadataComposerState,
step: ComposerStep.SetGroupMetadata,
selectedConversationIds: ['abc', 'def'], selectedConversationIds: ['abc', 'def'],
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
isCreating: false,
hasError: false,
}); });
}); });
@ -1703,50 +1484,28 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers as const,
searchTerm: 'foo bar', searchTerm: 'foo bar',
selectedConversationIds: ['abc', 'def'], selectedConversationIds: ['abc', 'def'],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: 'Foo Bar Group', groupName: 'Foo Bar Group',
groupAvatar: new Uint8Array([6, 9]).buffer, groupAvatar: new Uint8Array([6, 9]).buffer,
groupExpireTimer: 0,
}, },
}; };
const action = startSettingGroupMetadata(); const action = startSettingGroupMetadata();
const result = reducer(state, action); const result = reducer(state, action);
assert.deepEqual(result.composer, { assert.deepEqual(result.composer, {
...getDefaultComposeState(), ...defaultSetGroupMetadataComposerState,
step: ComposerStep.SetGroupMetadata,
selectedConversationIds: ['abc', 'def'], selectedConversationIds: ['abc', 'def'],
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: 'Foo Bar Group', groupName: 'Foo Bar Group',
groupAvatar: new Uint8Array([6, 9]).buffer, groupAvatar: new Uint8Array([6, 9]).buffer,
groupExpireTimer: 0,
isCreating: false,
hasError: false as const,
}); });
}); });
it('does nothing if already on the third step of the composer', () => { it('does nothing if already on the third step of the composer', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultSetGroupMetadataComposerState,
...getDefaultComposeState(),
step: ComposerStep.SetGroupMetadata as const,
selectedConversationIds: [],
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: 'Foo Bar Group',
groupAvatar: new Uint8Array([4, 2]).buffer,
groupExpireTimer: 0,
isCreating: false,
hasError: false as const,
},
}; };
const action = startSettingGroupMetadata(); const action = startSettingGroupMetadata();
const result = reducer(state, action); const result = reducer(state, action);
@ -1788,33 +1547,14 @@ describe('both/state/ducks/conversations', () => {
it('adds conversation IDs to the list', () => { it('adds conversation IDs to the list', () => {
const zero = { const zero = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultChooseGroupMembersComposerState,
...getDefaultComposeState(),
step: ComposerStep.ChooseGroupMembers as const,
searchTerm: '',
selectedConversationIds: [],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
},
}; };
const one = reducer(zero, getAction('abc', zero)); const one = reducer(zero, getAction('abc', zero));
const two = reducer(one, getAction('def', one)); const two = reducer(one, getAction('def', one));
assert.deepEqual(two.composer, { assert.deepEqual(two.composer, {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers,
searchTerm: '',
selectedConversationIds: ['abc', 'def'], selectedConversationIds: ['abc', 'def'],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
}); });
}); });
@ -1822,32 +1562,16 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers as const,
searchTerm: '',
selectedConversationIds: ['abc', 'def'], selectedConversationIds: ['abc', 'def'],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
}, },
}; };
const action = getAction('abc', state); const action = getAction('abc', state);
const result = reducer(state, action); const result = reducer(state, action);
assert.deepEqual(result.composer, { assert.deepEqual(result.composer, {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers,
searchTerm: '',
selectedConversationIds: ['def'], selectedConversationIds: ['def'],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
}); });
}); });
@ -1858,32 +1582,17 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers as const,
searchTerm: '',
selectedConversationIds: oldSelectedConversationIds, selectedConversationIds: oldSelectedConversationIds,
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
}, },
}; };
const action = getAction(newUuid, state); const action = getAction(newUuid, state);
const result = reducer(state, action); const result = reducer(state, action);
assert.deepEqual(result.composer, { assert.deepEqual(result.composer, {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers,
searchTerm: '',
selectedConversationIds: [...oldSelectedConversationIds, newUuid], selectedConversationIds: [...oldSelectedConversationIds, newUuid],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.Showing, recommendedGroupSizeModalState: OneTimeModalState.Showing,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
}); });
}); });
@ -1894,32 +1603,18 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers as const,
searchTerm: '',
selectedConversationIds: oldSelectedConversationIds, selectedConversationIds: oldSelectedConversationIds,
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.Shown, recommendedGroupSizeModalState: OneTimeModalState.Shown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
}, },
}; };
const action = getAction(newUuid, state); const action = getAction(newUuid, state);
const result = reducer(state, action); const result = reducer(state, action);
assert.deepEqual(result.composer, { assert.deepEqual(result.composer, {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers,
searchTerm: '',
selectedConversationIds: [...oldSelectedConversationIds, newUuid], selectedConversationIds: [...oldSelectedConversationIds, newUuid],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.Shown, recommendedGroupSizeModalState: OneTimeModalState.Shown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
}); });
}); });
@ -1931,18 +1626,7 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultChooseGroupMembersComposerState,
...getDefaultComposeState(),
step: ComposerStep.ChooseGroupMembers as const,
searchTerm: '',
selectedConversationIds: [],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
},
}; };
const action = getAction(uuid(), state); const action = getAction(uuid(), state);
@ -1957,32 +1641,20 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers as const,
searchTerm: '',
selectedConversationIds: oldSelectedConversationIds, selectedConversationIds: oldSelectedConversationIds,
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.Shown, recommendedGroupSizeModalState: OneTimeModalState.Shown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown, maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
}, },
}; };
const action = getAction(newUuid, state); const action = getAction(newUuid, state);
const result = reducer(state, action); const result = reducer(state, action);
assert.deepEqual(result.composer, { assert.deepEqual(result.composer, {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers,
searchTerm: '',
selectedConversationIds: [...oldSelectedConversationIds, newUuid], selectedConversationIds: [...oldSelectedConversationIds, newUuid],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.Shown, recommendedGroupSizeModalState: OneTimeModalState.Shown,
maximumGroupSizeModalState: OneTimeModalState.Showing, maximumGroupSizeModalState: OneTimeModalState.Showing,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
}); });
}); });
@ -1993,32 +1665,20 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers as const,
searchTerm: '',
selectedConversationIds: oldSelectedConversationIds, selectedConversationIds: oldSelectedConversationIds,
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.Shown, recommendedGroupSizeModalState: OneTimeModalState.Shown,
maximumGroupSizeModalState: OneTimeModalState.Shown, maximumGroupSizeModalState: OneTimeModalState.Shown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
}, },
}; };
const action = getAction(newUuid, state); const action = getAction(newUuid, state);
const result = reducer(state, action); const result = reducer(state, action);
assert.deepEqual(result.composer, { assert.deepEqual(result.composer, {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers,
searchTerm: '',
selectedConversationIds: [...oldSelectedConversationIds, newUuid], selectedConversationIds: [...oldSelectedConversationIds, newUuid],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.Shown, recommendedGroupSizeModalState: OneTimeModalState.Shown,
maximumGroupSizeModalState: OneTimeModalState.Shown, maximumGroupSizeModalState: OneTimeModalState.Shown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
}); });
}); });
@ -2026,16 +1686,8 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: {
...getDefaultComposeState(), ...defaultChooseGroupMembersComposerState,
step: ComposerStep.ChooseGroupMembers as const,
searchTerm: '',
selectedConversationIds: times(1000, () => uuid()), selectedConversationIds: times(1000, () => uuid()),
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
}, },
}; };
const action = getAction(uuid(), state); const action = getAction(uuid(), state);
@ -2054,18 +1706,7 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultChooseGroupMembersComposerState,
...getDefaultComposeState(),
step: ComposerStep.ChooseGroupMembers as const,
searchTerm: '',
selectedConversationIds: [],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
},
}; };
const action = getAction(uuid(), state); const action = getAction(uuid(), state);
@ -2082,18 +1723,7 @@ describe('both/state/ducks/conversations', () => {
const state = { const state = {
...getEmptyState(), ...getEmptyState(),
composer: { composer: defaultChooseGroupMembersComposerState,
...getDefaultComposeState(),
step: ComposerStep.ChooseGroupMembers as const,
searchTerm: '',
selectedConversationIds: [],
cantAddContactIdForModal: undefined,
recommendedGroupSizeModalState: OneTimeModalState.NeverShown,
maximumGroupSizeModalState: OneTimeModalState.NeverShown,
groupName: '',
groupAvatar: undefined,
groupExpireTimer: 0,
},
}; };
const action = getAction(uuid(), state); const action = getAction(uuid(), state);