import { useState } from 'react' import StyledModal, { StyledModalProps } from './StyledModal' import Input from './inputs/Input' import api from '~/lib/api' export type DownloadURLModalProps = Omit< StyledModalProps, 'onConfirm' | 'open' | 'confirmText' | 'cancelText' | 'confirmVariant' | 'children' > & { suggestedURL?: string onPreflightSuccess?: (url: string) => void } const DownloadURLModal: React.FC = ({ suggestedURL, onPreflightSuccess, ...modalProps }) => { const [url, setUrl] = useState('') const [messages, setMessages] = useState([]) const [loading, setLoading] = useState(false) async function runPreflightCheck(downloadUrl: string) { try { setLoading(true) setMessages([`Running preflight check for URL: ${downloadUrl}`]) const res = await api.downloadRemoteMapRegionPreflight(downloadUrl) if (!res) { throw new Error('An unknown error occurred during the preflight check.') } if ('message' in res) { throw new Error(res.message) } setMessages((prev) => [ ...prev, `Preflight check passed. Filename: ${res.filename}, Size: ${(res.size / (1024 * 1024)).toFixed(2)} MB`, ]) if (onPreflightSuccess) { onPreflightSuccess(downloadUrl) } } catch (error) { console.error('Preflight check failed:', error) setMessages((prev) => [...prev, `Preflight check failed: ${error.message}`]) } finally { setLoading(false) } } return ( runPreflightCheck(url)} open={true} confirmText="Download" confirmIcon="IconDownload" cancelText="Cancel" confirmVariant="primary" confirmLoading={loading} cancelLoading={loading} large >

Enter the URL of the map region file you wish to download. The URL must be publicly reachable and end with .pmtiles. A preflight check will be run to verify the file's availability, type, and approximate size.

setUrl(e.target.value)} />
{messages.map((message, idx) => (

{message}

))}
) } export default DownloadURLModal