From 9d77316c3aec2583b37567dd85e592787d47b646 Mon Sep 17 00:00:00 2001 From: Shaikha Al-Emadi Date: Fri, 5 Sep 2025 20:55:37 +0000 Subject: [PATCH 1/2] Fix selectReward complexity --- public/src/admin/extend/rewards.js | 54 ++++++++++++------- vendor/nodebb-theme-harmony-2.1.15/library.js | 2 +- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/public/src/admin/extend/rewards.js b/public/src/admin/extend/rewards.js index 25119c3a27..bb9e58daec 100644 --- a/public/src/admin/extend/rewards.js +++ b/public/src/admin/extend/rewards.js @@ -81,36 +81,50 @@ define('admin/extend/rewards', [ function selectReward(el) { const parent = el.parents('[data-rid]'); const div = parent.find('.inputs'); - let inputs; - let html = ''; + const selectedReward = getReward(el); + if (!selectedReward) return; + parent.attr('data-rid', selectedReward.rid); + + const inputs = selectedReward.inputs; + const html = inputsHtml(inputs); + if (!html) { + return alerts.error('[[admin/extend/rewards:alert.no-inputs-found]] ' + el.attr('data-selected')); + } + + div.html(html); + } + + //Helper function for selectReward to get the reward + function getReward(el) { const selectedReward = available.find(reward => reward.rid === el.attr('data-selected')); - if (selectedReward) { - inputs = selectedReward.inputs; - parent.attr('data-rid', selectedReward.rid); + if (!selectedReward) { + return null; } + return selectedReward; + } + //Helper function for selectReward to build the HTML + function inputsHtml(inputs) { if (!inputs) { - return alerts.error('[[admin/extend/rewards:alert.no-inputs-found]] ' + el.attr('data-selected')); - } + return alerts.error('[[admin/extend/rewards:alert.no-inputs-found]]'); + }; - inputs.forEach(function (input) { + return inputs.map(input => { + let html = ''; html += `