Show error popup if extension update fails
| @@ -770,7 +770,7 @@ async function showExtensionsDetails() { | ||
| 770 | 770 | |
| 771 | 771 | /** |
| 772 | 772 | * Handles the click event for the update button of an extension. |
| 773 | 773 | * This function makes a POST request to '/update_extensionapi/extensions/update' with the extension's name. |
| 774 | 774 | * If the extension is already up to date, it displays a success message. |
| 775 | 775 | * If the extension is not up to date, it updates the extension and displays a success message with the new commit hash. |
| 776 | 776 | */ |
| @@ -783,8 +783,11 @@ async function onUpdateClick() { | ||
| 783 | 783 | return; |
| 784 | 784 | } |
| 785 | 785 | |
| 786 | 786 | const icon = $(this).find('i').addClass('fa-spin'); |
| 787 | + icon.addClass('fa-spin'); | |
| 787 | 788 | await updateExtension(extensionName, false); |
| 789 | + // updateExtension eats the error, but we can at least stop the spinner | |
| 790 | + icon.removeClass('fa-spin'); | |
| 788 | 791 | } |
| 789 | 792 | |
| 790 | 793 | /** |
| @@ -803,10 +806,17 @@ async function updateExtension(extensionName, quiet) { | ||
| 803 | 806 | }), |
| 804 | 807 | }); |
| 805 | 808 | |
| 809 | + if (!response.ok) { | |
| 810 | + const text = await response.text(); | |
| 811 | + toastr.error(text || response.statusText, t`Extension update failed`, { timeOut: 5000 }); | |
| 812 | + console.error('Extension update failed', response.status, response.statusText, text); | |
| 813 | + return; | |
| 814 | + } | |
| 815 | + | |
| 806 | 816 | const data = await response.json(); |
| 807 | 817 | |
| 808 | 818 | if (!quiet) { |
| 809 | 819 | await showExtensionsDetails(); |
| 810 | 820 | } |
| 811 | 821 | |
| 812 | 822 | if (data.isUpToDate) { |