fix(ams): HT slot shows "Generic" after configuring custom preset (#1053)

After configuring an AMS-HT slot with a custom cloud preset, the slot
  card and Configure modal kept showing "Generic PLA" even though the
  printer and slicer had the correct preset. The `/slot-presets` response
  keyed HT entries at `ams_id * 4 + tray_id = 512`, but frontend lookups
  used `ams_id` directly (128 on PrintersPage via getGlobalTrayId, 64 on
  SpoolBuddy via a one-off formula). All three agreed for regular AMS, so
  the mismatch only surfaced on HT — the saved preset never reached the
  UI and the render fell through to `tray.tray_type`.

  Backend now keys via a helper that mirrors frontend `getGlobalTrayId`.
  SpoolBuddy's AMS page switches to the shared helper. Regression test
  covers regular, HT, and external slot keys.
This commit is contained in:
maziggy
2026-04-20 17:32:34 +02:00
parent a4c7d6d5cf
commit 87a5aa36e9
6 changed files with 122 additions and 82 deletions
@@ -291,7 +291,7 @@ export function SpoolBuddyAmsPage() {
}, [effectiveTrayNow]);
const handleAmsSlotClick = useCallback((amsId: number, trayId: number, tray: AMSTray | null) => {
const globalTrayId = amsId >= 128 ? (amsId - 128) * 4 + trayId + 64 : amsId * 4 + trayId;
const globalTrayId = getGlobalTrayId(amsId, trayId, false);
const slotPreset = slotPresets?.[globalTrayId];
const mappedExtruderId = amsExtruderMap[String(amsId)];
const normalizedId = amsId >= 128 ? amsId - 128 : amsId;