8
8
isModalOpenChanged ,
9
9
selectChangeBoardModalSlice ,
10
10
} from 'features/changeBoardModal/store/slice' ;
11
+ import { selectSelectedBoardId } from 'features/gallery/store/gallerySelectors' ;
11
12
import { memo , useCallback , useMemo , useState } from 'react' ;
12
13
import { useTranslation } from 'react-i18next' ;
13
14
import { useListAllBoardsQuery } from 'services/api/endpoints/boards' ;
@@ -26,7 +27,8 @@ const selectIsModalOpen = createSelector(
26
27
const ChangeBoardModal = ( ) => {
27
28
useAssertSingleton ( 'ChangeBoardModal' ) ;
28
29
const dispatch = useAppDispatch ( ) ;
29
- const [ selectedBoard , setSelectedBoard ] = useState < string | null > ( ) ;
30
+ const currentBoardId = useAppSelector ( selectSelectedBoardId ) ;
31
+ const [ selectedBoardId , setSelectedBoardId ] = useState < string | null > ( ) ;
30
32
const { data : boards , isFetching } = useListAllBoardsQuery ( { include_archived : true } ) ;
31
33
const isModalOpen = useAppSelector ( selectIsModalOpen ) ;
32
34
const imagesToChange = useAppSelector ( selectImagesToChange ) ;
@@ -35,44 +37,46 @@ const ChangeBoardModal = () => {
35
37
const { t } = useTranslation ( ) ;
36
38
37
39
const options = useMemo < ComboboxOption [ ] > ( ( ) => {
38
- return [ { label : t ( 'boards.uncategorized' ) , value : 'none' } ] . concat (
39
- ( boards ?? [ ] )
40
- . map ( ( board ) => ( {
41
- label : board . board_name ,
42
- value : board . board_id ,
43
- } ) )
44
- . sort ( ( a , b ) => a . label . localeCompare ( b . label ) )
45
- ) ;
46
- } , [ boards , t ] ) ;
40
+ return [ { label : t ( 'boards.uncategorized' ) , value : 'none' } ]
41
+ . concat (
42
+ ( boards ?? [ ] )
43
+ . map ( ( board ) => ( {
44
+ label : board . board_name ,
45
+ value : board . board_id ,
46
+ } ) )
47
+ . sort ( ( a , b ) => a . label . localeCompare ( b . label ) )
48
+ )
49
+ . filter ( ( board ) => board . value !== currentBoardId ) ;
50
+ } , [ boards , currentBoardId , t ] ) ;
47
51
48
- const value = useMemo ( ( ) => options . find ( ( o ) => o . value === selectedBoard ) , [ options , selectedBoard ] ) ;
52
+ const value = useMemo ( ( ) => options . find ( ( o ) => o . value === selectedBoardId ) , [ options , selectedBoardId ] ) ;
49
53
50
54
const handleClose = useCallback ( ( ) => {
51
55
dispatch ( changeBoardReset ( ) ) ;
52
56
dispatch ( isModalOpenChanged ( false ) ) ;
53
57
} , [ dispatch ] ) ;
54
58
55
59
const handleChangeBoard = useCallback ( ( ) => {
56
- if ( ! imagesToChange . length || ! selectedBoard ) {
60
+ if ( ! imagesToChange . length || ! selectedBoardId ) {
57
61
return ;
58
62
}
59
63
60
- if ( selectedBoard === 'none' ) {
64
+ if ( selectedBoardId === 'none' ) {
61
65
removeImagesFromBoard ( { image_names : imagesToChange } ) ;
62
66
} else {
63
67
addImagesToBoard ( {
64
68
image_names : imagesToChange ,
65
- board_id : selectedBoard ,
69
+ board_id : selectedBoardId ,
66
70
} ) ;
67
71
}
68
72
dispatch ( changeBoardReset ( ) ) ;
69
- } , [ addImagesToBoard , dispatch , imagesToChange , removeImagesFromBoard , selectedBoard ] ) ;
73
+ } , [ addImagesToBoard , dispatch , imagesToChange , removeImagesFromBoard , selectedBoardId ] ) ;
70
74
71
75
const onChange = useCallback < ComboboxOnChange > ( ( v ) => {
72
76
if ( ! v ) {
73
77
return ;
74
78
}
75
- setSelectedBoard ( v . value ) ;
79
+ setSelectedBoardId ( v . value ) ;
76
80
} , [ ] ) ;
77
81
78
82
return (
0 commit comments