signal-desktop/ts/components/LeftPane.stories.tsx

1025 lines
26 KiB
TypeScript
Raw Normal View History

2022-01-12 17:35:47 +00:00
// Copyright 2020-2022 Signal Messenger, LLC
2020-10-30 20:34:04 +00:00
// SPDX-License-Identifier: AGPL-3.0-only
2020-08-21 16:09:39 +00:00
import * as React from 'react';
import { action } from '@storybook/addon-actions';
import { select } from '@storybook/addon-knobs';
2020-08-21 16:09:39 +00:00
import type { PropsType } from './LeftPane';
import { LeftPane, LeftPaneMode } from './LeftPane';
import { CaptchaDialog } from './CaptchaDialog';
2022-01-11 20:02:46 +00:00
import { CrashReportDialog } from './CrashReportDialog';
import type { ConversationType } from '../state/ducks/conversations';
import { MessageSearchResult } from './conversationList/MessageSearchResult';
2021-09-18 00:30:08 +00:00
import { setupI18n } from '../util/setupI18n';
2020-08-21 16:09:39 +00:00
import enMessages from '../../_locales/en/messages.json';
2021-11-17 21:11:21 +00:00
import { ThemeType } from '../types/Util';
2021-05-07 22:21:10 +00:00
import { getDefaultConversation } from '../test-both/helpers/getDefaultConversation';
2021-11-02 23:01:13 +00:00
import { StorybookThemeContext } from '../../.storybook/StorybookThemeContext';
import {
makeFakeLookupConversationWithoutUuid,
useUuidFetchState,
} from '../test-both/helpers/fakeLookupConversationWithoutUuid';
2020-09-12 00:46:52 +00:00
2020-08-21 16:09:39 +00:00
const i18n = setupI18n('en', enMessages);
2022-06-07 00:48:02 +00:00
export default {
title: 'Components/LeftPane',
};
2020-08-21 16:09:39 +00:00
2021-05-07 22:21:10 +00:00
const defaultConversations: Array<ConversationType> = [
getDefaultConversation({
2020-08-21 16:09:39 +00:00
id: 'fred-convo',
title: 'Fred Willard',
2021-05-07 22:21:10 +00:00
}),
getDefaultConversation({
2020-08-21 16:09:39 +00:00
id: 'marc-convo',
isSelected: true,
title: 'Marc Barraca',
2021-05-07 22:21:10 +00:00
}),
2020-08-21 16:09:39 +00:00
];
2022-01-27 22:12:26 +00:00
const defaultSearchProps = {
searchConversation: undefined,
searchDisabled: false,
searchTerm: 'hello',
startSearchCounter: 0,
};
2021-05-07 22:21:10 +00:00
const defaultGroups: Array<ConversationType> = [
getDefaultConversation({
id: 'biking-group',
title: 'Mtn Biking Arizona 🚵☀️⛰',
type: 'group',
2021-05-07 22:21:10 +00:00
sharedGroupNames: [],
}),
getDefaultConversation({
id: 'dance-group',
title: 'Are we dancers? 💃',
type: 'group',
2021-05-07 22:21:10 +00:00
sharedGroupNames: [],
}),
];
2021-05-07 22:21:10 +00:00
const defaultArchivedConversations: Array<ConversationType> = [
getDefaultConversation({
2020-08-21 16:09:39 +00:00
id: 'michelle-archive-convo',
title: 'Michelle Mercure',
2021-05-07 22:21:10 +00:00
isArchived: true,
}),
2020-08-21 16:09:39 +00:00
];
2021-05-07 22:21:10 +00:00
const pinnedConversations: Array<ConversationType> = [
getDefaultConversation({
id: 'philly-convo',
isPinned: true,
title: 'Philip Glass',
2021-05-07 22:21:10 +00:00
}),
getDefaultConversation({
id: 'robbo-convo',
isPinned: true,
title: 'Robert Moog',
2021-05-07 22:21:10 +00:00
}),
];
const defaultModeSpecificProps = {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Inbox as const,
pinnedConversations,
conversations: defaultConversations,
archivedConversations: defaultArchivedConversations,
isAboutToSearchInAConversation: false,
};
const emptySearchResultsGroup = { isLoading: false, results: [] };
const useProps = (overrideProps: Partial<PropsType> = {}): PropsType => {
let modeSpecificProps =
overrideProps.modeSpecificProps ?? defaultModeSpecificProps;
const [uuidFetchState, setIsFetchingUUID] = useUuidFetchState(
'uuidFetchState' in modeSpecificProps
? modeSpecificProps.uuidFetchState
: {}
);
if ('uuidFetchState' in modeSpecificProps) {
modeSpecificProps = {
...modeSpecificProps,
uuidFetchState,
};
}
return {
clearConversationSearch: action('clearConversationSearch'),
clearGroupCreationError: action('clearGroupCreationError'),
clearSearch: action('clearSearch'),
closeMaximumGroupSizeModal: action('closeMaximumGroupSizeModal'),
closeRecommendedGroupSizeModal: action('closeRecommendedGroupSizeModal'),
composeDeleteAvatarFromDisk: action('composeDeleteAvatarFromDisk'),
composeReplaceAvatar: action('composeReplaceAvatar'),
composeSaveAvatarToDisk: action('composeSaveAvatarToDisk'),
createGroup: action('createGroup'),
getPreferredBadge: () => undefined,
i18n,
preferredWidthFromStorage: 320,
regionCode: 'US',
challengeStatus: select(
'challengeStatus',
['idle', 'required', 'pending'],
'idle'
),
crashReportCount: select('challengeReportCount', [0, 1], 0),
setChallengeStatus: action('setChallengeStatus'),
lookupConversationWithoutUuid: makeFakeLookupConversationWithoutUuid(),
showUserNotFoundModal: action('showUserNotFoundModal'),
setIsFetchingUUID,
showConversation: action('showConversation'),
renderExpiredBuildDialog: () => <div />,
renderMainHeader: () => <div />,
renderMessageSearchResult: (id: string) => (
<MessageSearchResult
body="Lorem ipsum wow"
bodyRanges={[]}
conversationId="marc-convo"
from={defaultConversations[0]}
getPreferredBadge={() => undefined}
i18n={i18n}
id={id}
2022-06-16 19:12:50 +00:00
showConversation={action('showConversation')}
sentAt={1587358800000}
snippet="Lorem <<left>>ipsum<<right>> wow"
theme={ThemeType.light}
to={defaultConversations[1]}
/>
),
renderNetworkStatus: () => <div />,
renderRelinkDialog: () => <div />,
renderUpdateDialog: () => <div />,
renderCaptchaDialog: () => (
<CaptchaDialog
i18n={i18n}
isPending={overrideProps.challengeStatus === 'pending'}
onContinue={action('onCaptchaContinue')}
onSkip={action('onCaptchaSkip')}
/>
),
renderCrashReportDialog: () => (
<CrashReportDialog
i18n={i18n}
isPending={false}
uploadCrashReports={action('uploadCrashReports')}
eraseCrashReports={action('eraseCrashReports')}
/>
),
selectedConversationId: undefined,
selectedMessageId: undefined,
savePreferredLeftPaneWidth: action('savePreferredLeftPaneWidth'),
searchInConversation: action('searchInConversation'),
setComposeSearchTerm: action('setComposeSearchTerm'),
setComposeGroupAvatar: action('setComposeGroupAvatar'),
setComposeGroupName: action('setComposeGroupName'),
setComposeGroupExpireTimer: action('setComposeGroupExpireTimer'),
showArchivedConversations: action('showArchivedConversations'),
showInbox: action('showInbox'),
startComposing: action('startComposing'),
showChooseGroupMembers: action('showChooseGroupMembers'),
startSearch: action('startSearch'),
startSettingGroupMetadata: action('startSettingGroupMetadata'),
theme: React.useContext(StorybookThemeContext),
toggleComposeEditingAvatar: action('toggleComposeEditingAvatar'),
toggleConversationInChooseMembers: action(
'toggleConversationInChooseMembers'
),
updateSearchTerm: action('updateSearchTerm'),
...overrideProps,
modeSpecificProps,
};
};
2020-08-21 16:09:39 +00:00
2022-06-07 00:48:02 +00:00
export const InboxNoConversations = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Inbox,
pinnedConversations: [],
conversations: [],
archivedConversations: [],
isAboutToSearchInAConversation: false,
},
})}
/>
2022-06-07 00:48:02 +00:00
);
InboxNoConversations.story = {
name: 'Inbox: no conversations',
};
2020-08-21 16:09:39 +00:00
2022-06-07 00:48:02 +00:00
export const InboxOnlyPinnedConversations = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Inbox,
pinnedConversations,
conversations: [],
archivedConversations: [],
isAboutToSearchInAConversation: false,
},
})}
/>
2022-06-07 00:48:02 +00:00
);
InboxOnlyPinnedConversations.story = {
name: 'Inbox: only pinned conversations',
};
2022-06-07 00:48:02 +00:00
export const InboxOnlyNonPinnedConversations = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Inbox,
pinnedConversations: [],
conversations: defaultConversations,
archivedConversations: [],
isAboutToSearchInAConversation: false,
},
})}
/>
2022-06-07 00:48:02 +00:00
);
InboxOnlyNonPinnedConversations.story = {
name: 'Inbox: only non-pinned conversations',
};
2022-06-07 00:48:02 +00:00
export const InboxOnlyArchivedConversations = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Inbox,
pinnedConversations: [],
conversations: [],
archivedConversations: defaultArchivedConversations,
isAboutToSearchInAConversation: false,
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
InboxOnlyArchivedConversations.story = {
name: 'Inbox: only archived conversations',
};
export const InboxPinnedAndArchivedConversations = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Inbox,
pinnedConversations,
conversations: [],
archivedConversations: defaultArchivedConversations,
isAboutToSearchInAConversation: false,
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
InboxPinnedAndArchivedConversations.story = {
name: 'Inbox: pinned and archived conversations',
};
export const InboxNonPinnedAndArchivedConversations = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Inbox,
pinnedConversations: [],
conversations: defaultConversations,
archivedConversations: defaultArchivedConversations,
isAboutToSearchInAConversation: false,
},
})}
/>
2022-06-07 00:48:02 +00:00
);
InboxNonPinnedAndArchivedConversations.story = {
name: 'Inbox: non-pinned and archived conversations',
};
2020-08-21 16:09:39 +00:00
2022-06-07 00:48:02 +00:00
export const InboxPinnedAndNonPinnedConversations = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Inbox,
pinnedConversations,
conversations: defaultConversations,
archivedConversations: [],
isAboutToSearchInAConversation: false,
},
})}
/>
2022-06-07 00:48:02 +00:00
);
InboxPinnedAndNonPinnedConversations.story = {
name: 'Inbox: pinned and non-pinned conversations',
};
2022-06-07 00:48:02 +00:00
export const InboxPinnedNonPinnedAndArchivedConversations = (): JSX.Element => (
2021-11-02 23:01:13 +00:00
<LeftPane {...useProps()} />
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
InboxPinnedNonPinnedAndArchivedConversations.story = {
name: 'Inbox: pinned, non-pinned, and archived conversations',
};
2022-06-07 00:48:02 +00:00
export const SearchNoResultsWhenSearchingEverywhere = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Search,
conversationResults: emptySearchResultsGroup,
contactResults: emptySearchResultsGroup,
messageResults: emptySearchResultsGroup,
primarySendsSms: false,
},
})}
/>
2022-06-07 00:48:02 +00:00
);
SearchNoResultsWhenSearchingEverywhere.story = {
name: 'Search: no results when searching everywhere',
};
2022-06-07 00:48:02 +00:00
export const SearchNoResultsWhenSearchingEverywhereSms = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Search,
conversationResults: emptySearchResultsGroup,
contactResults: emptySearchResultsGroup,
messageResults: emptySearchResultsGroup,
primarySendsSms: true,
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
SearchNoResultsWhenSearchingEverywhereSms.story = {
name: 'Search: no results when searching everywhere (SMS)',
};
export const SearchNoResultsWhenSearchingInAConversation = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Search,
conversationResults: emptySearchResultsGroup,
contactResults: emptySearchResultsGroup,
messageResults: emptySearchResultsGroup,
searchConversationName: 'Bing Bong',
primarySendsSms: false,
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
SearchNoResultsWhenSearchingInAConversation.story = {
name: 'Search: no results when searching in a conversation',
};
export const SearchAllResultsLoading = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Search,
conversationResults: { isLoading: true },
contactResults: { isLoading: true },
messageResults: { isLoading: true },
primarySendsSms: false,
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
SearchAllResultsLoading.story = {
name: 'Search: all results loading',
};
export const SearchSomeResultsLoading = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Search,
conversationResults: {
isLoading: false,
results: defaultConversations,
2020-08-21 16:09:39 +00:00
},
contactResults: { isLoading: true },
messageResults: { isLoading: true },
primarySendsSms: false,
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
SearchSomeResultsLoading.story = {
name: 'Search: some results loading',
};
export const SearchHasConversationsAndContactsButNotMessages =
(): JSX.Element => (
<LeftPane
{...useProps({
modeSpecificProps: {
...defaultSearchProps,
mode: LeftPaneMode.Search,
conversationResults: {
isLoading: false,
results: defaultConversations,
},
contactResults: { isLoading: false, results: defaultConversations },
messageResults: { isLoading: false, results: [] },
primarySendsSms: false,
2020-08-21 16:09:39 +00:00
},
2022-06-07 00:48:02 +00:00
})}
/>
);
SearchHasConversationsAndContactsButNotMessages.story = {
name: 'Search: has conversations and contacts, but not messages',
};
2022-06-07 00:48:02 +00:00
export const SearchAllResults = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Search,
conversationResults: {
isLoading: false,
results: defaultConversations,
2020-08-21 16:09:39 +00:00
},
contactResults: { isLoading: false, results: defaultConversations },
messageResults: {
isLoading: false,
results: [
{ id: 'msg1', type: 'outgoing', conversationId: 'foo' },
{ id: 'msg2', type: 'incoming', conversationId: 'bar' },
],
2020-08-21 16:09:39 +00:00
},
primarySendsSms: false,
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
SearchAllResults.story = {
name: 'Search: all results',
};
2022-06-07 00:48:02 +00:00
export const ArchiveNoArchivedConversations = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.Archive,
archivedConversations: [],
2021-11-01 18:43:02 +00:00
searchConversation: undefined,
searchTerm: '',
startSearchCounter: 0,
},
})}
/>
2022-06-07 00:48:02 +00:00
);
ArchiveNoArchivedConversations.story = {
name: 'Archive: no archived conversations',
};
2022-06-07 00:48:02 +00:00
export const ArchiveArchivedConversations = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.Archive,
archivedConversations: defaultConversations,
2021-11-01 18:43:02 +00:00
searchConversation: undefined,
searchTerm: '',
startSearchCounter: 0,
2021-11-01 18:43:02 +00:00
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2021-11-01 18:43:02 +00:00
2022-06-07 00:48:02 +00:00
ArchiveArchivedConversations.story = {
name: 'Archive: archived conversations',
};
export const ArchiveSearchingAConversation = (): JSX.Element => (
2021-11-01 18:43:02 +00:00
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
2021-11-01 18:43:02 +00:00
modeSpecificProps: {
mode: LeftPaneMode.Archive,
archivedConversations: defaultConversations,
2021-12-01 02:14:25 +00:00
searchConversation: undefined,
searchTerm: '',
startSearchCounter: 0,
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
ArchiveSearchingAConversation.story = {
name: 'Archive: searching a conversation',
};
2022-06-07 00:48:02 +00:00
export const ComposeNoResults = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.Compose,
composeContacts: [],
composeGroups: [],
2021-11-12 01:17:29 +00:00
isUsernamesEnabled: true,
uuidFetchState: {},
regionCode: 'US',
searchTerm: '',
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
ComposeNoResults.story = {
name: 'Compose: no results',
};
export const ComposeSomeContactsNoSearchTerm = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.Compose,
composeContacts: defaultConversations,
composeGroups: [],
2021-11-12 01:17:29 +00:00
isUsernamesEnabled: true,
uuidFetchState: {},
regionCode: 'US',
searchTerm: '',
},
})}
/>
2022-06-07 00:48:02 +00:00
);
ComposeSomeContactsNoSearchTerm.story = {
name: 'Compose: some contacts, no search term',
};
2022-06-07 00:48:02 +00:00
export const ComposeSomeContactsWithASearchTerm = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.Compose,
composeContacts: defaultConversations,
composeGroups: [],
2021-11-12 01:17:29 +00:00
isUsernamesEnabled: true,
uuidFetchState: {},
regionCode: 'US',
searchTerm: 'ar',
},
})}
/>
2022-06-07 00:48:02 +00:00
);
ComposeSomeContactsWithASearchTerm.story = {
name: 'Compose: some contacts, with a search term',
};
2022-06-07 00:48:02 +00:00
export const ComposeSomeGroupsNoSearchTerm = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.Compose,
composeContacts: [],
composeGroups: defaultGroups,
2021-11-12 01:17:29 +00:00
isUsernamesEnabled: true,
uuidFetchState: {},
regionCode: 'US',
searchTerm: '',
},
})}
/>
2022-06-07 00:48:02 +00:00
);
ComposeSomeGroupsNoSearchTerm.story = {
name: 'Compose: some groups, no search term',
};
2022-06-07 00:48:02 +00:00
export const ComposeSomeGroupsWithSearchTerm = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.Compose,
composeContacts: [],
composeGroups: defaultGroups,
2021-11-12 01:17:29 +00:00
isUsernamesEnabled: true,
uuidFetchState: {},
regionCode: 'US',
searchTerm: 'ar',
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
ComposeSomeGroupsWithSearchTerm.story = {
name: 'Compose: some groups, with search term',
};
export const ComposeSearchIsValidUsername = (): JSX.Element => (
2021-11-12 01:17:29 +00:00
<LeftPane
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.Compose,
composeContacts: [],
composeGroups: [],
isUsernamesEnabled: true,
uuidFetchState: {},
2021-11-12 01:17:29 +00:00
regionCode: 'US',
searchTerm: 'someone',
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2021-11-12 01:17:29 +00:00
2022-06-07 00:48:02 +00:00
ComposeSearchIsValidUsername.story = {
name: 'Compose: search is valid username',
};
export const ComposeSearchIsValidUsernameFetchingUsername = (): JSX.Element => (
2021-11-12 01:17:29 +00:00
<LeftPane
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.Compose,
composeContacts: [],
composeGroups: [],
isUsernamesEnabled: true,
uuidFetchState: {
'username:someone': true,
},
2021-11-12 01:17:29 +00:00
regionCode: 'US',
searchTerm: 'someone',
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2021-11-12 01:17:29 +00:00
2022-06-07 00:48:02 +00:00
ComposeSearchIsValidUsernameFetchingUsername.story = {
name: 'Compose: search is valid username, fetching username',
};
export const ComposeSearchIsValidUsernameButFlagIsNotEnabled =
(): JSX.Element => (
<LeftPane
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.Compose,
composeContacts: [],
composeGroups: [],
isUsernamesEnabled: false,
uuidFetchState: {},
regionCode: 'US',
searchTerm: 'someone',
},
})}
/>
);
2021-11-12 01:17:29 +00:00
2022-06-07 00:48:02 +00:00
ComposeSearchIsValidUsernameButFlagIsNotEnabled.story = {
name: 'Compose: search is valid username, but flag is not enabled',
};
export const ComposeSearchIsPartialPhoneNumber = (): JSX.Element => (
<LeftPane
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.Compose,
composeContacts: [],
composeGroups: [],
isUsernamesEnabled: false,
uuidFetchState: {},
regionCode: 'US',
searchTerm: '+1(212)555',
},
})}
/>
2022-06-07 00:48:02 +00:00
);
ComposeSearchIsPartialPhoneNumber.story = {
name: 'Compose: search is partial phone number',
};
2022-06-07 00:48:02 +00:00
export const ComposeSearchIsValidPhoneNumber = (): JSX.Element => (
<LeftPane
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.Compose,
composeContacts: [],
composeGroups: [],
isUsernamesEnabled: true,
uuidFetchState: {},
regionCode: 'US',
searchTerm: '2125555454',
},
})}
/>
2022-06-07 00:48:02 +00:00
);
ComposeSearchIsValidPhoneNumber.story = {
name: 'Compose: search is valid phone number',
};
2022-06-07 00:48:02 +00:00
export const ComposeSearchIsValidPhoneNumberFetchingPhoneNumber =
(): JSX.Element => (
<LeftPane
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.Compose,
composeContacts: [],
composeGroups: [],
isUsernamesEnabled: true,
uuidFetchState: {
'e164:+12125555454': true,
},
regionCode: 'US',
searchTerm: '(212)5555454',
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
ComposeSearchIsValidPhoneNumberFetchingPhoneNumber.story = {
name: 'Compose: search is valid phone number, fetching phone number',
};
export const ComposeAllKindsOfResultsNoSearchTerm = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.Compose,
composeContacts: defaultConversations,
composeGroups: defaultGroups,
2021-11-12 01:17:29 +00:00
isUsernamesEnabled: true,
uuidFetchState: {},
regionCode: 'US',
searchTerm: '',
},
})}
/>
2022-06-07 00:48:02 +00:00
);
ComposeAllKindsOfResultsNoSearchTerm.story = {
name: 'Compose: all kinds of results, no search term',
};
2022-06-07 00:48:02 +00:00
export const ComposeAllKindsOfResultsWithASearchTerm = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.Compose,
composeContacts: defaultConversations,
composeGroups: defaultGroups,
2021-11-12 01:17:29 +00:00
isUsernamesEnabled: true,
uuidFetchState: {},
regionCode: 'US',
2021-11-12 01:17:29 +00:00
searchTerm: 'someone',
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
ComposeAllKindsOfResultsWithASearchTerm.story = {
name: 'Compose: all kinds of results, with a search term',
};
2022-06-07 00:48:02 +00:00
export const CaptchaDialogRequired = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Inbox,
pinnedConversations,
conversations: defaultConversations,
archivedConversations: [],
isAboutToSearchInAConversation: false,
2022-01-27 22:12:26 +00:00
searchTerm: '',
},
challengeStatus: 'required',
})}
/>
2022-06-07 00:48:02 +00:00
);
CaptchaDialogRequired.story = {
name: 'Captcha dialog: required',
};
2022-06-07 00:48:02 +00:00
export const CaptchaDialogPending = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
mode: LeftPaneMode.Inbox,
pinnedConversations,
conversations: defaultConversations,
archivedConversations: [],
isAboutToSearchInAConversation: false,
2022-01-27 22:12:26 +00:00
searchTerm: '',
},
challengeStatus: 'pending',
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
CaptchaDialogPending.story = {
name: 'Captcha dialog: pending',
};
2022-01-11 20:02:46 +00:00
2022-06-07 00:48:02 +00:00
export const _CrashReportDialog = (): JSX.Element => (
2022-01-11 20:02:46 +00:00
<LeftPane
{...useProps({
modeSpecificProps: {
2022-01-27 22:12:26 +00:00
...defaultSearchProps,
2022-01-11 20:02:46 +00:00
mode: LeftPaneMode.Inbox,
pinnedConversations,
conversations: defaultConversations,
archivedConversations: [],
isAboutToSearchInAConversation: false,
2022-01-27 22:12:26 +00:00
searchTerm: '',
2022-01-11 20:02:46 +00:00
},
crashReportCount: 42,
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-01-11 20:02:46 +00:00
2022-06-07 00:48:02 +00:00
_CrashReportDialog.story = {
name: 'Crash report dialog',
};
2022-06-07 00:48:02 +00:00
export const ChooseGroupMembersPartialPhoneNumber = (): JSX.Element => (
<LeftPane
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.ChooseGroupMembers,
uuidFetchState: {},
candidateContacts: [],
isShowingRecommendedGroupSizeModal: false,
isShowingMaximumGroupSizeModal: false,
2022-06-17 00:38:28 +00:00
isUsernamesEnabled: true,
searchTerm: '+1(212) 555',
regionCode: 'US',
selectedContacts: [],
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
ChooseGroupMembersPartialPhoneNumber.story = {
name: 'Choose Group Members: Partial phone number',
};
export const ChooseGroupMembersValidPhoneNumber = (): JSX.Element => (
<LeftPane
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.ChooseGroupMembers,
uuidFetchState: {},
candidateContacts: [],
isShowingRecommendedGroupSizeModal: false,
isShowingMaximumGroupSizeModal: false,
2022-06-17 00:38:28 +00:00
isUsernamesEnabled: true,
searchTerm: '+1(212) 555 5454',
regionCode: 'US',
selectedContacts: [],
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
ChooseGroupMembersValidPhoneNumber.story = {
name: 'Choose Group Members: Valid phone number',
};
2022-06-17 00:38:28 +00:00
export const ChooseGroupMembersUsername = (): JSX.Element => (
<LeftPane
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.ChooseGroupMembers,
uuidFetchState: {},
candidateContacts: [],
isShowingRecommendedGroupSizeModal: false,
isShowingMaximumGroupSizeModal: false,
isUsernamesEnabled: true,
searchTerm: '@signal',
regionCode: 'US',
selectedContacts: [],
},
})}
/>
);
ChooseGroupMembersUsername.story = {
name: 'Choose Group Members: username',
};
2022-06-07 00:48:02 +00:00
export const GroupMetadataNoTimer = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.SetGroupMetadata,
groupAvatar: undefined,
groupName: 'Group 1',
groupExpireTimer: 0,
hasError: false,
isCreating: false,
2021-08-06 00:17:05 +00:00
isEditingAvatar: false,
selectedContacts: defaultConversations,
2021-08-06 00:17:05 +00:00
userAvatarData: [],
},
})}
/>
2022-06-07 00:48:02 +00:00
);
2022-06-07 00:48:02 +00:00
GroupMetadataNoTimer.story = {
name: 'Group Metadata: No Timer',
};
export const GroupMetadataRegularTimer = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.SetGroupMetadata,
groupAvatar: undefined,
groupName: 'Group 1',
groupExpireTimer: 24 * 3600,
hasError: false,
isCreating: false,
2021-08-06 00:17:05 +00:00
isEditingAvatar: false,
selectedContacts: defaultConversations,
2021-08-06 00:17:05 +00:00
userAvatarData: [],
},
})}
/>
2022-06-07 00:48:02 +00:00
);
GroupMetadataRegularTimer.story = {
name: 'Group Metadata: Regular Timer',
};
2022-06-07 00:48:02 +00:00
export const GroupMetadataCustomTimer = (): JSX.Element => (
<LeftPane
2021-11-02 23:01:13 +00:00
{...useProps({
modeSpecificProps: {
mode: LeftPaneMode.SetGroupMetadata,
groupAvatar: undefined,
groupName: 'Group 1',
groupExpireTimer: 7 * 3600,
hasError: false,
isCreating: false,
2021-08-06 00:17:05 +00:00
isEditingAvatar: false,
selectedContacts: defaultConversations,
2021-08-06 00:17:05 +00:00
userAvatarData: [],
},
})}
/>
2022-06-07 00:48:02 +00:00
);
GroupMetadataCustomTimer.story = {
name: 'Group Metadata: Custom Timer',
};
2022-01-27 22:12:26 +00:00
2022-06-07 00:48:02 +00:00
export const SearchingConversation = (): JSX.Element => (
2022-01-27 22:12:26 +00:00
<LeftPane
{...useProps({
modeSpecificProps: {
...defaultSearchProps,
mode: LeftPaneMode.Inbox,
pinnedConversations: [],
conversations: defaultConversations,
archivedConversations: [],
isAboutToSearchInAConversation: false,
searchConversation: getDefaultConversation(),
searchTerm: '',
},
})}
/>
2022-06-07 00:48:02 +00:00
);