mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-22 06:56:35 +00:00
fix(tours): match a saved ski route by its ski choice, and keep the planner under the lint limits
The saved ski route compared against an undefined skiKey, so opening a saved ski tour threw. The held seed now lives in useSavedSkiSeed and is matched by skiRouteKey(skiChoice). The ski route facts move to skiRouteFacts.ts so the summary and leg rows only export components, the rail renders SkiPlannerSummary, and openTour, useTourRoute and useAddonManager shed the branches and lines the new ski code had added.
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import type { AdminFeatureToggleResponse } from '@trek/shared';
|
||||
import { Bike, Footprints, MountainSnow } from 'lucide-react';
|
||||
import { useEffect, useEffectEvent, useState } from 'react';
|
||||
|
||||
@@ -9,6 +10,18 @@ import { useAddonStore } from '../../../store/addonStore';
|
||||
import { useToast } from '../../shared/Toast';
|
||||
import { type Addon, type ProviderOption, isPhotosAddon } from './addonModel';
|
||||
|
||||
/** A switch under Tours as the server keeps it, read into `set`; `onError` tells the admin it could not be read. */
|
||||
function loadToursFlag(
|
||||
api: { get: () => Promise<AdminFeatureToggleResponse> },
|
||||
set: (enabled: boolean) => void,
|
||||
onError: () => void
|
||||
) {
|
||||
api
|
||||
.get()
|
||||
.then((flag) => set(flag.enabled))
|
||||
.catch(onError);
|
||||
}
|
||||
|
||||
/**
|
||||
* The addon switches behind both admin shells: the addon list loaded on mount, an
|
||||
* optimistic toggle with a per row rollback, and the lists each shell groups its tiles
|
||||
@@ -37,22 +50,11 @@ export function useAddonManager() {
|
||||
|
||||
const loadOnMount = useEffectEvent(() => {
|
||||
void loadAddons().finally(() => setLoading(false));
|
||||
wandererAdminApi
|
||||
.get()
|
||||
.then((flag) => setToursWanderer(flag.enabled))
|
||||
.catch(() => toast.error(t('admin.addons.toast.error')));
|
||||
hikingMapAdminApi
|
||||
.get()
|
||||
.then((flag) => setToursHikingMap(flag.enabled))
|
||||
.catch(() => toast.error(t('admin.addons.toast.error')));
|
||||
cycleMapAdminApi
|
||||
.get()
|
||||
.then((flag) => setToursCycleMap(flag.enabled))
|
||||
.catch(() => toast.error(t('admin.addons.toast.error')));
|
||||
skiRoutingAdminApi
|
||||
.get()
|
||||
.then((flag) => setToursSkiRouting(flag.enabled))
|
||||
.catch(() => toast.error(t('admin.addons.toast.error')));
|
||||
const unreadable = () => toast.error(t('admin.addons.toast.error'));
|
||||
loadToursFlag(wandererAdminApi, setToursWanderer, unreadable);
|
||||
loadToursFlag(hikingMapAdminApi, setToursHikingMap, unreadable);
|
||||
loadToursFlag(cycleMapAdminApi, setToursCycleMap, unreadable);
|
||||
loadToursFlag(skiRoutingAdminApi, setToursSkiRouting, unreadable);
|
||||
});
|
||||
useEffect(() => {
|
||||
loadOnMount();
|
||||
|
||||
Reference in New Issue
Block a user