feat: podpora simulace objednávek z Bolt Food ve vývoji
This commit is contained in:
@@ -22,6 +22,7 @@ import Loader from '../components/Loader';
|
||||
import StoreAdminModal from '../components/modals/StoreAdminModal';
|
||||
import PayForGroupModal from '../components/modals/PayForGroupModal';
|
||||
import EditGroupFeesModal from '../components/modals/EditGroupFeesModal';
|
||||
import BoltSimulationModal from '../components/modals/BoltSimulationModal';
|
||||
import PendingPayments from '../components/PendingPayments';
|
||||
import BoltOrderProgress from '../components/BoltOrderProgress';
|
||||
|
||||
@@ -29,6 +30,7 @@ const SLOT = MealSlot.EXTRA;
|
||||
const TIME_REGEX = /^([01]\d|2[0-3]):[0-5]\d$/;
|
||||
const BOLT_SHARE_URL_PREFIX = 'https://food.bolt.eu/sharedActiveOrder/';
|
||||
const BOLT_TOKEN_REGEX = /^[0-9a-f]{64}$/i;
|
||||
const IS_DEV = process.env.NODE_ENV === 'development';
|
||||
|
||||
/** Vytáhne sledovací token ze sdílecí URL Bolt Food, nebo přijme samotný token. Null = neplatný vstup. */
|
||||
function extractBoltToken(input: string): string | null {
|
||||
@@ -100,6 +102,7 @@ export default function OrderGroupsPage() {
|
||||
const [editTimes, setEditTimes] = useState<Record<string, { orderedAt: string; deliveryAt: string; boltUrl: string }>>({});
|
||||
const [payModal, setPayModal] = useState<OrderGroup | null>(null);
|
||||
const [feesModal, setFeesModal] = useState<OrderGroup | null>(null);
|
||||
const [boltSimModal, setBoltSimModal] = useState<OrderGroup | null>(null);
|
||||
const [confirmOrderGroup, setConfirmOrderGroup] = useState<OrderGroup | null>(null);
|
||||
const [pageError, setPageError] = useState<string | null>(null);
|
||||
|
||||
@@ -803,6 +806,13 @@ export default function OrderGroupsPage() {
|
||||
<BoltOrderProgress state={group.boltOrderState} courierState={group.boltCourierState} tracking={!!group.boltTrackingToken} />
|
||||
</div>
|
||||
)}
|
||||
{IS_DEV && (
|
||||
<div className="mt-2">
|
||||
<Button variant="outline-warning" size="sm" onClick={() => setBoltSimModal(group)} title="Simulovat sledování Bolt (DEV)">
|
||||
🔧 Simulace Bolt
|
||||
</Button>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</Card.Body>
|
||||
@@ -874,6 +884,14 @@ export default function OrderGroupsPage() {
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
{IS_DEV && boltSimModal && (
|
||||
<BoltSimulationModal
|
||||
isOpen={!!boltSimModal}
|
||||
onClose={() => setBoltSimModal(null)}
|
||||
// živá skupina z dat (aktualizuje se přes websocket), fallback na snapshot
|
||||
group={groups.find(g => g.id === boltSimModal.id) ?? boltSimModal}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user