Show Assign or Unassign exclusively in SpoolBuddy slot picker

When a spool is already assigned/linked, only show Unassign/Unlink.
  When no spool is mapped, only show Assign/Link. Previously both
  buttons appeared simultaneously.
This commit is contained in:
maziggy
2026-03-25 13:58:47 +01:00
parent c822969df9
commit c5dedff113
3 changed files with 25 additions and 27 deletions
@@ -678,20 +678,8 @@ export function SpoolBuddyAmsPage() {
</div>
</button>
{/* Inventory: Assign / Unassign */}
{!spoolmanEnabled && (
<button
onClick={openAssignFromPicker}
className="w-full flex items-center gap-3 p-3 rounded-lg bg-bambu-dark border border-bambu-dark-tertiary hover:border-bambu-green transition-colors text-left"
>
<Package className="w-5 h-5 text-bambu-green flex-shrink-0" />
<div>
<p className="text-white font-medium">{t('inventory.assignSpool')}</p>
<p className="text-xs text-bambu-gray">{t('spoolbuddy.ams.assignDesc', 'Track a spool from your inventory')}</p>
</div>
</button>
)}
{!spoolmanEnabled && assignment && (
{/* Inventory: Assign or Unassign */}
{!spoolmanEnabled && (assignment ? (
<button
onClick={handleUnassignFromPicker}
disabled={unassignMutation.isPending}
@@ -703,22 +691,21 @@ export function SpoolBuddyAmsPage() {
<p className="text-xs text-bambu-gray">{t('spoolbuddy.ams.unassignDesc', 'Remove inventory spool from this slot')}</p>
</div>
</button>
)}
{/* Spoolman: Link / Unlink */}
{spoolmanEnabled && (
) : (
<button
onClick={openLinkFromPicker}
onClick={openAssignFromPicker}
className="w-full flex items-center gap-3 p-3 rounded-lg bg-bambu-dark border border-bambu-dark-tertiary hover:border-bambu-green transition-colors text-left"
>
<Link2 className="w-5 h-5 text-bambu-green flex-shrink-0" />
<Package className="w-5 h-5 text-bambu-green flex-shrink-0" />
<div>
<p className="text-white font-medium">{t('spoolman.linkToSpoolman')}</p>
<p className="text-xs text-bambu-gray">{t('spoolbuddy.ams.linkDesc', 'Link a Spoolman spool to this slot')}</p>
<p className="text-white font-medium">{t('inventory.assignSpool')}</p>
<p className="text-xs text-bambu-gray">{t('spoolbuddy.ams.assignDesc', 'Track a spool from your inventory')}</p>
</div>
</button>
)}
{spoolmanEnabled && linked?.id && (
))}
{/* Spoolman: Link or Unlink */}
{spoolmanEnabled && (linked?.id ? (
<button
onClick={() => unlinkSpoolMutation.mutate(linked.id)}
disabled={unlinkSpoolMutation.isPending}
@@ -730,7 +717,18 @@ export function SpoolBuddyAmsPage() {
<p className="text-xs text-bambu-gray">{t('spoolbuddy.ams.unlinkDesc', 'Remove Spoolman link from this slot')}</p>
</div>
</button>
)}
) : (
<button
onClick={openLinkFromPicker}
className="w-full flex items-center gap-3 p-3 rounded-lg bg-bambu-dark border border-bambu-dark-tertiary hover:border-bambu-green transition-colors text-left"
>
<Link2 className="w-5 h-5 text-bambu-green flex-shrink-0" />
<div>
<p className="text-white font-medium">{t('spoolman.linkToSpoolman')}</p>
<p className="text-xs text-bambu-gray">{t('spoolbuddy.ams.linkDesc', 'Link a Spoolman spool to this slot')}</p>
</div>
</button>
))}
</div>
</div>
</div>
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -23,7 +23,7 @@
<!-- Splash screens for iOS -->
<link rel="apple-touch-startup-image" href="/img/android-chrome-512x512.png" />
<script type="module" crossorigin src="/assets/index-Dh0_3dIz.js"></script>
<script type="module" crossorigin src="/assets/index-BsSJ-PqL.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-CZLTApPU.css">
</head>
<body>