@@ -93,6 +93,8 @@ export function ViewRovers() {
93
93
const session = useSession ( ) ;
94
94
95
95
const [ userRovers , setUserRovers ] = useState < any [ ] > ( [ ] ) ;
96
+ const [ roverDetails , setRoverDetails ] = useState < any [ ] > ( [ ] ) ;
97
+ const [ isLoading , setIsLoading ] = useState ( true ) ; // Loading state
96
98
97
99
useEffect ( ( ) => {
98
100
getRovers ( ) ;
@@ -104,57 +106,67 @@ export function ViewRovers() {
104
106
console . log ( "User session not available" ) ;
105
107
return ;
106
108
}
107
-
109
+
110
+ setIsLoading ( true ) ;
111
+
108
112
const { data : userRovers , error : userRoversError } = await supabase
109
113
. from ( "inventoryUSERS" )
110
114
. select ( "*" )
111
115
. eq ( "owner" , session . user . id )
112
116
. eq ( "item" , 23 || 24 ) ; // Adjust this condition as needed
113
-
117
+
114
118
if ( userRoversError ) {
115
119
throw userRoversError ;
116
120
}
117
-
121
+
118
122
if ( userRovers && userRovers . length > 0 ) {
119
- // Extract item IDs from userRovers
120
- const itemIds = userRovers . map ( rover => rover . item ) ;
121
-
122
- // Fetch details of items from inventoryITEMS table
123
- const { data : items , error : itemsError } = await supabase
123
+ setUserRovers ( userRovers ) ;
124
+ const roverIds = userRovers . map ( item => item . item ) ;
125
+ const { data, error } = await supabase
124
126
. from ( "inventoryITEMS" )
125
127
. select ( "*" )
126
- . in ( "id" , itemIds ) ;
127
-
128
- if ( itemsError ) {
129
- throw itemsError ;
130
- }
131
-
132
- // Merge item details with userRovers
133
- const mergedRovers = userRovers . map ( rover => {
134
- const item = items . find ( item => item . id === rover . item ) ;
135
- return { ...rover , item } ;
136
- } ) ;
137
-
138
- setUserRovers ( mergedRovers ) ;
139
- console . log ( 'Test' , mergedRovers ) ;
128
+ . in ( "id" , roverIds ) ;
129
+
130
+ if ( data ) {
131
+ setRoverDetails ( data ) ;
132
+ } ;
140
133
} else {
141
134
setUserRovers ( [ ] ) ;
142
135
}
143
136
} catch ( error ) {
144
137
console . error ( "Error fetching rovers:" , error . message ) ;
145
- }
138
+ } finally {
139
+ setIsLoading ( false ) ;
140
+ } ;
146
141
} ;
147
-
148
142
143
+ const combinedRovers = userRovers . map ( userRover => {
144
+ const roverDetail = roverDetails . find ( detail => detail . id === userRover . item ) ;
145
+ return {
146
+ ...userRover ,
147
+ ...roverDetail ,
148
+ } ;
149
+ } ) ;
150
+
151
+ // If the component is loading, you can display a loading indicator or message
152
+ if ( isLoading ) {
153
+ return < div > Loading...</ div > ;
154
+ }
155
+
156
+ // Render the list of rovers
149
157
return (
150
- < div className = "grid grid-cols-3 gap-4" >
151
- { userRovers . map ( rover => (
152
- < div key = { rover . id } className = "border p-4" >
153
- < img src = { rover . icon_url } alt = { rover . name } className = "h-24 mx-auto mb-2" />
154
- < p > ID: { rover . id } </ p >
155
- < p > Name: { rover . name } </ p >
158
+ < div className = "w-full mt-5" >
159
+ Your rovers:
160
+ { combinedRovers . map ( rover => (
161
+ < div key = { rover . id } className = "flex items-center justify-between mb-2" >
162
+ < div className = "flex items-center space-x-2" >
163
+ < div className = "w-10 h-10 rounded-full overflow-hidden" >
164
+ < img src = { rover . icon_url } alt = { rover . name } className = "w-full h-full object-cover" />
165
+ </ div >
166
+ < p className = "text-sm" > { rover . name } </ p >
167
+ </ div >
156
168
</ div >
157
169
) ) }
158
170
</ div >
159
171
) ;
160
- } ;
172
+ }
0 commit comments