From 476965b1611c45dac1e250365cbbfd03df78926f Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 4 Mar 2021 19:50:19 +0300 Subject: show installed plugins in the installer list --- js/PrefHelpers.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'js') diff --git a/js/PrefHelpers.js b/js/PrefHelpers.js index 6012d2d02..5ee84f258 100644 --- a/js/PrefHelpers.js +++ b/js/PrefHelpers.js @@ -374,6 +374,7 @@ const Helpers = { need_refresh: false, entries: false, search_query: "", + installed_plugins: [], onHide: function() { if (this.need_refresh) { Helpers.Prefs.refresh(); @@ -449,6 +450,9 @@ const Helpers = { .filter((stoken) => (stoken.length > 0 ? stoken : null)); dialog.entries.forEach((plugin) => { + const is_installed = (dialog.installed_plugins + .filter((p) => plugin.topics.map((t) => t.replace(/-/, "_")).includes(p))).length > 0; + if (search_tokens.length == 0 || Object.values(plugin).filter((pval) => search_tokens.filter((stoken) => @@ -458,8 +462,9 @@ const Helpers = { ++results_rendered; container.innerHTML += ` -
  • - ${App.FormFields.button_tag(__('Install'), "", {class: 'alt-primary pull-right', +
  • + ${App.FormFields.button_tag(is_installed ? __("Already installed") : __('Install'), "", {class: 'alt-primary pull-right', + disabled: is_installed, onclick: `App.dialogOf(this).performInstall("${App.escapeHtml(plugin.name)}")`})}

    ${plugin.name} @@ -487,9 +492,7 @@ const Helpers = { const container = dialog.domNode.querySelector(".contents"); container.innerHTML = `
  • ${__("Looking for plugins...")}
  • `; - const installed = [...document.querySelectorAll('*[data-plugin-name]')].map((p) => p.getAttribute('data-plugin-name')); - - xhr.json("backend.php", {op: "pref-prefs", method: "getAvailablePlugins", 'installed[]': installed}, (reply) => { + xhr.json("backend.php", {op: "pref-prefs", method: "getAvailablePlugins"}, (reply) => { dialog.entries = reply; dialog.render_contents(); }); @@ -502,7 +505,7 @@ const Helpers = {
     
    -
    +