Skip to content

Commit 3614c97

Browse files
committed
🪚🍸 ↝ [SGV2-7 SGV2-21]: Now able to display your rovers
1 parent 4ff596d commit 3614c97

File tree

1 file changed

+43
-31
lines changed

1 file changed

+43
-31
lines changed

components/Gameplay/Automatons/BuildRover.tsx

+43-31
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ export function ViewRovers() {
9393
const session = useSession();
9494

9595
const [userRovers, setUserRovers] = useState<any[]>([]);
96+
const [roverDetails, setRoverDetails] = useState<any[]>([]);
97+
const [isLoading, setIsLoading] = useState(true); // Loading state
9698

9799
useEffect(() => {
98100
getRovers();
@@ -104,57 +106,67 @@ export function ViewRovers() {
104106
console.log("User session not available");
105107
return;
106108
}
107-
109+
110+
setIsLoading(true);
111+
108112
const { data: userRovers, error: userRoversError } = await supabase
109113
.from("inventoryUSERS")
110114
.select("*")
111115
.eq("owner", session.user.id)
112116
.eq("item", 23 || 24); // Adjust this condition as needed
113-
117+
114118
if (userRoversError) {
115119
throw userRoversError;
116120
}
117-
121+
118122
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
124126
.from("inventoryITEMS")
125127
.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+
};
140133
} else {
141134
setUserRovers([]);
142135
}
143136
} catch (error) {
144137
console.error("Error fetching rovers:", error.message);
145-
}
138+
} finally {
139+
setIsLoading(false);
140+
};
146141
};
147-
148142

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
149157
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>
156168
</div>
157169
))}
158170
</div>
159171
);
160-
};
172+
}

0 commit comments

Comments
 (0)