Skip to content

Commit

Permalink
修复了下载界面偶尔同步失效的问题
Browse files Browse the repository at this point in the history
  • Loading branch information
DriverLin committed Sep 6, 2022
1 parent 99dd640 commit 842574b
Showing 1 changed file with 15 additions and 35 deletions.
50 changes: 15 additions & 35 deletions src/components/ui/MainPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ import { autorun, toJS } from 'mobx';
import FolderZipIcon from '@mui/icons-material/FolderZip';
// import { useWorker, WORKER_STATUS } from "@koale/useworker";

const listUnion = (oldState, newState) => {
const listUnion = (oldState, newState) => {//合并列表 新的元素按照新列表的顺序添加到最前方
const oldSet = new Set(oldState)
const newSet = new Set(newState)
const fileted = oldState.filter(item => newSet.has(item))
Expand Down Expand Up @@ -99,38 +99,26 @@ function MainPage_inner(props) {
download,
card_info
) => {
for (let gid_key of download_key_set) {
if (!card_info[gid_key]) {
console.log("download与card_info数据未同步 跳过", gid_key)
return
}
}
if (!forceUpdate && download_key_set.size === downloadCount.current) return

if (!forceUpdate) {
if (download_key_set.size === downloadCount.current) {//长度没有改变 即不是删除或者添加 忽略
console.log("长度没有改变 跳过")
return
}
}
downloadCount.current = download_key_set.size
const indexedDownload = []
Object.values(download).forEach(item => {
indexedDownload[item.index] = item.gid
indexedDownload[item.index] = item.gid// {gid,index,state,success} index不连续
})
const newCardList = indexedDownload.filter(item => item !== undefined).reverse()
const newCardList = indexedDownload.filter(
gid => gid !== undefined && card_info[gid] !== undefined
).reverse() //去除空 去除没有card_info的
downloadCount.current = newCardList.length

if (forceUpdate) {
console.log("强制更新", newCardList.length)
setCardInfoMap(toJS(card_info))
setCardGidList(newCardList)
} else {
setCardInfoMap(toJS(card_info))
console.log("更新", cardGidList.length, newCardList.length)
setCardGidList((old) => listUnion(old, newCardList))
}
}



const requestData = async () => {
if (props.downloadPage) {
syncDBToHooks(
Expand All @@ -139,10 +127,6 @@ function MainPage_inner(props) {
syncedDB.download,
syncedDB.card_info
)
// console.log(syncedDB.keys.download.data_.size)
// console.log(syncedDB.download)
// console.log(syncedDB.card_info)
// requestDataLock.current = false
setLoading(false)
} else {
if (requestDataLock.current) return
Expand Down Expand Up @@ -193,7 +177,6 @@ function MainPage_inner(props) {
])

useEffect(() => {
console.log("useEffect 注册autorun")
autorun(() => {
if (!props.downloadPage) {
return
Expand All @@ -205,12 +188,9 @@ function MainPage_inner(props) {
syncedDB.download,
syncedDB.card_info
)
// console.log(syncedDB.keys.download.data_.size)
// console.log(syncedDB.download)
// console.log(syncedDB.card_info)
console.timeEnd("autorun 同步数据库到hooks")
}
)
)
}, [])

const lastTop = useRef(0);
Expand Down Expand Up @@ -291,11 +271,11 @@ function MainPage_inner(props) {
}


const normalActions = [ action_goTop , action_randomSort , action_nameHashSort, action_refresh]
const normalActions = [action_goTop, action_randomSort, action_nameHashSort, action_refresh]
const downloadPageActions = [action_continueDownload, action_goTop, action_randomSort, action_nameHashSort,]




let leftMenuItems = [
{
Expand Down Expand Up @@ -341,7 +321,7 @@ function MainPage_inner(props) {
actions={props.downloadPage ? downloadPageActions : normalActions}
hidden={scrollControlledHidden}
searchFocus={searchFocus}
doSearch={() => { if(searchValue !== "") {props.openURL("/search", `&f_search=${searchValue}`)} }}
doSearch={() => { if (searchValue !== "") { props.openURL("/search", `&f_search=${searchValue}`) } }}
/>
<SecondConfirmDialog {...deleteSecondConfirm} />
<LongClickMenu
Expand All @@ -357,7 +337,7 @@ function MainPage_inner(props) {
/>
<TopSearchBar
leftButtonClick={() => setLeftMenuOpen(true)}
doSearch={() => { if(searchValue !== "") {props.openURL("/search", `&f_search=${searchValue}`) }}}
doSearch={() => { if (searchValue !== "") { props.openURL("/search", `&f_search=${searchValue}`) } }}
hidden={scrollControlledHidden}
initText={props.initSearch}
searchValue={searchValue}
Expand All @@ -368,8 +348,8 @@ function MainPage_inner(props) {
/>
<VScrollCardContainer
key={refreshToken}
cardGidList={cardGidList}
cardInfoMap={cardInfoMap}
cardGidList={cardGidList}//gid list一定能在info map里找到
cardInfoMap={cardInfoMap}//info map是先更新的
setScrollTop={setScrollTop}
loading={loading}
onImageClick={props.openRead}
Expand Down

0 comments on commit 842574b

Please sign in to comment.