code refactoring
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import { atom } from 'recoil'
|
import { atom, selector } from 'recoil'
|
||||||
import { RPCResult } from '../types'
|
import { RPCResult } from '../types'
|
||||||
|
import { activeDownloadsState } from './downloads'
|
||||||
|
|
||||||
export const loadingAtom = atom({
|
export const loadingAtom = atom({
|
||||||
key: 'loadingAtom',
|
key: 'loadingAtom',
|
||||||
@@ -11,7 +12,9 @@ export const optimisticDownloadsState = atom<RPCResult[]>({
|
|||||||
default: []
|
default: []
|
||||||
})
|
})
|
||||||
|
|
||||||
export const totalDownloadSpeedState = atom<number>({
|
export const totalDownloadSpeedState = selector<number>({
|
||||||
key: 'totalDownloadSpeedState',
|
key: 'totalDownloadSpeedState',
|
||||||
default: 0
|
get: ({ get }) => get(activeDownloadsState)
|
||||||
|
.map(d => d.progress.speed)
|
||||||
|
.reduce((curr, next) => curr + next, 0)
|
||||||
})
|
})
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import { useEffect } from 'react'
|
import { useEffect } from 'react'
|
||||||
import { useRecoilState, useRecoilValue } from 'recoil'
|
import { useRecoilState, useRecoilValue } from 'recoil'
|
||||||
import { activeDownloadsState, loadingDownloadsState } from '../atoms/downloads'
|
import { loadingDownloadsState } from '../atoms/downloads'
|
||||||
import { listViewState } from '../atoms/settings'
|
import { listViewState } from '../atoms/settings'
|
||||||
import { loadingAtom, totalDownloadSpeedState } from '../atoms/ui'
|
import { loadingAtom } from '../atoms/ui'
|
||||||
import DownloadsCardView from './DownloadsCardView'
|
import DownloadsCardView from './DownloadsCardView'
|
||||||
import DownloadsTableView from './DownloadsTableView'
|
import DownloadsTableView from './DownloadsTableView'
|
||||||
|
|
||||||
@@ -12,15 +12,6 @@ const Downloads: React.FC = () => {
|
|||||||
|
|
||||||
const [isLoading, setIsLoading] = useRecoilState(loadingAtom)
|
const [isLoading, setIsLoading] = useRecoilState(loadingAtom)
|
||||||
|
|
||||||
const downloads = useRecoilValue(activeDownloadsState)
|
|
||||||
const [, setTotalDownloadSpeed] = useRecoilState(totalDownloadSpeedState)
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
setTotalDownloadSpeed(
|
|
||||||
downloads.map(d => d.progress.speed).reduce((curr, next) => curr + next, 0)
|
|
||||||
)
|
|
||||||
}, [downloads])
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (loadingDownloads) {
|
if (loadingDownloads) {
|
||||||
return setIsLoading(true)
|
return setIsLoading(true)
|
||||||
|
|||||||
Reference in New Issue
Block a user