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

175 lines
5 KiB
TypeScript
Raw Normal View History

2022-03-04 21:14:52 +00:00
// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import React from 'react';
import { storiesOf } from '@storybook/react';
import { action } from '@storybook/addon-actions';
import type { PropsType } from './StoryViewer';
import { StoryViewer } from './StoryViewer';
import enMessages from '../../_locales/en/messages.json';
import { setupI18n } from '../util/setupI18n';
import { getDefaultConversation } from '../test-both/helpers/getDefaultConversation';
import { fakeAttachment } from '../test-both/helpers/fakeAttachment';
const i18n = setupI18n('en', enMessages);
const story = storiesOf('Components/StoryViewer', module);
function getDefaultProps(): PropsType {
2022-04-15 00:08:46 +00:00
const sender = getDefaultConversation();
2022-03-04 21:14:52 +00:00
return {
2022-04-15 00:08:46 +00:00
conversationId: sender.id,
2022-03-04 21:14:52 +00:00
getPreferredBadge: () => undefined,
group: undefined,
2022-05-06 19:02:44 +00:00
hasAllStoriesMuted: false,
2022-03-04 21:14:52 +00:00
i18n,
2022-04-15 00:08:46 +00:00
loadStoryReplies: action('loadStoryReplies'),
2022-03-04 21:14:52 +00:00
markStoryRead: action('markStoryRead'),
onClose: action('onClose'),
onGoToConversation: action('onGoToConversation'),
onHideStory: action('onHideStory'),
2022-03-04 21:14:52 +00:00
onNextUserStories: action('onNextUserStories'),
onPrevUserStories: action('onPrevUserStories'),
onReactToStory: action('onReactToStory'),
onReplyToStory: action('onReplyToStory'),
onSetSkinTone: action('onSetSkinTone'),
onTextTooLong: action('onTextTooLong'),
onUseEmoji: action('onUseEmoji'),
preferredReactionEmoji: ['❤️', '👍', '👎', '😂', '😮', '😢'],
2022-03-29 01:10:08 +00:00
queueStoryDownload: action('queueStoryDownload'),
2022-03-04 21:14:52 +00:00
renderEmojiPicker: () => <div />,
stories: [
{
attachment: fakeAttachment({
2022-05-03 23:50:44 +00:00
path: 'snow.jpg',
2022-03-04 21:14:52 +00:00
url: '/fixtures/snow.jpg',
}),
2022-05-04 18:45:32 +00:00
canReply: true,
2022-03-04 21:14:52 +00:00
messageId: '123',
2022-04-15 00:08:46 +00:00
sender,
2022-03-04 21:14:52 +00:00
timestamp: Date.now(),
},
],
2022-05-06 19:02:44 +00:00
toggleHasAllStoriesMuted: action('toggleHasAllStoriesMuted'),
2022-03-04 21:14:52 +00:00
};
}
story.add("Someone's story", () => <StoryViewer {...getDefaultProps()} />);
story.add('Wide story', () => (
<StoryViewer
{...getDefaultProps()}
stories={[
{
attachment: fakeAttachment({
2022-05-03 23:50:44 +00:00
path: 'file.jpg',
2022-03-04 21:14:52 +00:00
url: '/fixtures/nathan-anderson-316188-unsplash.jpg',
}),
2022-05-04 18:45:32 +00:00
canReply: true,
2022-03-04 21:14:52 +00:00
messageId: '123',
sender: getDefaultConversation(),
timestamp: Date.now(),
},
]}
/>
));
story.add('In a group', () => (
<StoryViewer
{...getDefaultProps()}
group={getDefaultConversation({
avatarPath: '/fixtures/kitten-4-112-112.jpg',
title: 'Family Group',
type: 'group',
})}
/>
));
story.add('Multi story', () => {
const sender = getDefaultConversation();
return (
<StoryViewer
{...getDefaultProps()}
stories={[
{
attachment: fakeAttachment({
2022-05-03 23:50:44 +00:00
path: 'snow.jpg',
2022-03-04 21:14:52 +00:00
url: '/fixtures/snow.jpg',
}),
messageId: '123',
sender,
timestamp: Date.now(),
},
{
attachment: fakeAttachment({
2022-05-03 23:50:44 +00:00
path: 'file.jpg',
2022-03-04 21:14:52 +00:00
url: '/fixtures/nathan-anderson-316188-unsplash.jpg',
}),
2022-05-04 18:45:32 +00:00
canReply: true,
2022-03-04 21:14:52 +00:00
messageId: '456',
sender,
timestamp: Date.now() - 3600,
},
]}
/>
);
});
2022-04-22 18:36:34 +00:00
story.add('Caption', () => (
<StoryViewer
{...getDefaultProps()}
group={getDefaultConversation({
avatarPath: '/fixtures/kitten-4-112-112.jpg',
title: 'Broskis',
type: 'group',
})}
replyState={{
messageId: '123',
replies: [
{
...getDefaultConversation(),
body: 'Cool',
id: 'abc',
timestamp: Date.now(),
},
],
}}
2022-04-22 18:36:34 +00:00
stories={[
{
attachment: fakeAttachment({
caption: 'This place looks lovely',
2022-05-03 23:50:44 +00:00
path: 'file.jpg',
2022-04-22 18:36:34 +00:00
url: '/fixtures/nathan-anderson-316188-unsplash.jpg',
}),
2022-05-04 18:45:32 +00:00
canReply: true,
2022-04-22 18:36:34 +00:00
messageId: '123',
sender: getDefaultConversation(),
timestamp: Date.now(),
},
]}
/>
));
story.add('Long Caption', () => (
<StoryViewer
{...getDefaultProps()}
2022-05-06 19:02:44 +00:00
hasAllStoriesMuted
2022-04-22 18:36:34 +00:00
stories={[
{
attachment: fakeAttachment({
caption:
'Snowycle, snowycle, snowycle\nI want to ride my snowycle, snowycle, snowycle\nI want to ride my snowycle\nI want to ride my snow\nI want to ride my snowycle\nI want to ride it where I like\nSnowycle, snowycle, snowycle\nI want to ride my snowycle, snowycle, snowycle\nI want to ride my snowycle\nI want to ride my snow\nI want to ride my snowycle\nI want to ride it where I like\nSnowycle, snowycle, snowycle\nI want to ride my snowycle, snowycle, snowycle\nI want to ride my snowycle\nI want to ride my snow\nI want to ride my snowycle\nI want to ride it where I like',
2022-05-03 23:50:44 +00:00
path: 'file.jpg',
2022-04-22 18:36:34 +00:00
url: '/fixtures/snow.jpg',
}),
2022-05-04 18:45:32 +00:00
canReply: true,
2022-04-22 18:36:34 +00:00
messageId: '123',
sender: getDefaultConversation(),
timestamp: Date.now(),
},
]}
/>
));