Files
OpenFlare/frontend/app/(main)/proxy-routes/detail/hooks/use-route-section-save.ts
T
ryan 63cd906cfc refactor(repo): consolidate openflare-server to root and move subprojects to internal/apps
- Merge all files inside openflare-server to the repository root directory.
- Relocate agent, relay, and flared subprojects from internal/ to internal/apps/.
- Combine docker-compose files and update build context paths to root.
- Update GitHub workflows and Dockerfiles to refer to new directories and package names.
- Rewrite Go package imports across all files.
- Resolve database renew test race condition and clean up docs.
2026-06-19 14:23:29 +08:00

40 lines
1.2 KiB
TypeScript

'use client';
import {useCallback, useState} from 'react';
import {toast} from 'sonner';
import type {ProxyRouteItem, ProxyRouteMutationPayload} from '@/lib/services/openflare';
import {ProxyRouteService} from '@/lib/services/openflare';
import {buildPayloadFromRoute, getErrorMessage} from '../../components/helpers';
export function useRouteSectionSave(
route: ProxyRouteItem,
onRouteUpdate: (route: ProxyRouteItem) => void,
onSavingChange?: (saving: boolean) => void,
) {
const [saving, setSaving] = useState(false);
const save = useCallback(
async (overrides: Partial<ProxyRouteMutationPayload>, message: string) => {
setSaving(true);
onSavingChange?.(true);
try {
const updated = await ProxyRouteService.update(
route.id,
buildPayloadFromRoute(route, overrides),
);
onRouteUpdate(updated);
toast.success(message);
} catch (error) {
toast.error('保存失败', { description: getErrorMessage(error) });
} finally {
setSaving(false);
onSavingChange?.(false);
}
},
[onRouteUpdate, onSavingChange, route],
);
return { saving, save };
}