@@ -7,39 +7,28 @@ import { getAuth } from 'firebase/auth'
77import { ApiDefaultResult } from '@/app/ts/interfaces/apiAnilistDataInterface'
88import { useAuthState } from 'react-firebase-hooks/auth'
99import { AnimatePresence , motion } from 'framer-motion' ;
10- import ShowUpLoginPanelAnimated from '../../UserLoginModal/animatedVariant'
1110import { removeMediaOnListByStatus , updateUserMediaListByStatus } from '@/app/lib/user/userDocUpdateOptions'
12- import { useAppSelector } from '@/app/lib/redux/hooks'
11+ import { useAppDispatch , useAppSelector } from '@/app/lib/redux/hooks'
1312import anilistUsers from '@/app/api/anilistUsers'
1413import { ImdbEpisode } from '@/app/ts/interfaces/apiImdbInterface' ;
15-
16- type StatusTypes = "COMPLETED" | "CURRENT" | "PLANNING" | "DROPPED" | "PAUSED" | "REPEATING"
17-
18- const btnValues = [
19- { name : "Completed" , value : "COMPLETED" } ,
20- { name : "Watching" , value : "CURRENT" } ,
21- { name : "Planning" , value : "PLANNING" } ,
22- { name : "Dropped" , value : "DROPPED" } ,
23- { name : "Paused" , value : "PAUSED" } ,
24- { name : "Repeating" , value : "REPEATING" } ,
25- ]
14+ import { userMediaStatusEntries } from '@/app/lib/dataConstants/anilist' ;
15+ import { toggleShowLoginModalValue } from '@/app/lib/redux/features/loginModal' ;
2616
2717export function Button ( { mediaInfo, statusOnAnilist, listEntryId, imdbEpisodesList, amountWatchedOrRead, children } : {
28- mediaInfo : ApiDefaultResult , imdbEpisodesList ?: ImdbEpisode [ ] , statusOnAnilist ?: string , listEntryId ?: number , amountWatchedOrRead ?: number , children ?: React . ReactNode [ ]
18+ mediaInfo : ApiDefaultResult , imdbEpisodesList ?: ImdbEpisode [ ] , statusOnAnilist ?: ApiDefaultResult [ "mediaListEntry" ] [ "status" ] , listEntryId ?: number , amountWatchedOrRead ?: number , children ?: React . ReactNode [ ]
2919} ) {
3020
3121 const [ isLoading , setIsLoading ] = useState < boolean > ( false )
3222 const [ isMenuOpen , setIsMenuOpen ] = useState < boolean > ( false )
3323
34- const [ mediaStatus , setMediaStatus ] = useState < StatusTypes | null > ( statusOnAnilist as StatusTypes || null )
35-
36- const [ isUserModalOpen , setIsUserModalOpen ] = useState ( false )
24+ const [ mediaStatus , setMediaStatus ] = useState < ApiDefaultResult [ "mediaListEntry" ] [ "status" ] | null > ( statusOnAnilist || null )
3725
3826 const anilistUser = useAppSelector ( ( state ) => ( state . UserInfo ) . value )
27+ const dispatch = useAppDispatch ( )
3928
4029 const auth = getAuth ( )
4130
42- const [ user , loading ] = useAuthState ( auth )
31+ const [ user ] = useAuthState ( auth )
4332
4433 const db = getFirestore ( initFirebase ( ) )
4534
@@ -64,11 +53,11 @@ export function Button({ mediaInfo, statusOnAnilist, listEntryId, imdbEpisodesLi
6453
6554 if ( ! userMediaLists ) return
6655
67- btnValues . map ( ( btn ) => {
56+ userMediaStatusEntries . map ( ( btn ) => {
6857
6958 const wasMediaFound = userMediaLists [ btn . value . toLowerCase ( ) ] ?. find ( ( media : { id : number } ) => media . id == mediaInfo . id )
7059
71- if ( wasMediaFound ) setMediaStatus ( btn . value as StatusTypes )
60+ if ( wasMediaFound ) setMediaStatus ( btn . value as ApiDefaultResult [ "mediaListEntry" ] [ "status" ] )
7261
7362 } )
7463
@@ -104,10 +93,10 @@ export function Button({ mediaInfo, statusOnAnilist, listEntryId, imdbEpisodesLi
10493
10594 }
10695
107- async function handleAddMediaOnList ( { status } : { status : StatusTypes } ) {
96+ async function handleAddMediaOnList ( { status } : { status : ApiDefaultResult [ "mediaListEntry" ] [ "status" ] } ) {
10897
10998 // Opens Login Modal
110- if ( ! user && ! anilistUser ) return setIsUserModalOpen ( true )
99+ if ( ! user && ! anilistUser ) return dispatch ( toggleShowLoginModalValue ( ) )
111100
112101 setIsLoading ( true )
113102
@@ -182,13 +171,6 @@ export function Button({ mediaInfo, statusOnAnilist, listEntryId, imdbEpisodesLi
182171 return (
183172 < React . Fragment >
184173
185- < ShowUpLoginPanelAnimated
186- apperanceCondition = { isUserModalOpen }
187- customOnClickAction = { ( ) => setIsUserModalOpen ( false ) }
188- aria-controls = { styles . user_media_status_list }
189- auth = { auth }
190- />
191-
192174 < motion . button
193175 whileTap = { { scale : 0.85 } }
194176 id = { styles . container }
@@ -220,13 +202,13 @@ export function Button({ mediaInfo, statusOnAnilist, listEntryId, imdbEpisodesLi
220202 >
221203 < ul >
222204
223- { btnValues . map ( ( btn ) => (
205+ { userMediaStatusEntries . map ( ( btn ) => (
224206 < li key = { btn . value } >
225207 < motion . button
226208 data-active = { mediaStatus == btn . value }
227209 disabled = { isLoading }
228210 onClick = { ( ) => handleAddMediaOnList (
229- { status : btn . value as StatusTypes }
211+ { status : btn . value as ApiDefaultResult [ "mediaListEntry" ] [ "status" ] }
230212 ) }
231213 whileTap = { { scale : 0.9 } }
232214 >
0 commit comments