1
1
import "./style.less" ;
2
2
import React , { useCallback , useEffect , useState } from "react" ;
3
3
import { observer } from "mobx-react-lite" ;
4
- import { ScreenInfo } from "../../../../apiMiddleware/share-screen" ;
4
+ import { ScreenInfo , ShareSymbol } from "../../../../apiMiddleware/share-screen" ;
5
5
import { getScreenInfo , uint8ArrayToImageURL } from "./Utils" ;
6
6
import classNames from "classnames" ;
7
7
import { ShareScreenStore } from "../../../../stores/ShareScreenStore" ;
@@ -27,24 +27,22 @@ export const ScreenList = observer<ScreenListProps>(function ShareScreen({
27
27
} , [ screenInfo . windowList , t ] ) ;
28
28
29
29
const onClick = useCallback (
30
- ( isDisplay : boolean , id : number ) => {
31
- setActiveInfo ( `${ isDisplay ? "display" : "window" } -${ id } ` ) ;
32
- shareScreenStore . updateIsDisplayScreen ( isDisplay ) ;
33
- shareScreenStore . updateScreenID ( id ) ;
30
+ ( screenInfo : ShareSymbol , activeKey : string ) => {
31
+ setActiveInfo ( activeKey ) ;
32
+ shareScreenStore . updateShareSymbolInfo ( screenInfo ) ;
34
33
} ,
35
34
[ shareScreenStore ] ,
36
35
) ;
37
36
38
37
const cancelSelected = useCallback ( ( ) => {
39
38
setActiveInfo ( "" ) ;
40
- shareScreenStore . updateIsDisplayScreen ( null ) ;
41
- shareScreenStore . updateScreenID ( null ) ;
39
+ shareScreenStore . updateShareSymbolInfo ( null ) ;
42
40
} , [ shareScreenStore ] ) ;
43
41
44
42
return (
45
43
< div className = "screen-list" >
46
- { screenInfo . displayList . map ( info => {
47
- const key = `display-${ info . displayId . id } ` ;
44
+ { screenInfo . displayList . map ( ( info , index ) => {
45
+ const key = `display-${ index } ` ;
48
46
const isActive = activeInfo === key ;
49
47
50
48
return (
@@ -53,6 +51,7 @@ export const ScreenList = observer<ScreenListProps>(function ShareScreen({
53
51
handleClick = { isActive ? cancelSelected : onClick }
54
52
active = { isActive }
55
53
key = { key }
54
+ activeKey = { key }
56
55
/>
57
56
) ;
58
57
} ) }
@@ -66,6 +65,7 @@ export const ScreenList = observer<ScreenListProps>(function ShareScreen({
66
65
handleClick = { isActive ? cancelSelected : onClick }
67
66
active = { activeInfo === key }
68
67
key = { key }
68
+ activeKey = { key }
69
69
/>
70
70
) ;
71
71
} ) }
@@ -75,11 +75,17 @@ export const ScreenList = observer<ScreenListProps>(function ShareScreen({
75
75
76
76
interface ScreenItemProps {
77
77
info : ScreenInfo [ "windowList" ] [ 0 ] | ScreenInfo [ "displayList" ] [ 0 ] ;
78
- handleClick : ( isDisplay : boolean , id : number ) => void ;
78
+ handleClick : ( screenInfo : ShareSymbol , key : string ) => void ;
79
79
active : boolean ;
80
+ activeKey : string ;
80
81
}
81
82
82
- const ScreenItem = observer < ScreenItemProps > ( function ScreenItem ( { info, handleClick, active } ) {
83
+ const ScreenItem = observer < ScreenItemProps > ( function ScreenItem ( {
84
+ info,
85
+ handleClick,
86
+ active,
87
+ activeKey,
88
+ } ) {
83
89
const screenInfo = getScreenInfo ( info ) ;
84
90
85
91
return (
@@ -89,7 +95,7 @@ const ScreenItem = observer<ScreenItemProps>(function ScreenItem({ info, handleC
89
95
className = { classNames ( "screen-image-box" , {
90
96
active,
91
97
} ) }
92
- onClick = { ( ) => handleClick ( screenInfo . isDisplay , screenInfo . id ) }
98
+ onClick = { ( ) => handleClick ( screenInfo , activeKey ) }
93
99
>
94
100
< img src = { uint8ArrayToImageURL ( info . image ) } alt = "screenshots" />
95
101
</ div >
0 commit comments