Fix NetUP settings not loading: snake_case → camelCase (transformKeys)

req() auto-converts server_url→serverUrl, default_language→defaultLanguage,
netup_room_number→netupRoomNumber. Fixed both type declarations and component reads.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-18 18:39:01 +03:00
parent cc5f9c18d3
commit 05d0c94a9a
2 changed files with 8 additions and 8 deletions

View File

@@ -269,7 +269,7 @@ export const api = {
// ── NetUP IPTV ────────────────────────────────────────────────────────────
netup: {
getSettings: (slug: string) =>
req<{ server_url: string; username: string; password: string; default_language: string; enabled: boolean }>(
req<{ serverUrl: string; username: string; password: string; defaultLanguage: string; enabled: boolean }>(
'GET', `/api/hotels/${slug}/netup/settings`),
saveSettings: (slug: string, data: { server_url: string; username: string; password?: string; default_language: string; enabled: boolean }) =>
@@ -279,7 +279,7 @@ export const api = {
req<{ ok: boolean; message: string }>('POST', `/api/hotels/${slug}/netup/test`),
getRoomMappings: (slug: string) =>
req<{ id: string; number: string; type: string; netup_room_number: string }[]>(
req<{ id: string; number: string; type: string; netupRoomNumber: string }[]>(
'GET', `/api/hotels/${slug}/netup/rooms`),
saveRoomMappings: (slug: string, mappings: { pms_room_id: string; netup_room_number: string }[]) =>

View File

@@ -33,7 +33,7 @@ export function TvWelcomePage() {
const [settingsLoaded, setSettingsLoaded] = useState(false)
// Room mappings
const [rooms, setRooms] = useState<{ id: string; number: string; type: string; netup_room_number: string }[]>([])
const [rooms, setRooms] = useState<{ id: string; number: string; type: string; netupRoomNumber: string }[]>([])
const [roomsSaving, setRoomsSaving] = useState(false)
const [roomsSaved, setRoomsSaved] = useState(false)
@@ -42,9 +42,9 @@ export function TvWelcomePage() {
if (!slug) return
api.netup.getSettings(slug)
.then(s => {
setServerUrl(s.server_url)
setServerUrl(s.serverUrl)
setUsername(s.username)
setLanguage(s.default_language)
setLanguage(s.defaultLanguage)
setEnabled(s.enabled)
setSettingsLoaded(true)
})
@@ -103,7 +103,7 @@ export function TvWelcomePage() {
try {
await api.netup.saveRoomMappings(slug, rooms.map(r => ({
pms_room_id: r.id,
netup_room_number: r.netup_room_number,
netup_room_number: r.netupRoomNumber,
})))
setRoomsSaved(true)
setTimeout(() => setRoomsSaved(false), 2500)
@@ -113,7 +113,7 @@ export function TvWelcomePage() {
}
const updateRoomNetup = (id: string, val: string) =>
setRooms(prev => prev.map(r => r.id === id ? { ...r, netup_room_number: val } : r))
setRooms(prev => prev.map(r => r.id === id ? { ...r, netupRoomNumber: val } : r))
return (
<div className="p-6 max-w-3xl mx-auto space-y-6">
@@ -328,7 +328,7 @@ export function TvWelcomePage() {
<td className="px-5 py-3">
<input
type="text"
value={room.netup_room_number}
value={room.netupRoomNumber}
onChange={e => updateRoomNetup(room.id, e.target.value)}
placeholder="Не задан"
className="input py-1.5 w-36 text-sm"