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));
|
result.stories.forEach((story) => addStoryToLocalDb(story, peerId));
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
count: result.count,
|
||||||
stories,
|
stories,
|
||||||
pinnedIds: result.pinnedToTop,
|
pinnedIds: result.pinnedToTop,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -363,8 +363,8 @@ const Profile: FC<OwnProps & StateProps> = ({
|
|||||||
loadPeerProfileStories({ peerId: chatId, offsetId });
|
loadPeerProfileStories({ peerId: chatId, offsetId });
|
||||||
}, [chatId]);
|
}, [chatId]);
|
||||||
const handleLoadStoriesArchive = useCallback(({ offsetId }: { offsetId: number }) => {
|
const handleLoadStoriesArchive = useCallback(({ offsetId }: { offsetId: number }) => {
|
||||||
loadStoriesArchive({ peerId: currentUserId!, offsetId });
|
loadStoriesArchive({ peerId: chatId, offsetId });
|
||||||
}, [currentUserId]);
|
}, [chatId]);
|
||||||
const handleLoadGifts = useCallback(() => {
|
const handleLoadGifts = useCallback(() => {
|
||||||
loadPeerSavedGifts({ peerId: chatId });
|
loadPeerSavedGifts({ peerId: chatId });
|
||||||
}, [chatId]);
|
}, [chatId]);
|
||||||
|
|||||||
@ -334,8 +334,8 @@ function Transition({
|
|||||||
}
|
}
|
||||||
|
|
||||||
const container = containerRef.current!;
|
const container = containerRef.current!;
|
||||||
const activeElement = container.querySelector<HTMLDivElement>(`.${CLASSES.active}`)
|
const activeElement = container.querySelector<HTMLDivElement>(`:scope > .${CLASSES.active}`)
|
||||||
|| container.querySelector<HTMLDivElement>(`.${CLASSES.from}`);
|
|| container.querySelector<HTMLDivElement>(`:scope > .${CLASSES.from}`);
|
||||||
if (!activeElement) {
|
if (!activeElement) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -298,7 +298,7 @@ addActionHandler('loadPeerStories', async (global, actions, payload): Promise<vo
|
|||||||
addActionHandler('loadPeerProfileStories', async (global, actions, payload): Promise<void> => {
|
addActionHandler('loadPeerProfileStories', async (global, actions, payload): Promise<void> => {
|
||||||
const { peerId, offsetId } = payload;
|
const { peerId, offsetId } = payload;
|
||||||
const peer = selectPeer(global, peerId);
|
const peer = selectPeer(global, peerId);
|
||||||
const peerStories = selectPeerStories(global, peerId);
|
let peerStories = selectPeerStories(global, peerId);
|
||||||
if (!peer || peerStories?.isFullyLoaded) {
|
if (!peer || peerStories?.isFullyLoaded) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -309,18 +309,20 @@ addActionHandler('loadPeerProfileStories', async (global, actions, payload): Pro
|
|||||||
}
|
}
|
||||||
|
|
||||||
global = getGlobal();
|
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 = updatePeerStoriesFullyLoaded(global, peerId, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
global = addStoriesForPeer(global, peerId, result.stories, result.pinnedIds);
|
|
||||||
setGlobal(global);
|
setGlobal(global);
|
||||||
});
|
});
|
||||||
|
|
||||||
addActionHandler('loadStoriesArchive', async (global, actions, payload): Promise<void> => {
|
addActionHandler('loadStoriesArchive', async (global, actions, payload): Promise<void> => {
|
||||||
const { peerId, offsetId } = payload;
|
const { peerId, offsetId } = payload;
|
||||||
const peer = selectPeer(global, peerId);
|
const peer = selectPeer(global, peerId);
|
||||||
const peerStories = selectPeerStories(global, peerId);
|
let peerStories = selectPeerStories(global, peerId);
|
||||||
if (!peer || peerStories?.isArchiveFullyLoaded) return;
|
if (!peer || peerStories?.isArchiveFullyLoaded) return;
|
||||||
|
|
||||||
const result = await callApi('fetchStoriesArchive', { peer, offsetId });
|
const result = await callApi('fetchStoriesArchive', { peer, offsetId });
|
||||||
@ -329,10 +331,13 @@ addActionHandler('loadStoriesArchive', async (global, actions, payload): Promise
|
|||||||
}
|
}
|
||||||
|
|
||||||
global = getGlobal();
|
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 = updatePeerStoriesFullyLoaded(global, peerId, true, true);
|
||||||
}
|
}
|
||||||
global = addStoriesForPeer(global, peerId, result.stories, undefined, true);
|
|
||||||
setGlobal(global);
|
setGlobal(global);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user