luci-app-commands: avoid deprecated XHR() usage
authorJo-Philipp Wich <[email protected]>
Sat, 27 Jul 2024 23:21:27 +0000 (01:21 +0200)
committerJo-Philipp Wich <[email protected]>
Sat, 27 Jul 2024 23:36:22 +0000 (01:36 +0200)
Replace direct usage of deprecated XHR() wrapper with L.request class calls.

Signed-off-by: Jo-Philipp Wich <[email protected]>
applications/luci-app-commands/ucode/template/commands.ut

index f11efe948c79c787badcdb37c8f12d1f94c6d496..90a3c298f0d9b5a218ea4bddf0f579163f9bcd4c 100644 (file)
 -%}
 
 <script type="text/javascript">//<![CDATA[
-       var stxhr = new XHR();
-
        function command_run(ev, id)
        {
-               var args;
                var field = document.getElementById(id);
-               if (field)
-                       args = encodeURIComponent(field.value);
-
                var legend = document.getElementById('command-rc-legend');
                var output = document.getElementById('command-rc-output');
 
                        legend.parentNode.style.display = 'block';
                        legend.style.display = 'inline';
 
-                       stxhr.get(L.url('admin/system/commands/run', id) + (args ? '?args=' + args : ''), null,
-                               function(x, st)
-                               {
-                                       if (st)
-                                       {
-                                               if (st.binary)
-                                                       st.stdout = '[' + _('Binary data not displayed, download instead.') + ']';
-
-                                               legend.style.display = 'none';
-                                               output.innerHTML = String.format(
-                                                       '<pre><strong># %h\n</strong>%h<span style="color:red">%h</span></pre>' +
-                                                       '<div class="alert-message warning">%h (%h %d)</div>',
-                                                       st.command, st.stdout, st.stderr,
-                                                       (st.exitcode == 0) ? _('Command successful') : _('Command failed'),
-                                                       _('Code:'), st.exitcode);
-                                       }
-                                       else
-                                       {
-                                               legend.style.display = 'none';
-                                               output.innerHTML = '<span class="error">%h</span>'.format(_('Failed to execute command!'));
-                                       }
-
-                                       location.hash = '#output';
-                               }
-                       );
+                       L.Request.get(L.url('admin/system/commands/run', id), field ? { args: field.value } : null).then(function(reply) {
+                               var st = reply.json();
+
+                               if (st.binary)
+                                       st.stdout = '[' + _('Binary data not displayed, download instead.') + ']';
+
+                               output.innerHTML = String.format(
+                                       '<pre><strong># %h\n</strong>%h<span style="color:red">%h</span></pre>' +
+                                       '<div class="alert-message warning">%h (%h %d)</div>',
+                                       st.command, st.stdout, st.stderr,
+                                       (st.exitcode == 0) ? _('Command successful') : _('Command failed'),
+                                       _('Code:'), st.exitcode);
+                       }).catch(function() {
+                               output.innerHTML = '<span class="error">%h</span>'.format(_('Failed to execute command!'));
+                       }).finally(function() {
+                               legend.style.display = 'none';
+                               location.hash = '#output';
+                       });
                }
 
                ev.preventDefault();