import { useSyncExternalStore } from 'react'
import { world } from './sdk'
const RegionSelector = () => {
const { regions, selectedRegion, latencyCheckStatus } = useSyncExternalStore(
world.regions.subscribe,
world.regions.getSnapshot
)
const handleRegionChange = (regionId: string) => {
world.regions.select(regionId)
}
return (
<div>
{regions &&
Object.entries(regions).map(([regionId, region]) => (
<label key={regionId}>
<input
type="radio"
value={regionId}
checked={selectedRegion?.id === regionId}
onChange={(e) => handleRegionChange(e.target.value)}
/>
{region.config.displayName}
{region.latency !== null ? (
<span>({region.latency}ms)</span>
) : (
<span>{latencyCheckStatus === 'loading' ? 'Checking…' : 'Offline'}</span>
)}
</label>
))}
</div>
)
}