|
1 | 1 | "use client"; |
2 | 2 |
|
3 | | -import { useState, useEffect, useMemo, useRef } from "react"; |
| 3 | +import { useState, useEffect, useMemo, useRef, useCallback } from "react"; |
4 | 4 | import { useParams, useSearchParams } from "next/navigation"; |
5 | 5 | import { Lock } from "@phosphor-icons/react"; |
6 | 6 | import { Spinner } from "@/components/ui/spinner"; |
@@ -124,14 +124,28 @@ export default function StoreListingPage() { |
124 | 124 | const [selectedBuildId, setSelectedBuildId] = useState<string | null>(null); |
125 | 125 | const originalBuildIdRef = useRef<string | null>(null); |
126 | 126 |
|
127 | | - // Fetch all app builds for the picker |
| 127 | + const platform = selectedVersion?.attributes.platform; |
| 128 | + |
| 129 | + // Fetch builds for the picker, filtered by platform |
| 130 | + const fetchBuilds = useCallback( |
| 131 | + (refresh = false) => { |
| 132 | + if (!appId) return; |
| 133 | + const params = new URLSearchParams(); |
| 134 | + if (refresh) params.set("refresh", "1"); |
| 135 | + if (platform) params.set("platform", platform); |
| 136 | + const qs = params.toString(); |
| 137 | + fetch(`/api/apps/${appId}/testflight/builds${qs ? `?${qs}` : ""}`) |
| 138 | + .then((res) => (res.ok ? res.json() : { builds: [] })) |
| 139 | + .then((data) => setAllBuilds(data.builds ?? [])) |
| 140 | + .catch(() => setAllBuilds([])); |
| 141 | + }, |
| 142 | + [appId, platform], |
| 143 | + ); |
| 144 | + |
| 145 | + // Initial fetch when app/platform changes |
128 | 146 | useEffect(() => { |
129 | | - if (!appId) return; |
130 | | - fetch(`/api/apps/${appId}/testflight/builds`) |
131 | | - .then((res) => (res.ok ? res.json() : { builds: [] })) |
132 | | - .then((data) => setAllBuilds(data.builds ?? [])) |
133 | | - .catch(() => setAllBuilds([])); |
134 | | - }, [appId]); |
| 147 | + fetchBuilds(); |
| 148 | + }, [fetchBuilds]); |
135 | 149 |
|
136 | 150 | const [releaseType, setReleaseType] = useState("manually"); |
137 | 151 | const [scheduledDate, setScheduledDate] = useState<Date | undefined>(undefined); |
@@ -575,6 +589,7 @@ export default function StoreListingPage() { |
575 | 589 | versionBuild={selectedVersion?.build ?? null} |
576 | 590 | versionString={selectedVersion?.attributes.versionString} |
577 | 591 | onBuildChange={(id) => { setSelectedBuildId(id); setDirty(true); }} |
| 592 | + onRefresh={() => fetchBuilds(true)} |
578 | 593 | readOnly={readOnly} |
579 | 594 | /> |
580 | 595 |
|
|
0 commit comments