mirror of
https://wget.la/https://github.com/Wxw-Gu/WechatExplorer
synced 2026-08-18 03:57:02 +08:00
feat: 修改缓存加载逻辑
This commit is contained in:
@@ -263,7 +263,6 @@ function App(): React.ReactElement {
|
|||||||
const messageHistoryRef = React.useRef<Message[]>([])
|
const messageHistoryRef = React.useRef<Message[]>([])
|
||||||
const messagesRef = React.useRef<Message[]>([])
|
const messagesRef = React.useRef<Message[]>([])
|
||||||
const messagePrefetchRef = React.useRef<Promise<void> | null>(null)
|
const messagePrefetchRef = React.useRef<Promise<void> | null>(null)
|
||||||
const pendingLiveRefreshMd5Ref = React.useRef('')
|
|
||||||
messagesRef.current = messages
|
messagesRef.current = messages
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
if (!reportNotice) return
|
if (!reportNotice) return
|
||||||
@@ -923,17 +922,13 @@ function App(): React.ReactElement {
|
|||||||
storeGroupMemberMeta(contact, cachedPage.groupSnapshot)
|
storeGroupMemberMeta(contact, cachedPage.groupSnapshot)
|
||||||
}
|
}
|
||||||
messageHistoryRef.current = cachedMsgs
|
messageHistoryRef.current = cachedMsgs
|
||||||
pendingLiveRefreshMd5Ref.current = cachedPage.hit ? '' : contact.md5
|
|
||||||
setMessages(
|
setMessages(
|
||||||
applyGroupMemberMeta(
|
applyGroupMemberMeta(
|
||||||
contact,
|
contact,
|
||||||
mergeSyntheticMessages(contact, cachedMsgs.slice(-INITIAL_MESSAGE_COUNT))
|
mergeSyntheticMessages(contact, cachedMsgs.slice(-INITIAL_MESSAGE_COUNT))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
const needsLivePage =
|
const needsLivePage = forceLive || isDatabaseConnected
|
||||||
forceLive ||
|
|
||||||
(isDatabaseConnected &&
|
|
||||||
(!cachedPage.hit || cachedMsgs.length < MESSAGE_PREFETCH_COUNT))
|
|
||||||
if (!needsLivePage) {
|
if (!needsLivePage) {
|
||||||
setIsMessagesLoading(false)
|
setIsMessagesLoading(false)
|
||||||
if (contact.type === 'group' && cachedMsgs.length > 0 && !cachedPage.groupSnapshot) {
|
if (contact.type === 'group' && cachedMsgs.length > 0 && !cachedPage.groupSnapshot) {
|
||||||
@@ -959,7 +954,6 @@ function App(): React.ReactElement {
|
|||||||
})
|
})
|
||||||
if (selectedContactMd5Ref.current !== contact.md5) return
|
if (selectedContactMd5Ref.current !== contact.md5) return
|
||||||
messageHistoryRef.current = msgs
|
messageHistoryRef.current = msgs
|
||||||
pendingLiveRefreshMd5Ref.current = ''
|
|
||||||
const visibleMessages = applyGroupMemberMeta(
|
const visibleMessages = applyGroupMemberMeta(
|
||||||
contact,
|
contact,
|
||||||
mergeSyntheticMessages(contact, msgs.slice(-INITIAL_MESSAGE_COUNT))
|
mergeSyntheticMessages(contact, msgs.slice(-INITIAL_MESSAGE_COUNT))
|
||||||
@@ -992,10 +986,6 @@ function App(): React.ReactElement {
|
|||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
if (!isDatabaseConnected || !selectedContact) return
|
if (!isDatabaseConnected || !selectedContact) return
|
||||||
const needsPendingRefresh = pendingLiveRefreshMd5Ref.current === selectedContact.md5
|
|
||||||
if (messages.length > 0 && !needsPendingRefresh) return
|
|
||||||
// The first live page uses async native cursors, so a cache miss can be filled
|
|
||||||
// without blocking the Electron main thread.
|
|
||||||
void handleSelectContact(selectedContact)
|
void handleSelectContact(selectedContact)
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
}, [isDatabaseConnected])
|
}, [isDatabaseConnected])
|
||||||
|
|||||||
Reference in New Issue
Block a user