+ {storiesToView &&
+ renderStoryViewer({
+ conversationId: storiesToView.conversationId,
+ onClose: () => setStoriesToView(undefined),
+ onNextUserStories: () => {
+ const storyIndex = stories.findIndex(
+ x => x.conversationId === storiesToView.conversationId
+ );
+ if (storyIndex >= stories.length - 1) {
+ setStoriesToView(undefined);
+ return;
+ }
+ const nextStory = stories[storyIndex + 1];
+ setStoriesToView({
+ conversationId: nextStory.conversationId,
+ stories: nextStory.stories,
+ });
+ },
+ onPrevUserStories: () => {
+ const storyIndex = stories.findIndex(
+ x => x.conversationId === storiesToView.conversationId
+ );
+ if (storyIndex === 0) {
+ setStoriesToView(undefined);
+ return;
+ }
+ const prevStory = stories[storyIndex - 1];
+ setStoriesToView({
+ conversationId: prevStory.conversationId,
+ stories: prevStory.stories,
+ });
+ },
+ stories: storiesToView.stories,
+ })}
+
+ {
+ const storyIndex = stories.findIndex(
+ x => x.conversationId === conversationId
+ );
+ const foundStory = stories[storyIndex];
+
+ if (foundStory) {
+ setStoriesToView({
+ conversationId,
+ stories: foundStory.stories,
+ });
+ }
+ }}
+ openConversationInternal={openConversationInternal}
+ stories={stories}
+ toggleHideStories={toggleHideStories}
+ />
+
+
+
+ {i18n('Stories__placeholder--text')}
+
+
+ );
+};
diff --git a/ts/components/StoriesPane.tsx b/ts/components/StoriesPane.tsx
new file mode 100644
index 000000000..94b6aa5f8
--- /dev/null
+++ b/ts/components/StoriesPane.tsx
@@ -0,0 +1,124 @@
+// Copyright 2022 Signal Messenger, LLC
+// SPDX-License-Identifier: AGPL-3.0-only
+
+import type { FuseOptions } from 'fuse.js';
+import Fuse from 'fuse.js';
+import React, { useEffect, useState } from 'react';
+import classNames from 'classnames';
+import type { ConversationStoryType, StoryViewType } from './StoryListItem';
+import type { LocalizerType } from '../types/Util';
+import { SearchInput } from './SearchInput';
+import { StoryListItem } from './StoryListItem';
+
+const FUSE_OPTIONS: FuseOptions