const ItemID = window.location.pathname.split('/')[2] const UserID = JSON.parse(window.localStorage.getItem('account_info')).ID const ItemGrid = document.getElementById('assets') var Settings; var Inventory = null; var Utilities; (async () => { Utilities = await import(chrome.runtime.getURL('/js/resources/utils.js')); Utilities = Utilities.default Update() })(); chrome.storage.sync.get(['PolyPlus_Settings'], function(result){ Settings = result.PolyPlus_Settings || Utilities.DefaultSettings; }); async function Update() { if (Settings.IRLPriceWithCurrencyOn === true) { Array.from(ItemGrid.children).forEach(element => { LoadIRLPrices(element) }); } if (Settings.StoreOwnTagOn === true) { Inventory = (await (await fetch('https://api.polytoria.com/v1/users/' + UserID + '/inventory?limit=50')).json()).inventory Array.from(ItemGrid.children).forEach(element => { LoadOwnedTags(element) }); } if (Settings.EventItemsCatOn === true) { EventItems() } } const observer = new MutationObserver(async function (list){ for (const record of list) { for (const element of record.addedNodes) { if (element.tagName === "DIV" && element.classList.value === 'mb-3 itemCardCont') { if (Settings.IRLPriceWithCurrencyOn === true) { LoadIRLPrices(element) } if (Settings.StoreOwnTagOn === true) { LoadOwnedTags(element) } } } observer.observe(ItemGrid, {attributes: false,childList: true,subtree: false}); } }); observer.observe(ItemGrid, {attributes: false,childList: true,subtree: false}); async function LoadIRLPrices(element) { //if (element.tagName !=) //if (element.tagName != "DIV") {return} if (element.querySelector('small.text-primary')) {return} const Parent = element.getElementsByTagName('small')[1] if (Parent.innerText === "") { return } const Span = document.createElement('span') Span.classList = 'text-muted polyplus-price-tag' Span.style.fontSize = '0.7rem' const Price = Parent.innerText.split(' ')[1] const IRLResult = await Utilities.CalculateIRL(Price, Settings.IRLPriceWithCurrencyCurrency) Span.innerText = "($" + IRLResult.result + " " + IRLResult.display + ")" Parent.appendChild(Span) } function LoadOwnedTags(element) { let Item = CheckInventory(parseInt(element.querySelector('[href^="/store/"]').getAttribute('href').split('/')[2])) if (Item !== null) { const Tag = document.createElement('span') Tag.classList = 'badge bg-primary polyplus-own-tag' Tag.style = 'position: absolute;font-size: 0.7rem;top: 0px;left: 0px;padding: 5.5px;border-top-left-radius: var(--bs-border-radius-lg)!important;border-top-right-radius: 0px;border-bottom-left-radius: 0px;font-size: 0.65rem;' if (Item.asset.isLimited === false) { Tag.innerText = "owned" } else { Tag.innerHTML = 'owned
#' + Item.serial } element.getElementsByTagName('img')[0].parentElement.appendChild(Tag) } } function CheckInventory(id) { let Item = null Inventory.forEach(element => { if (element.asset.id === id) { Item = element } }) return Item } function EventItems() { const Categories = document.getElementById('store-categories').children[0] const Selector = document.createElement('div') Selector.classList = 'form-check store-category-check fw-bold' Selector.style.borderColor = '#B008B0' Selector.innerHTML = ` ` Categories.appendChild(Selector) const CategoryDiv = document.createElement('div') ItemGrid.parentElement.insertBefore(CategoryDiv, ItemGrid) let EventData = null let Events = [] let Groups = [] Array.from(Categories.children).forEach(selector => { if (selector !== Selector) { selector.children[0].addEventListener('click', function() { ItemGrid.innerHTML = `` ItemGrid.classList.add('itemgrid') }) } }) Selector.children[0].addEventListener('click', async function() { EventItemsEnabled = true Array.from(Categories.children).forEach(selector => { selector.classList.remove('active') }) Selector.classList.add('active') if (EventData === null) { EventData = await (await fetch('https://polyplus.vercel.app/data/eventItems.json')).json() Object.values(EventData.eventDetails).forEach((x, index) => {Groups.push({ ...x, items: EventData.items.filter((x) => x.event === Object.keys(EventData.eventDetails)[index]) })}) while (Events.length > 0) { Groups.push(Events.splice(0, 3)) } } console.log(Groups) ItemGrid.classList.remove('itemgrid') ItemGrid.innerHTML = ` ${ Groups.map((x, index) => `
${x.date}
${x.name}
${ x.items.map((x) => `
${x.name}
`).join('') }
`).join('') } ` }) }