diff --git a/ts/components/Stories.stories.tsx b/ts/components/Stories.stories.tsx index 42f33522f..f7a7212c4 100644 --- a/ts/components/Stories.stories.tsx +++ b/ts/components/Stories.stories.tsx @@ -22,6 +22,7 @@ export default { component: Stories, argTypes: { deleteStoryForEveryone: { action: true }, + getPreferredBadge: { action: true }, hiddenStories: { defaultValue: [], }, diff --git a/ts/components/Stories.tsx b/ts/components/Stories.tsx index 89fdada2a..3dd6f6d0d 100644 --- a/ts/components/Stories.tsx +++ b/ts/components/Stories.tsx @@ -14,6 +14,7 @@ import type { StoryViewType, } from '../types/Stories'; import type { LocalizerType } from '../types/Util'; +import type { PreferredBadgeSelectorType } from '../state/selectors/badges'; import type { PropsType as SmartStoryCreatorPropsType } from '../state/smart/StoryCreator'; import type { ViewStoryActionCreatorType } from '../state/ducks/stories'; import { MyStories } from './MyStories'; @@ -23,6 +24,7 @@ import { getWidthFromPreferredWidth } from '../util/leftPaneWidth'; export type PropsType = { deleteStoryForEveryone: (story: StoryViewType) => unknown; + getPreferredBadge: PreferredBadgeSelectorType; hiddenStories: Array; i18n: LocalizerType; me: ConversationType; @@ -43,6 +45,7 @@ export type PropsType = { export const Stories = ({ deleteStoryForEveryone, + getPreferredBadge, hiddenStories, i18n, me, @@ -88,6 +91,7 @@ export const Stories = ({ /> ) : ( ; i18n: LocalizerType; me: ConversationType; @@ -75,6 +77,7 @@ export type PropsType = { }; export const StoriesPane = ({ + getPreferredBadge, hiddenStories, i18n, me, @@ -164,6 +167,7 @@ export const StoriesPane = ({ {renderedStories.map(story => ( ( & { conversationId: string; + getPreferredBadge: PreferredBadgeSelectorType; i18n: LocalizerType; onGoToConversation: (conversationId: string) => unknown; onHideStory: (conversationId: string) => unknown; @@ -26,8 +30,58 @@ export type PropsType = Pick & { ) => unknown; }; +function StoryListItemAvatar({ + acceptedMessageRequest, + avatarPath, + avatarStoryRing, + badges, + color, + getPreferredBadge, + i18n, + isMe, + name, + profileName, + sharedGroupNames, + title, +}: Pick< + ConversationType, + | 'acceptedMessageRequest' + | 'avatarPath' + | 'color' + | 'name' + | 'profileName' + | 'sharedGroupNames' + | 'title' +> & { + avatarStoryRing?: HasStories; + badges?: ConversationType['badges']; + getPreferredBadge: PreferredBadgeSelectorType; + i18n: LocalizerType; + isMe?: boolean; +}): JSX.Element { + return ( + + ); +} + export const StoryListItem = ({ conversationId, + getPreferredBadge, group, i18n, isHidden, @@ -48,17 +102,7 @@ export const StoryListItem = ({ timestamp, } = story; - const { - acceptedMessageRequest, - avatarPath, - color, - firstName, - isMe, - name, - profileName, - sharedGroupNames, - title, - } = sender; + const { firstName, title } = sender; let avatarStoryRing: HasStories | undefined; if (attachment) { @@ -111,20 +155,11 @@ export const StoryListItem = ({ strategy: 'absolute', }} > -
<> diff --git a/ts/state/smart/Stories.tsx b/ts/state/smart/Stories.tsx index 754fb409b..a10199657 100644 --- a/ts/state/smart/Stories.tsx +++ b/ts/state/smart/Stories.tsx @@ -11,6 +11,7 @@ import { SmartStoryCreator } from './StoryCreator'; import { Stories } from '../../components/Stories'; import { getMe } from '../selectors/conversations'; import { getIntl } from '../selectors/user'; +import { getPreferredBadgeSelector } from '../selectors/badges'; import { getPreferredLeftPaneWidth } from '../selectors/items'; import { getStories } from '../selectors/stories'; import { saveAttachment } from '../../util/saveAttachment'; @@ -39,6 +40,7 @@ export function SmartStories(): JSX.Element | null { const preferredWidthFromStorage = useSelector( getPreferredLeftPaneWidth ); + const getPreferredBadge = useSelector(getPreferredBadgeSelector); const { hiddenStories, myStories, stories } = useSelector(getStories); @@ -50,6 +52,7 @@ export function SmartStories(): JSX.Element | null { return (