Skip to content

Commit 4ff596d

Browse files
committed
🍑🪜 ↝ [SGV2-20 SGV2-21]: A component to view your existing rovers (not quite working yet, however)
1 parent c654df6 commit 4ff596d

File tree

3 files changed

+75
-3
lines changed

3 files changed

+75
-3
lines changed

components/Gameplay/Automatons/BuildRover.tsx

+72-1
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,75 @@ export default function BuildFirstRover() {
8686
)}
8787
</div>
8888
);
89-
}
89+
};
90+
91+
export function ViewRovers() {
92+
const supabase = useSupabaseClient();
93+
const session = useSession();
94+
95+
const [userRovers, setUserRovers] = useState<any[]>([]);
96+
97+
useEffect(() => {
98+
getRovers();
99+
}, [session]);
100+
101+
async function getRovers() {
102+
try {
103+
if (!session || !session.user || !session.user.id) {
104+
console.log("User session not available");
105+
return;
106+
}
107+
108+
const { data: userRovers, error: userRoversError } = await supabase
109+
.from("inventoryUSERS")
110+
.select("*")
111+
.eq("owner", session.user.id)
112+
.eq("item", 23 || 24); // Adjust this condition as needed
113+
114+
if (userRoversError) {
115+
throw userRoversError;
116+
}
117+
118+
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
124+
.from("inventoryITEMS")
125+
.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);
140+
} else {
141+
setUserRovers([]);
142+
}
143+
} catch (error) {
144+
console.error("Error fetching rovers:", error.message);
145+
}
146+
};
147+
148+
149+
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>
156+
</div>
157+
))}
158+
</div>
159+
);
160+
};

components/Gameplay/mission-list.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export function MissionList() {
6161
<>
6262
<CardHeader>
6363
<CardTitle>To-Do List</CardTitle>
64-
<CardDescription>Manage your daily tasks</CardDescription>
64+
<CardDescription>Missions to become a Star Sailor</CardDescription>
6565
</CardHeader>
6666
<CardContent className="space-y-4 overflow-y-auto max-h-[480px] pr-4">
6767
{missions.map((mission, index) => (

pages/tests/onboarding.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import BuildFirstRover from "../../components/Gameplay/Automatons/BuildRover";
1+
import BuildFirstRover, { ViewRovers } from "../../components/Gameplay/Automatons/BuildRover";
22
import { PickYourPlanet } from "../../components/Gameplay/Chapter 1/onboarding";
33
import { MissionList } from "../../components/Gameplay/mission-list";
44
import Layout from "../../components/_Core/Section/Layout";
@@ -26,6 +26,7 @@ export default function OnboardingTest() {
2626
</style>
2727
<PickYourPlanet />
2828
<BuildFirstRover />
29+
<ViewRovers />
2930
<MissionList />
3031
</>
3132
);

0 commit comments

Comments
 (0)