UNPKG

react-native-story-widget

Version:

A React Native story widget component with carousel functionality

85 lines (84 loc) 2.29 kB
import type { ReactNode } from 'react'; export interface IStory { id: number; url: string; type: 'image' | 'video'; duration?: number; storyId: number; isSeen?: boolean; showOverlay?: boolean; link?: string; title?: string; username?: string; profile?: string; timestamp?: number; } export interface StoriesType { id: number; username: string; title: string; profile: string; stories: IStory[]; timestamp?: number; } export interface VideoProgressType { currentTime: number; seekableDuration: number; } export interface StoryContextType { currentStory: { index: number; progress: number; }; setCurrentStory: React.Dispatch<React.SetStateAction<{ index: number; progress: number; }>>; } export interface StoryGroupContextType { userStories: StoriesType[]; currentGroupIndex: number; setCurrentGroupIndex: (newIndex: number) => void; onPressCloseButton: () => void; isScreenFocused: boolean; onLastStoryOfGroupPlayed?: (isLastGroup: boolean) => void; } export interface StoryContextType { stories: IStory[]; storyHeader: StoriesType; currentStory: { index: number; progress: number; }; setCurrentStory: React.Dispatch<React.SetStateAction<{ index: number; progress: number; }>>; isStoryActive: boolean; initialStoryIndex: number; onStoryMarkedAsViewed?: (storyId: string) => void; isPaused: boolean; goToStory: (index: number) => void; handleLongPress: () => void; handlePressOut: () => void; } export interface StoryMediaControlContextType { onProgress: (index: number, progress: VideoProgressType) => void; onGoToStory: (index: number) => void; onLongPress: () => void; onPressOut: () => void; hiddenWarmUrl?: string; isPaused: boolean; } export interface StoryGroupProviderProps { children: ReactNode; userStories: StoriesType[]; currentGroupIndex: number; setCurrentGroupIndex: (newIndex: number) => void; onPressCloseButton: () => void; isScreenFocused: boolean; onLastStoryOfGroupPlayed?: (isLastGroup: boolean) => void; } export interface StoryMediaControlProviderProps { children: ReactNode; }