diff --git a/src/api/gramjs/methods/stories.ts b/src/api/gramjs/methods/stories.ts index a6ca5d367..04fb53286 100644 --- a/src/api/gramjs/methods/stories.ts +++ b/src/api/gramjs/methods/stories.ts @@ -422,6 +422,7 @@ async function fetchCommonStoriesRequest({ method, peerId }: { result.stories.forEach((story) => addStoryToLocalDb(story, peerId)); return { + count: result.count, stories, pinnedIds: result.pinnedToTop, }; diff --git a/src/components/right/Profile.tsx b/src/components/right/Profile.tsx index b1eeb7fde..5669b4556 100644 --- a/src/components/right/Profile.tsx +++ b/src/components/right/Profile.tsx @@ -363,8 +363,8 @@ const Profile: FC = ({ loadPeerProfileStories({ peerId: chatId, offsetId }); }, [chatId]); const handleLoadStoriesArchive = useCallback(({ offsetId }: { offsetId: number }) => { - loadStoriesArchive({ peerId: currentUserId!, offsetId }); - }, [currentUserId]); + loadStoriesArchive({ peerId: chatId, offsetId }); + }, [chatId]); const handleLoadGifts = useCallback(() => { loadPeerSavedGifts({ peerId: chatId }); }, [chatId]); diff --git a/src/components/ui/Transition.tsx b/src/components/ui/Transition.tsx index d7f791aa2..8562e5999 100644 --- a/src/components/ui/Transition.tsx +++ b/src/components/ui/Transition.tsx @@ -334,8 +334,8 @@ function Transition({ } const container = containerRef.current!; - const activeElement = container.querySelector(`.${CLASSES.active}`) - || container.querySelector(`.${CLASSES.from}`); + const activeElement = container.querySelector(`:scope > .${CLASSES.active}`) + || container.querySelector(`:scope > .${CLASSES.from}`); if (!activeElement) { return; } diff --git a/src/global/actions/api/stories.ts b/src/global/actions/api/stories.ts index 0c1176963..4d8eac8d3 100644 --- a/src/global/actions/api/stories.ts +++ b/src/global/actions/api/stories.ts @@ -298,7 +298,7 @@ addActionHandler('loadPeerStories', async (global, actions, payload): Promise => { const { peerId, offsetId } = payload; const peer = selectPeer(global, peerId); - const peerStories = selectPeerStories(global, peerId); + let peerStories = selectPeerStories(global, peerId); if (!peer || peerStories?.isFullyLoaded) { return; } @@ -309,18 +309,20 @@ addActionHandler('loadPeerProfileStories', async (global, actions, payload): Pro } global = getGlobal(); - if (Object.values(result.stories).length === 0) { + global = addStoriesForPeer(global, peerId, result.stories, result.pinnedIds); + peerStories = selectPeerStories(global, peerId); + if (Object.values(result.stories).length === 0 + || (peerStories?.profileIds?.length && peerStories?.profileIds.length >= result.count)) { global = updatePeerStoriesFullyLoaded(global, peerId, true); } - global = addStoriesForPeer(global, peerId, result.stories, result.pinnedIds); setGlobal(global); }); addActionHandler('loadStoriesArchive', async (global, actions, payload): Promise => { const { peerId, offsetId } = payload; const peer = selectPeer(global, peerId); - const peerStories = selectPeerStories(global, peerId); + let peerStories = selectPeerStories(global, peerId); if (!peer || peerStories?.isArchiveFullyLoaded) return; const result = await callApi('fetchStoriesArchive', { peer, offsetId }); @@ -329,10 +331,13 @@ addActionHandler('loadStoriesArchive', async (global, actions, payload): Promise } global = getGlobal(); - if (Object.values(result.stories).length === 0) { + global = addStoriesForPeer(global, peerId, result.stories, undefined, true); + + peerStories = selectPeerStories(global, peerId); + if (Object.values(result.stories).length === 0 + || (peerStories?.archiveIds?.length && peerStories?.archiveIds.length >= result.count)) { global = updatePeerStoriesFullyLoaded(global, peerId, true, true); } - global = addStoriesForPeer(global, peerId, result.stories, undefined, true); setGlobal(global); });