Profile: Prevent stories panel from making unnecessary requests (#5557)
This commit is contained in:
parent
673c2aee5a
commit
bb5ec799a1
@ -422,6 +422,7 @@ async function fetchCommonStoriesRequest({ method, peerId }: {
|
||||
result.stories.forEach((story) => addStoryToLocalDb(story, peerId));
|
||||
|
||||
return {
|
||||
count: result.count,
|
||||
stories,
|
||||
pinnedIds: result.pinnedToTop,
|
||||
};
|
||||
|
||||
@ -363,8 +363,8 @@ const Profile: FC<OwnProps & StateProps> = ({
|
||||
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]);
|
||||
|
||||
@ -334,8 +334,8 @@ function Transition({
|
||||
}
|
||||
|
||||
const container = containerRef.current!;
|
||||
const activeElement = container.querySelector<HTMLDivElement>(`.${CLASSES.active}`)
|
||||
|| container.querySelector<HTMLDivElement>(`.${CLASSES.from}`);
|
||||
const activeElement = container.querySelector<HTMLDivElement>(`:scope > .${CLASSES.active}`)
|
||||
|| container.querySelector<HTMLDivElement>(`:scope > .${CLASSES.from}`);
|
||||
if (!activeElement) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -298,7 +298,7 @@ addActionHandler('loadPeerStories', async (global, actions, payload): Promise<vo
|
||||
addActionHandler('loadPeerProfileStories', async (global, actions, payload): Promise<void> => {
|
||||
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<void> => {
|
||||
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);
|
||||
});
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user