// ==UserScript== // @name Alienware Arena - Daily Quests // @match https://*.alienwarearena.com/* // @icon https://eu.alienwarearena.com/favicon.ico // @version 1.0 // @author eegee // @download https://gist.github.com/eegeeZA/823491a8883f2eb0296f4122fe632122/raw/alienware-arena_daily-quests.user.js // @namespace https://gist.github.com/eegeeZA/823491a8883f2eb0296f4122fe632122 // @description Quick link to thread or solution of the Daily Quest. // @downloadURL https://update.greasyfork.icu/scripts/424843/Alienware%20Arena%20-%20Daily%20Quests.user.js // @updateURL https://update.greasyfork.icu/scripts/424843/Alienware%20Arena%20-%20Daily%20Quests.meta.js // ==/UserScript== $(function () { const questTitle = $(".quest-title.text-info"); if (!questTitle.length) { return; } const controlsId = "daily-controls"; questTitle.after(``); questTitle.wrap(``); let cleanedQuestTitle = questTitle .html() .trim() .replace(/[^a-z ]/gi, ""); const rankedResults = []; $.get(`/search/forum_topic/${encodeURI(`Daily ${cleanedQuestTitle}`)}`) .then(populateRankedResults) .then(() => Promise.all( rankedResults.map((result) => $.get(result.link).catch(() => "")) ) ) .then((subResults) => subResults.forEach( (subResult, index) => (rankedResults[index].nestedLink = $(subResult) .find(".discussion__op-content.ucf__content a") .attr("href")) ) ) .then(() => updateControls(0)); function populateRankedResults(searchResults) { $(searchResults) .find(".search-results__item") .each((_, result) => { const link = $(result).closest("a").attr("href"); const title = $(result).find("h1").html(); const [, replies] = $(result) .html() .match(/Replies: (\d+)/); rankedResults.push({ link, title, replies: Number(replies) }); }); rankedResults.sort((a, b) => { if (a.title.includes("Solved") && !b.title.includes("Solved")) { return -1; } if (!a.title.includes("Solved") && b.title.includes("Solved")) { return 1; } return b.replies - a.replies; }); } function updateControls(index) { let controls = $(`#${controlsId}`); if (!rankedResults.length) { controls.replaceWith(` (no results) `); return; } const previousButton = "daily-previous"; const nextButton = "daily-next"; controls = $(` ${index + 1}/${ rankedResults.length } `).replaceAll(controls); if (index > 0) { $(`#${previousButton}`) .on("click", () => updateControls(index - 1)) .addClass("text-success"); } if (index < rankedResults.length - 1) { $(`#${nextButton}`) .on("click", () => updateControls(index + 1)) .addClass("text-success"); } let rankedResult = rankedResults[index]; questTitle.closest("a").attr("href", rankedResult.link); if (rankedResult.nestedLink) { controls.append( `sub-link` ); } } });