1
1
'use client'
2
2
3
3
import { useQuery } from '@tanstack/react-query'
4
- import React , { memo , useMemo , useState } from 'react'
4
+ import React , { memo , useEffect , useMemo , useState } from 'react'
5
5
import { AnimatePresence , m } from 'framer-motion'
6
6
import Image from 'next/image'
7
7
import type { RequestError } from '@mx-space/api-client'
8
8
9
+ import {
10
+ setActivityMediaInfo ,
11
+ setActivityProcessName ,
12
+ useActivity ,
13
+ } from '~/atoms/activity'
9
14
import { FloatPopover } from '~/components/ui/float-popover'
10
15
import { apiClient } from '~/lib/request'
11
16
import { useAggregationSelector } from '~/providers/root/aggregation-data-provider'
@@ -44,7 +49,7 @@ const appLabels: { [app: string]: string } = {
44
49
Chrome : 'chrome' ,
45
50
'Chrome Canary' : 'chrome_canary' ,
46
51
QQ音乐 : 'qq_music' ,
47
- NeteaseMusic : 'netease' ,
52
+ NetEaseMusic : 'netease' ,
48
53
iTerm2 : 'iterm2' ,
49
54
Xcode : 'xcode' ,
50
55
Typora : 'typora' ,
@@ -55,6 +60,8 @@ const appLabels: { [app: string]: string } = {
55
60
export function Activity ( ) {
56
61
const [ isEnabled , setIsEnabled ] = useState ( true )
57
62
63
+ const activity = useActivity ( )
64
+
58
65
const { data } = useQuery (
59
66
[ 'activity' ] ,
60
67
async ( ) => {
@@ -73,14 +80,21 @@ export function Activity() {
73
80
} )
74
81
} ,
75
82
{
76
- refetchInterval : 5000 ,
83
+ refetchInterval : 1000 * 5 * 60 ,
77
84
retry : false ,
78
85
enabled : isEnabled ,
79
86
meta : {
80
87
persist : false ,
81
88
} ,
82
89
} ,
83
90
)
91
+
92
+ useEffect ( ( ) => {
93
+ if ( ! data ) return
94
+ data . mediaInfo && setActivityMediaInfo ( data . mediaInfo )
95
+ setActivityProcessName ( data . processName )
96
+ } , [ data ] )
97
+
84
98
const ownerName = useAggregationSelector ( ( data ) => data . user . name )
85
99
const memoProcessName = useMemo (
86
100
( ) => ( { processName : data ?. processName || '' } ) ,
@@ -89,7 +103,7 @@ export function Activity() {
89
103
if ( ! data ) {
90
104
return null
91
105
}
92
- const { processName, mediaInfo : media } = data
106
+ const { processName, media } = activity
93
107
if ( ! appLabels [ processName ] ) {
94
108
console . log ( 'Not collected process name: ' , processName )
95
109
return null
0 commit comments