import React from 'react'; import FocusTrap from 'focus-trap-react'; import { Box, Button, config, Dialog, Header, Icon, IconButton, Icons, Overlay, OverlayBackdrop, OverlayCenter, Text, } from 'folds'; import { useModalStyle } from '../../hooks/useModalStyle'; import { stopPropagation } from '../../utils/keyboard'; import { formatAccuracy } from '../../utils/geoShare'; export type PendingLocation = { latitude: number; longitude: number; accuracy?: number }; type ShareLocationDialogProps = { location: PendingLocation; roomName: string; onSend: (approximate: boolean) => void; requestClose: () => void; }; /** * [Gitea #340] Confirm step before an m.location is posted: the toolbar button * used to send the exact position from a single click. Shows what will be * shared (coordinates + the fix's accuracy) and offers an approximate share. */ export function ShareLocationDialog({ location, roomName, onSend, requestClose, }: ShareLocationDialogProps) { const modalStyle = useModalStyle(420); const { latitude, longitude, accuracy } = location; const accuracyLabel = formatAccuracy(accuracy); const mapUrl = `https://www.openstreetmap.org/?mlat=${latitude}&mlon=${longitude}#map=16/${latitude}/${longitude}`; return ( }>
Share your location?
Everyone in {roomName} will see this position, and it can't be taken back from their devices once sent. {latitude.toFixed(5)}, {longitude.toFixed(5)} {accuracyLabel && ` (${accuracyLabel})`} {accuracyLabel ? 'The ± is how sure your device is of this position.' : 'Your device did not say how accurate this position is.'}{' '} Check on OpenStreetMap
); }