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

173 lines
4.5 KiB
TypeScript
Raw Normal View History

2021-05-07 22:21:10 +00:00
// Copyright 2020-2021 Signal Messenger, LLC
2020-10-30 20:34:04 +00:00
// SPDX-License-Identifier: AGPL-3.0-only
import * as React from 'react';
2020-09-12 00:46:52 +00:00
import { action } from '@storybook/addon-actions';
import { SafetyNumberChangeDialog } from './SafetyNumberChangeDialog';
2021-05-07 22:21:10 +00:00
import { getDefaultConversation } from '../test-both/helpers/getDefaultConversation';
2021-09-18 00:30:08 +00:00
import { setupI18n } from '../util/setupI18n';
import enMessages from '../../_locales/en/messages.json';
import { StorybookThemeContext } from '../../.storybook/StorybookThemeContext';
import { getFakeBadge } from '../test-both/helpers/getFakeBadge';
const i18n = setupI18n('en', enMessages);
2021-05-07 22:21:10 +00:00
const contactWithAllData = getDefaultConversation({
id: 'abc',
avatarPath: undefined,
2020-07-24 01:35:32 +00:00
profileName: '-*Smartest Dude*-',
title: 'Rick Sanchez',
name: 'Rick Sanchez',
2020-07-24 01:35:32 +00:00
phoneNumber: '(305) 123-4567',
2021-05-07 22:21:10 +00:00
});
2020-07-24 01:35:32 +00:00
2021-05-07 22:21:10 +00:00
const contactWithJustProfile = getDefaultConversation({
id: 'def',
2020-07-24 01:35:32 +00:00
avatarPath: undefined,
title: '-*Smartest Dude*-',
2020-07-24 01:35:32 +00:00
profileName: '-*Smartest Dude*-',
name: undefined,
phoneNumber: '(305) 123-4567',
2021-05-07 22:21:10 +00:00
});
2020-07-24 01:35:32 +00:00
2021-05-07 22:21:10 +00:00
const contactWithJustNumber = getDefaultConversation({
id: 'xyz',
2020-07-24 01:35:32 +00:00
avatarPath: undefined,
profileName: undefined,
name: undefined,
title: '(305) 123-4567',
2020-07-24 01:35:32 +00:00
phoneNumber: '(305) 123-4567',
2021-05-07 22:21:10 +00:00
});
2020-07-24 01:35:32 +00:00
2021-05-07 22:21:10 +00:00
const contactWithNothing = getDefaultConversation({
2020-07-24 01:35:32 +00:00
id: 'some-guid',
avatarPath: undefined,
profileName: undefined,
name: undefined,
phoneNumber: undefined,
title: 'Unknown contact',
2021-05-07 22:21:10 +00:00
});
const useTheme = () => React.useContext(StorybookThemeContext);
2022-06-07 00:48:02 +00:00
export default {
title: 'Components/SafetyNumberChangeDialog',
};
export const SingleContactDialog = (): JSX.Element => {
const theme = useTheme();
return (
<SafetyNumberChangeDialog
contacts={[contactWithAllData]}
getPreferredBadge={() => undefined}
i18n={i18n}
onCancel={action('cancel')}
onConfirm={action('confirm')}
renderSafetyNumber={() => {
action('renderSafetyNumber');
return <div>This is a mock Safety Number View</div>;
}}
theme={theme}
/>
);
};
export const DifferentConfirmationText = (): JSX.Element => {
const theme = useTheme();
return (
<SafetyNumberChangeDialog
confirmText="You are awesome"
contacts={[contactWithAllData]}
getPreferredBadge={() => undefined}
i18n={i18n}
onCancel={action('cancel')}
onConfirm={action('confirm')}
renderSafetyNumber={() => {
action('renderSafetyNumber');
return <div>This is a mock Safety Number View</div>;
}}
theme={theme}
/>
);
};
export const MultiContactDialog = (): JSX.Element => {
const theme = useTheme();
return (
<SafetyNumberChangeDialog
contacts={[
contactWithAllData,
contactWithJustProfile,
contactWithJustNumber,
contactWithNothing,
]}
getPreferredBadge={() => undefined}
i18n={i18n}
onCancel={action('cancel')}
onConfirm={action('confirm')}
renderSafetyNumber={() => {
action('renderSafetyNumber');
return <div>This is a mock Safety Number View</div>;
}}
theme={theme}
/>
);
};
export const MultipleContactsAllWithBadges = (): JSX.Element => {
const theme = useTheme();
return (
<SafetyNumberChangeDialog
contacts={[
contactWithAllData,
contactWithJustProfile,
contactWithJustNumber,
contactWithNothing,
]}
getPreferredBadge={() => getFakeBadge()}
i18n={i18n}
onCancel={action('cancel')}
onConfirm={action('confirm')}
renderSafetyNumber={() => {
action('renderSafetyNumber');
return <div>This is a mock Safety Number View</div>;
}}
theme={theme}
/>
);
};
MultipleContactsAllWithBadges.story = {
name: 'Multiple contacts, all with badges',
};
export const ScrollDialog = (): JSX.Element => {
const theme = useTheme();
return (
<SafetyNumberChangeDialog
contacts={[
contactWithAllData,
contactWithJustProfile,
contactWithJustNumber,
contactWithNothing,
contactWithAllData,
contactWithAllData,
contactWithAllData,
contactWithAllData,
contactWithAllData,
contactWithAllData,
]}
getPreferredBadge={() => undefined}
i18n={i18n}
onCancel={action('cancel')}
onConfirm={action('confirm')}
renderSafetyNumber={() => {
action('renderSafetyNumber');
return <div>This is a mock Safety Number View</div>;
}}
theme={theme}
/>
);
};