miner
All checks were successful
Deploy / deploy-staging (push) Successful in 1m10s
Deploy / deploy-production (push) Has been skipped

This commit is contained in:
2026-08-21 23:37:27 +02:00
parent b3b3a27257
commit d8d1ad96ee
4 changed files with 99 additions and 8 deletions

View File

@@ -2775,6 +2775,33 @@
}
}
async function deletePurchasedMiner(miner) {
if (!miner || !miner.id) {
return;
}
const label = String(miner.label || 'diesen Miner');
if (!window.confirm(`Miete ${label} wirklich loeschen? Kosten, feste Krypto-Bewertung und der Wallet-Abzug werden ebenfalls entfernt.`)) {
return;
}
setSaving(true);
setError('');
setMessage('');
try {
await request(`${apiBase}/projects/${encodeURIComponent(projectKey)}/purchased-miners/${encodeURIComponent(miner.id)}`, {
method: 'DELETE',
});
invalidateProjectBootstrapCache(projectKey);
await loadBootstrap(projectKey);
setMessage('Gemieteten Miner mit allen zugeordneten Kosten geloescht.');
} catch (err) {
setError(err.message);
} finally {
setSaving(false);
}
}
async function submitPurchaseMiner(event) {
event.preventDefault();
if (!purchaseMinerForm.offer_id) {
@@ -3722,14 +3749,27 @@
]),
h('td', { key: 'active' }, row.is_active ? 'ja' : 'nein'),
h('td', { key: 'action' },
row.can_toggle_auto_renew
? h('button', {
type: 'button',
className: 'mc-button mc-button--ghost',
onClick: () => toggleMinerAutoRenew(row),
disabled: saving,
}, row.auto_renew ? 'Verlaengerung aus' : 'Verlaengerung an')
: '—'
h('div', { className: 'mc-inline-row' }, [
row.can_toggle_auto_renew
? h('button', {
key: 'renew',
type: 'button',
className: 'mc-button mc-button--ghost',
onClick: () => toggleMinerAutoRenew(row),
disabled: saving,
}, row.auto_renew ? 'Verlaengerung aus' : 'Verlaengerung an')
: null,
row.source === 'miete'
? h('button', {
key: 'delete',
type: 'button',
className: 'mc-button mc-button--ghost',
onClick: () => deletePurchasedMiner({ id: row.miner_id, label: row.label }),
disabled: saving,
}, 'Loeschen')
: null,
!row.can_toggle_auto_renew && row.source !== 'miete' ? '—' : null,
])
),
]))
: [h('tr', { key: 'empty' }, h('td', { colSpan: 9 }, emptyText))]