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' ;
2022-08-22 17:44:23 +00:00
import { StoryViewModeType } from '../types/Stories' ;
2022-07-29 00:15:20 +00:00
import { StoryViewer } from './StoryViewer' ;
2022-07-29 19:27:02 +00:00
import { VIDEO_MP4 } from '../types/MIME' ;
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 : {
2022-10-25 22:18:42 +00:00
control : 'boolean' ,
2022-07-06 19:06:20 +00:00
defaultValue : false ,
} ,
2022-10-25 22:18:42 +00:00
hasViewReceiptSetting : {
control : 'boolean' ,
2022-08-31 16:11:14 +00:00
defaultValue : true ,
} ,
2022-07-06 19:06:20 +00:00
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 } ,
2022-07-29 19:27:02 +00:00
showToast : { action : true } ,
2022-07-06 19:06:20 +00:00
skinTone : {
defaultValue : 0 ,
} ,
story : {
defaultValue : getFakeStoryView ( ) ,
} ,
2022-08-22 17:44:23 +00:00
storyViewMode : {
defaultValue : StoryViewModeType.All ,
} ,
2022-07-06 19:06:20 +00:00
toggleHasAllStoriesMuted : { action : true } ,
viewStory : { action : true } ,
} ,
2022-10-13 21:40:43 +00:00
args : {
currentIndex : 0 ,
} ,
2022-07-06 19:06:20 +00:00
} 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 ,
2022-07-29 19:27:02 +00:00
story : {
. . . getFakeStoryView ( ) ,
attachment : fakeAttachment ( {
contentType : VIDEO_MP4 ,
fileName : 'pixabay-Soap-Bubble-7141.mp4' ,
url : '/fixtures/kitten-4-112-112.jpg' ,
screenshotPath : '/fixtures/kitten-4-112-112.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-10-25 17:15:18 +00:00
export const EmojiCaption = Template . bind ( { } ) ;
EmojiCaption . args = {
story : {
. . . getFakeStoryView ( ) ,
attachment : fakeAttachment ( {
caption : 'WOOOOOOOOW 🥰' ,
path : 'file.jpg' ,
url : '/fixtures/nathan-anderson-316188-unsplash.jpg' ,
} ) ,
} ,
} ;
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 = {
2022-10-03 22:22:01 +00:00
distributionList : { id : '123' , name : 'Close Friends' } ,
2022-07-25 18:55:44 +00:00
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' ;
}
2022-08-31 16:11:14 +00:00
export const ReadReceiptsOff = Template . bind ( { } ) ;
{
const storyView = getFakeStoryView (
'/fixtures/nathan-anderson-316188-unsplash.jpg'
) ;
ReadReceiptsOff . args = {
2022-10-25 22:18:42 +00:00
hasViewReceiptSetting : false ,
2022-08-31 16:11:14 +00:00
story : {
. . . storyView ,
sender : {
. . . storyView . sender ,
isMe : true ,
} ,
sendState : [
{
recipient : getDefaultConversation ( ) ,
status : SendStatus.Viewed ,
} ,
{
recipient : getDefaultConversation ( ) ,
status : SendStatus.Delivered ,
} ,
{
recipient : getDefaultConversation ( ) ,
status : SendStatus.Pending ,
} ,
] ,
} ,
} ;
}
ReadReceiptsOff . storyName = 'Read receipts turned off' ;