| @@ -1470,8 +1470,30 @@ | ||
| 1470 | 1470 | save.notify(err.message || i18n.genericError, "error"); |
| 1471 | 1471 | }); |
| 1472 | 1472 | }); |
| 1473 | 1473 | |
| 1474 | + // "Allow User Cancellation" saves itself too; on failure the switch goes back | |
| 1475 | + // to what is stored. | |
| 1476 | + document.addEventListener("change", function (e) { | |
| 1477 | + var toggle = e.target.closest("[data-subscrpt-user-cancel-card] [data-subscrpt-user-cancel-enable]"); | |
| 1478 | + if (!toggle) { | |
| 1479 | + return; | |
| 1480 | + } | |
| 1481 | + var card = toggle.closest("[data-subscrpt-user-cancel-card]"); | |
| 1482 | + | |
| 1483 | + toggle.disabled = true; | |
| 1484 | + api("PUT", "/product-user-cancel/" + card.getAttribute("data-product-id"), { enabled: toggle.checked }) | |
| 1485 | + .then(function () { | |
| 1486 | + toggle.disabled = false; | |
| 1487 | + save.notify(toggle.checked ? i18n.userCancelOn : i18n.userCancelOff); | |
| 1488 | + }) | |
| 1489 | + .catch(function (err) { | |
| 1490 | + toggle.disabled = false; | |
| 1491 | + toggle.checked = !toggle.checked; | |
| 1492 | + save.notify(err.message || i18n.genericError, "error"); | |
| 1493 | + }); | |
| 1494 | + }); | |
| 1495 | + | |
| 1474 | 1496 | /* ------------------------------------------------------------------ * |
| 1475 | 1497 | * Drag-and-drop reorder: durations + products (vertical only). |
| 1476 | 1498 | * |
| 1477 | 1499 | * A drag starts on [data-subscrpt-sort-handle] only, moves its |