diff --git a/src/client/components/ActivityTimeline.tsx b/src/client/components/ActivityTimeline.tsx index fe4a3cea..5f0b98a2 100644 --- a/src/client/components/ActivityTimeline.tsx +++ b/src/client/components/ActivityTimeline.tsx @@ -1,5 +1,5 @@ import { ComponentProps, useState, Fragment } from "react" -import { Accordion, Timeline, Icon, Span, Stack, Heading, Card, Box, Tabs } from '@chakra-ui/react'; +import { Accordion, Timeline, Icon, Span, Stack, Heading, Card, Box, Tabs, Skeleton, SkeletonCircle, SkeletonText } from '@chakra-ui/react'; import { ErrorLike, JsonPlayObject, PlayActivity } from "../../core/Atomic"; import { PlayData } from "./PlayData"; import { ErrorAlert } from "./ErrorAlert"; @@ -23,19 +23,48 @@ import { PlayApiCommonDetailed } from "../../core/Api"; export interface ActivityDetailProps { - activity: PlayApiCommonDetailed + activity?: PlayApiCommonDetailed collapsibleOpen?: boolean, componentType?: 'source' | 'client' } +const TimelineLoading = () => { + return ( + + + + + + + + + + + + + + + + + + + ); +} + export const ActivityTimeline = (props: ActivityDetailProps) => { + + if(props.activity === undefined) { + return ; + } + const { activity:{ play, input, seenAt } = {}, - collapsibleOpen + collapsibleOpen, + componentType } = props; const { data: { @@ -88,7 +117,7 @@ export const ActivityTimeline = (props: ActivityDetailProps) => { - Discovered new (Play) activity from {capitalize(source)} at {shortTodayAwareFormat(dayjs(seenAt))} + {componentType === 'source' ? 'Discovered' : 'Recieved'} new Play from {capitalize(source)} at {shortTodayAwareFormat(dayjs(seenAt))} } defaultOpen={collapsibleOpen} timeline diff --git a/src/stories/ActivityTimeline.stories.tsx b/src/stories/ActivityTimeline.stories.tsx index 891a3e7c..756f6dc6 100644 --- a/src/stories/ActivityTimeline.stories.tsx +++ b/src/stories/ActivityTimeline.stories.tsx @@ -10,9 +10,6 @@ import { generatePlayApiCommonDetailed } from "../core/tests/utils/apiFixtures.j import { generatePlayWithLifecycle, playWithLifecycleScrobble } from "../core/tests/utils/fixtures.js"; import { asJsonPlayObject } from '../core/PlayMarshalUtils.js'; -type PropsAndCustomArgs = React.ComponentProps & { - componentType: 'source' | 'client' -}; // More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export const meta = preview.meta({ title: 'Examples/ActivityTimline', @@ -25,8 +22,8 @@ const meta = preview.meta({ tags: ['autodocs'], // More on argTypes: https://storybook.js.org/docs/api/argtypes args: { - activity: generatePlayApiCommonDetailed(), - //componentType: 'source' + //activity: generatePlayApiCommonDetailed(), + componentType: 'source' as const }, argTypes: { componentType: { @@ -43,6 +40,9 @@ decorators: [ // Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#story-args }); +export const NotLoaded = meta.story({ +}); + // More on writing stories with args: https://storybook.js.org/docs/writing-stories/args export const ActivityTimelineStory = meta.story({ loaders: [ @@ -55,7 +55,6 @@ export const ActivityTimelineStory = meta.story({ } } ))); - return { activity: generatePlayApiCommonDetailed({ playOpts: [{play: scrobbleError}],