Make isEditingAvatar impossible unless you're on the right step
This commit is contained in:
parent
264bdaaaaf
commit
b054802758
4 changed files with 143 additions and 633 deletions
|
@ -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:
|
||||||
|
|
37
ts/test-both/helpers/defaultComposerStates.ts
Normal file
37
ts/test-both/helpers/defaultComposerStates.ts
Normal 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,
|
||||||
|
};
|
|
@ -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,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue