NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Swagbucks - sort gift cards by cashback
// @namespace https://openuserjs.org/users/zachhardesty7
// @author Zach Hardesty <zachhardesty7@users.noreply.github.com> (https://github.com/zachhardesty7)
// @description sorts all of the giftcard icons based on their cashback, highest first
// @copyright 2024, Zach Hardesty (https://zachhardesty.com/)
// @license GPL-3.0-only; http://www.gnu.org/licenses/gpl-3.0.txt
// @version 1.0.0
// @homepageURL https://github.com/zachhardesty7/tamper-monkey-scripts-collection/raw/master/swagbucks-sort-gift-cards-by-cashback.user.js
// @homepage https://github.com/zachhardesty7/tamper-monkey-scripts-collection/raw/master/swagbucks-sort-gift-cards-by-cashback.user.js
// @homepageURL https://openuserjs.org/scripts/zachhardesty7/Swagbucks_-_sort_gift_cards_by_cashback
// @homepage https://openuserjs.org/scripts/zachhardesty7/Swagbucks_-_sort_gift_cards_by_cashback
// @supportURL https://github.com/zachhardesty7/tamper-monkey-scripts-collection/issues
// @updateURL https://openuserjs.org/meta/zachhardesty7/Swagbucks_-_sort_gift_cards_by_cashback.meta.js
// @downloadURL https://openuserjs.org/src/scripts/zachhardesty7/Swagbucks_-_sort_gift_cards_by_cashback.user.js
// @match https://www.swagbucks.com/mygiftcardsplus
// ==/UserScript==
const CASHBACK_SELECTOR = ".giftCardCashback [data-var='num']"
async function main() {
const container = document.querySelector("#myGiftCardsPlusCardsContainer")
if (!container) {
console.warn("#myGiftCardsPlusCardsContainer container not found")
return
}
const cards = [...container.children]
cards.sort((a, b) => {
const aCashback = a.querySelector(CASHBACK_SELECTOR)?.textContent
const bCashback = b.querySelector(CASHBACK_SELECTOR)?.textContent
const aCashbackNum = aCashback ? Number.parseFloat(aCashback) : 0
const bCashbackNum = bCashback ? Number.parseFloat(bCashback) : 0
return bCashbackNum - aCashbackNum
})
// doesn't duplicate, just moves, see https://developer.mozilla.org/en-US/docs/Web/API/Node/appendChild#description
container.append(...cards)
}
main()