2022-03-04 21:14:52 +00:00
// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
2022-07-06 19:06:20 +00:00
import type { Meta , Story } from '@storybook/react' ;
2022-03-04 21:14:52 +00:00
import React from 'react' ;
import type { PropsType } from './StoryViewer' ;
import enMessages from '../../_locales/en/messages.json' ;
2022-07-29 00:15:20 +00:00
import { SendStatus } from '../messages/MessageSendState' ;
import { StoryViewer } from './StoryViewer' ;
2022-03-04 21:14:52 +00:00
import { fakeAttachment } from '../test-both/helpers/fakeAttachment' ;
2022-07-29 00:15:20 +00:00
import { getDefaultConversation } from '../test-both/helpers/getDefaultConversation' ;
2022-07-06 19:06:20 +00:00
import { getFakeStoryView } from '../test-both/helpers/getFakeStory' ;
2022-07-29 00:15:20 +00:00
import { setupI18n } from '../util/setupI18n' ;
2022-03-04 21:14:52 +00:00
const i18n = setupI18n ( 'en' , enMessages ) ;
2022-06-07 00:48:02 +00:00
export default {
title : 'Components/StoryViewer' ,
2022-07-06 19:06:20 +00:00
component : StoryViewer ,
argTypes : {
currentIndex : {
defaultvalue : 0 ,
} ,
getPreferredBadge : { action : true } ,
group : {
defaultValue : undefined ,
} ,
hasAllStoriesMuted : {
defaultValue : false ,
} ,
i18n : {
defaultValue : i18n ,
} ,
loadStoryReplies : { action : true } ,
markStoryRead : { action : true } ,
numStories : {
defaultValue : 1 ,
} ,
onGoToConversation : { action : true } ,
onHideStory : { action : true } ,
onReactToStory : { action : true } ,
onReplyToStory : { action : true } ,
onSetSkinTone : { action : true } ,
onTextTooLong : { action : true } ,
onUseEmoji : { action : true } ,
preferredReactionEmoji : {
defaultValue : [ '❤️' , '👍' , '👎' , '😂' , '😮' , '😢' ] ,
} ,
queueStoryDownload : { action : true } ,
renderEmojiPicker : { action : true } ,
skinTone : {
defaultValue : 0 ,
} ,
story : {
defaultValue : getFakeStoryView ( ) ,
} ,
toggleHasAllStoriesMuted : { action : true } ,
viewStory : { action : true } ,
} ,
} as Meta ;
const Template : Story < PropsType > = args = > < StoryViewer { ...args } / > ;
export const SomeonesStory = Template . bind ( { } ) ;
SomeonesStory . args = { } ;
2022-06-07 00:48:02 +00:00
SomeonesStory . story = {
name : "Someone's story" ,
} ;
2022-07-06 19:06:20 +00:00
export const WideStory = Template . bind ( { } ) ;
WideStory . args = {
story : getFakeStoryView ( '/fixtures/nathan-anderson-316188-unsplash.jpg' ) ,
} ;
2022-06-07 00:48:02 +00:00
WideStory . story = {
name : 'Wide story' ,
} ;
2022-03-04 21:14:52 +00:00
2022-07-06 19:06:20 +00:00
export const InAGroup = Template . bind ( { } ) ;
InAGroup . args = {
group : getDefaultConversation ( {
avatarPath : '/fixtures/kitten-4-112-112.jpg' ,
title : 'Family Group' ,
type : 'group' ,
} ) ,
} ;
2022-06-07 00:48:02 +00:00
InAGroup . story = {
name : 'In a group' ,
} ;
2022-07-06 19:06:20 +00:00
export const MultiStory = Template . bind ( { } ) ;
MultiStory . args = {
currentIndex : 2 ,
numStories : 7 ,
story : getFakeStoryView ( '/fixtures/snow.jpg' ) ,
2022-06-07 00:48:02 +00:00
} ;
MultiStory . story = {
name : 'Multi story' ,
} ;
2022-03-04 21:14:52 +00:00
2022-07-06 19:06:20 +00:00
export const Caption = Template . bind ( { } ) ;
Caption . args = {
story : {
. . . getFakeStoryView ( ) ,
attachment : fakeAttachment ( {
caption : 'This place looks lovely' ,
path : 'file.jpg' ,
url : '/fixtures/nathan-anderson-316188-unsplash.jpg' ,
} ) ,
} ,
} ;
2022-04-22 18:36:34 +00:00
2022-07-06 19:06:20 +00:00
export const LongCaption = Template . bind ( { } ) ;
LongCaption . args = {
story : {
. . . getFakeStoryView ( ) ,
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' ,
path : 'file.jpg' ,
url : '/fixtures/snow.jpg' ,
} ) ,
} ,
} ;
2022-07-25 18:55:44 +00:00
export const YourStory = Template . bind ( { } ) ;
{
const storyView = getFakeStoryView (
'/fixtures/nathan-anderson-316188-unsplash.jpg'
) ;
YourStory . args = {
story : {
. . . storyView ,
sender : {
. . . storyView . sender ,
isMe : true ,
} ,
2022-07-29 00:15:20 +00:00
sendState : [
{
recipient : getDefaultConversation ( ) ,
status : SendStatus.Viewed ,
} ,
{
recipient : getDefaultConversation ( ) ,
status : SendStatus.Delivered ,
} ,
{
recipient : getDefaultConversation ( ) ,
status : SendStatus.Pending ,
} ,
] ,
2022-07-25 18:55:44 +00:00
} ,
} ;
YourStory . storyName = 'Your story' ;
}