diff --git a/js/account/transactions.js b/js/account/transactions.js index 62a34de..c6fed09 100755 --- a/js/account/transactions.js +++ b/js/account/transactions.js @@ -1,11 +1,19 @@ setTimeout(function () {}, 100) +/* let Currencies; LoadFile(chrome.runtime.getURL('js/resources/currencies.json'), function(text){ Currencies = JSON.parse(text) console.log(new Date(Currencies.Date).toLocaleDateString("en-US", {day:"numeric",month:"long",year:"numeric"}), Currencies) }) +*/ + +let Utilities; +(async () => { + Utilities = await import(chrome.runtime.getURL('/js/resources/utils.js')); + Utilities = Utilities.default +})(); let Nav = document.querySelector('.nav-pills') let DIV = document.createElement('div') @@ -21,6 +29,7 @@ DIV.innerHTML = ` + ` Nav.appendChild(document.createElement('hr')) Nav.appendChild(DIV) @@ -39,9 +49,9 @@ let Type = document.getElementById('polyplus-brickconverter-type') chrome.storage.sync.get(['PolyPlus_Settings'], function(result){ Type.selectedIndex = result.PolyPlus_Settings.IRLPriceWithCurrencyCurrency || 0 }); -let Package = document.getElementById('polyplus-brickconverter-package') +//let Package = document.getElementById('polyplus-brickconverter-package') -Input.addEventListener('change', function(){ +Input.addEventListener('input', function(){ Update() }); @@ -49,48 +59,18 @@ Type.addEventListener('change', function(){ Update() }); +/* Package.addEventListener('change', function(){ Update() }); +*/ -function Update(){ - let DISPLAY = Type.options[Type.selectedIndex].value - let IRL = (parseInt(Input.value.replace(/,/g, '')) * Currencies.Data[Package.selectedIndex][DISPLAY]).toFixed(2) - /* - var IRL; - var DISPLAY; - switch (Type.selectedIndex) { - case 0: - IRL = (parseInt(Input.value.replace(/,/g, '')) * 0.0099).toFixed(2) - DISPLAY = 'USD' - break - case 1: - IRL = (parseInt(Input.value.replace(/,/g, '')) * 0.009).toFixed(2) - DISPLAY = 'EUR' - break - case 2: - IRL = (parseInt(Input.value.replace(/,/g, '')) * 0.0131).toFixed(2) - DISPLAY = 'CAD' - break - case 3: - IRL = (parseInt(Input.value.replace(/,/g, '')) * 0.0077).toFixed(2) - DISPLAY = 'GBP' - break - case 4: - IRL = (parseInt(Input.value.replace(/,/g, '')) * 0.1691).toFixed(2) - DISPLAY = 'MXN' - break - case 5: - IRL = (parseInt(Input.value.replace(/,/g, '')) * 0.0144).toFixed(2) - DISPLAY = 'AUD' - break - case 6: - IRL = (parseInt(Input.value.replace(/,/g, '')) * 0.2338).toFixed(2) - DISPLAY = 'TRY' - break - } - */ - Output.value = "$" + IRL + " " + DISPLAY +async function Update(){ + //let DISPLAY = Type.options[Type.selectedIndex].value + //let IRL = (parseInt(Input.value.replace(/,/g, '')) * Currencies.Data[Package.selectedIndex][DISPLAY]).toFixed(2) + const Result = await Utilities.CalculateIRL(Input.value, Type.selectedIndex) + console.log(Input.value, Type.options[Type.selectedIndex].value, Result) + Output.value = "$" + Result.bricks + " " + Result.display } function LoadFile(path, callback) { diff --git a/js/everywhere.js b/js/everywhere.js index e6e7665..7b1fb46 100755 --- a/js/everywhere.js +++ b/js/everywhere.js @@ -1,258 +1,179 @@ var Settings; -const ExpectedSettings = { - PinnedGamesOn: false, - ForumMentsOn: false, - BestFriendsOn: false, - ImprovedFrListsOn: false, - IRLPriceWithCurrencyOn: true, - IRLPriceWithCurrencyCurrency: 0, - IRLPriceWithCurrencyPackage: 0, - HideNotifBadgesOn: true, - StoreOwnTagOn: true, - ThemeCreatorOn: false, - ThemeCreator: { - BGColor: null, - BGImage: null, - BGImageSize: 'fit', - PrimaryTextColor: null, - SecondaryTextColor: null, - LinkTextColor: null, - WebsiteLogo: null - }, - ModifyNavOn: false, - ModifyNav: [ - { - Label: "Play", - Link: "https://polytoria.com/places" - }, - { - Label: "Store", - Link: "https://polytoria.com/store" - }, - { - Label: "Guilds", - Link: "https://polytoria.com/guilds" - }, - { - Label: "People", - Link: "https://polytoria.com/users" - }, - { - Label: "Forum", - Link: "https://polytoria.com/forum" - } - ], - MoreSearchFiltersOn: true, - ApplyMembershipThemeOn: false, - ApplyMembershipThemeTheme: 0, - ForumMarkOn: true, - MultiCancelOutTradesOn: true, - ItemWishlistOn: true, - HideUpgradeBtnOn: false -} let Theme = null; -chrome.storage.sync.get(["PolyPlus_Settings"], function(result) { - // Merge settings and expected settings to make sure all keys exist - let RawSettings = result.PolyPlus_Settings - Settings = MergeObjects(RawSettings || ExpectedSettings, ExpectedSettings); - //chrome.storage.sync.set({ 'PolyPlus_Settings': Settings, arrayOrder: true }, function() {}); +(async () => { + let Utilities = await import(chrome.runtime.getURL('/js/resources/utils.js')); + Utilities = Utilities.default - // If theme exists, create a style element to represent it - if (Settings.ThemeCreatorOn && Settings.ThemeCreatorOn === true) { - Theme = document.createElement('style') - switch (Settings.ThemeCreator.BGImageSize) { - case 0: - Settings.ThemeCreator.BGImageSize = 'fit' - break - case 1: - Settings.ThemeCreator.BGImageSize = 'cover' - break - case 2: - Settings.ThemeCreator.BGImageSize = 'contain' - break + chrome.storage.sync.get(["PolyPlus_Settings"], function(result) { + // Merge settings and expected settings to make sure all keys exist + const RawSettings = result.PolyPlus_Settings + Settings = MergeObjects(RawSettings || Utilities.DefaultSettings, Utilities.DefaultSettings); + + // If theme exists, create a style element to represent it + if (Settings.ThemeCreatorOn && Settings.ThemeCreatorOn === true) { + Theme = document.createElement('style') + switch (Settings.ThemeCreator.BGImageSize) { + case 0: + Settings.ThemeCreator.BGImageSize = 'fit' + break + case 1: + Settings.ThemeCreator.BGImageSize = 'cover' + break + case 2: + Settings.ThemeCreator.BGImageSize = 'contain' + break + } + Theme.innerHTML = ` + :root { + --polyplus-navbgcolor: ${Settings.ThemeCreator.NavBGColor}; + --polyplus-navbordercolor: ${Settings.ThemeCreator.NavBorderColor}; + --polyplus-navitemcolor: ${Settings.ThemeCreator.NavItemColor}; + --polyplus-sidebarbgcolor: ${Settings.ThemeCreator.SideBGColor}; + --polyplus-sidebarbordercolor: ${Settings.ThemeCreator.SideBorderColor}; + --polyplus-sidebaritembgcolor: ${Settings.ThemeCreator.SideItemBGColor}; + --polyplus-sidebaritembordercolor: ${Settings.ThemeCreator.SideItemBorderColor}; + --polyplus-sidebaritemcolor: ${Settings.ThemeCreator.SideItemColor}; + --polyplus-sidebaritemlabelcolor: ${Settings.ThemeCreator.SideItemLabelColor}; + --polyplus-bgcolor: ${Settings.ThemeCreator.BGColor}; + --polyplus-bgimage: url(${Settings.ThemeCreator.BGImage}); + --polyplus-bgimagesize: ${Settings.ThemeCreator.BGImageSize}; + --polyplus-primarytextcolor: ${Settings.ThemeCreator.PrimaryTextColor}; + --polyplus-secondarytextcolor: ${Settings.ThemeCreator.SecondaryTextColor}; + --polyplus-linktextcolor: ${Settings.ThemeCreator.LinkTextColor}; + --polyplus-linkhoveredtextcolor: ${Settings.ThemeCreator.LinkHoveredTextColor}; + --polyplus-linkfocusedtextcolor: ${Settings.ThemeCreator.LinkFocusedTextColor}; + --polyplus-linkvisitedtextcolor: ${Settings.ThemeCreator.LinkVisitedTextColor}; + --polyplus-cardheadbgcolor: ${Settings.ThemeCreator.CardHeadBGColor}; + --polyplus-cardbodybgcolor: ${Settings.ThemeCreator.CardBodyBGColor}; + --polyplus-cardbordercolor: ${Settings.ThemeCreator.CardBorderColor}; + } + + nav { + background-color: var(--polyplus-navbgcolor) !important; + border-bottom: 1px solid var(--polyplus-navbordercolor) !important; + } + + .nav-sidebar { + background-color: var(--polyplus-sidebarbgcolor) !important; + border-right: 1px solid var(--polyplus-sidebarbordercolor) !important; + } + + #app { + background-color: var(--polyplus-bgcolor) !important; + background-image: var(--polyplus-bgimage) !important; + background-size var(--polyplus-bgimagesize) + color: var(--polyplus-primarytextcolor) !important; + } + + .text-muted { + color: var(--polyplus-secondarytextcolor) !important; + } + + a { + color: var(--polyplus-linktextcolor) !important; + } + + a:hover { + color: var(--polyplus-linkhoveredtextcolor) !important; + } + + a:focus { + color: var(--polyplus-linkfocusedtextcolor) !important; + } + + /* + a:visited { + color: var(--polyplus-linkvisitedtextcolor) !important; + } + */ + + .card-header { + background-color: var(--polyplus-cardheadbgcolor) !important; + } + + .card { + background-color: var(--polyplus-cardbodybgcolor) !important; + border-color: var(--polyplus-cardbordercolor) !important; + } + + nav a.nav-link { + color: var(--polyplus-navitemcolor) !important; + } + + .nav-sidebar .nav-sidebar-button { + background-color: var(--polyplus-sidebaritembgcolor) !important; + border-color: var(--polyplus-sidebaritembordercolor) !important; + color: var(--polyplus-sidebaritemcolor) !important; + } + + .nav-sidebar-text { + color: var(--polyplus-sidebaritemlabelcolor) !important; + } + ` } - Theme.innerHTML = ` - :root { - --polyplus-navbgcolor: ${Settings.ThemeCreator.NavBGColor}; - --polyplus-navbordercolor: ${Settings.ThemeCreator.NavBorderColor}; - --polyplus-navitemcolor: ${Settings.ThemeCreator.NavItemColor}; - --polyplus-sidebarbgcolor: ${Settings.ThemeCreator.SideBGColor}; - --polyplus-sidebarbordercolor: ${Settings.ThemeCreator.SideBorderColor}; - --polyplus-sidebaritembgcolor: ${Settings.ThemeCreator.SideItemBGColor}; - --polyplus-sidebaritembordercolor: ${Settings.ThemeCreator.SideItemBorderColor}; - --polyplus-sidebaritemcolor: ${Settings.ThemeCreator.SideItemColor}; - --polyplus-sidebaritemlabelcolor: ${Settings.ThemeCreator.SideItemLabelColor}; - --polyplus-bgcolor: ${Settings.ThemeCreator.BGColor}; - --polyplus-bgimage: url(${Settings.ThemeCreator.BGImage}); - --polyplus-bgimagesize: ${Settings.ThemeCreator.BGImageSize}; - --polyplus-primarytextcolor: ${Settings.ThemeCreator.PrimaryTextColor}; - --polyplus-secondarytextcolor: ${Settings.ThemeCreator.SecondaryTextColor}; - --polyplus-linktextcolor: ${Settings.ThemeCreator.LinkTextColor}; - --polyplus-linkhoveredtextcolor: ${Settings.ThemeCreator.LinkHoveredTextColor}; - --polyplus-linkfocusedtextcolor: ${Settings.ThemeCreator.LinkFocusedTextColor}; - --polyplus-linkvisitedtextcolor: ${Settings.ThemeCreator.LinkVisitedTextColor}; - --polyplus-cardheadbgcolor: ${Settings.ThemeCreator.CardHeadBGColor}; - --polyplus-cardbodybgcolor: ${Settings.ThemeCreator.CardBodyBGColor}; - --polyplus-cardbordercolor: ${Settings.ThemeCreator.CardBorderColor}; + }); + + document.addEventListener('DOMContentLoaded', async function() { + if (document.getElementsByClassName('card-header')[0] && document.getElementsByClassName('card-header')[0].innerText === ' Page not found') { + return } - - nav { - background-color: var(--polyplus-navbgcolor) !important; - border-bottom: 1px solid var(--polyplus-navbordercolor) !important; - } - - .nav-sidebar { - background-color: var(--polyplus-sidebarbgcolor) !important; - border-right: 1px solid var(--polyplus-sidebarbordercolor) !important; - } - - #app { - background-color: var(--polyplus-bgcolor) !important; - background-image: var(--polyplus-bgimage) !important; - background-size var(--polyplus-bgimagesize) - color: var(--polyplus-primarytextcolor) !important; - } - - .text-muted { - color: var(--polyplus-secondarytextcolor) !important; - } - - a { - color: var(--polyplus-linktextcolor) !important; - } - - a:hover { - color: var(--polyplus-linkhoveredtextcolor) !important; - } - - a:focus { - color: var(--polyplus-linkfocusedtextcolor) !important; - } - - /* - a:visited { - color: var(--polyplus-linkvisitedtextcolor) !important; - } - */ - - .card-header { - background-color: var(--polyplus-cardheadbgcolor) !important; - } - - .card { - background-color: var(--polyplus-cardbodybgcolor) !important; - border-color: var(--polyplus-cardbordercolor) !important; - } - - nav a.nav-link { - color: var(--polyplus-navitemcolor) !important; - } - - .nav-sidebar .nav-sidebar-button { - background-color: var(--polyplus-sidebaritembgcolor) !important; - border-color: var(--polyplus-sidebaritembordercolor) !important; - color: var(--polyplus-sidebaritemcolor) !important; - } - - .nav-sidebar-text { - color: var(--polyplus-sidebaritemlabelcolor) !important; - } - ` - } -}); - -document.addEventListener('DOMContentLoaded', function() { - if (document.getElementsByClassName('card-header')[0] && document.getElementsByClassName('card-header')[0].innerText === ' Page not found') { - return - } - - // Check if Theme Exists, if so Load It - if (Settings.ThemeCreatorOn && Settings.ThemeCreatorOn === true) { - if (!(Settings.ThemeCreator.WebsiteLogo === null)) { - document.querySelector('.nav-sidebar img').setAttribute('src', Settings.ThemeCreator.WebsiteLogo) - } - } - if (Settings.ThemeCreatorOn && Settings.ThemeCreatorOn === true && Theme != null) { - document.body.prepend(Theme) - } - - // Define Data - const UserData = { - Username: document.querySelector('a.text-reset.text-decoration-none[href^="/users"]').innerText.replace(/\s+/g,''), - ID: document.querySelector('.text-reset.text-decoration-none[href^="/users/"]').getAttribute('href').split('/')[2], - Bricks: document.querySelector('.brickBalanceCont').innerText.replace(/\s+/g,'') - } - - window.localStorage.setItem('account_info', JSON.stringify(UserData)) - document.body.setAttribute('data-URL', window.location.href) - - // Add PolyPlus Settings link to Sidebar - const Parent = document.querySelector('ul.nav.nav-flush') - const Clone = Parent.querySelectorAll('li.nav-item')[0].cloneNode(true) - Clone.getElementsByTagName('a')[0].href = '/my/settings/polyplus' - Clone.getElementsByTagName('span')[0].innerText = "Poly+" - const Icon = Clone.querySelector('i') - Icon.classList = 'fa-regular fa-sparkles' - - if (Settings.ModifyNavOn && Settings.ModifyNavOn === true) { - let NavbarItems = document.querySelectorAll('#main-content nav.navbar .nav-link') - let Needed = [NavbarItems[11],NavbarItems[12],NavbarItems[13],NavbarItems[14],NavbarItems[15]] - for (let i = 0; i < Settings.ModifyNav.length; i++) { - if (Settings.ModifyNav[i].Label != null) { - Needed[i].children[1].innerText = Settings.ModifyNav[i].Label - Needed[i].href = Settings.ModifyNav[i].Link + + // Check if Theme Exists, if so Load It + if (Settings.ThemeCreatorOn && Settings.ThemeCreatorOn === true) { + if (!(Settings.ThemeCreator.WebsiteLogo === null)) { + document.querySelector('.nav-sidebar img').setAttribute('src', Settings.ThemeCreator.WebsiteLogo) } } - } - - if (Settings.HideUpgradeBtnOn && Settings.HideUpgradeBtnOn === true) { - document.querySelector('.nav-sidebar a[href="/upgrade"].nav-link.py-1.nav-sidebar-link').remove() - } - - if (Settings.IRLPriceWithCurrencyOn && Settings.IRLPriceWithCurrencyOn === true) { - var IRL; - var DISPLAY; - switch (Settings.IRLPriceWithCurrencyCurrency) { - case 0: - IRL = (UserData.Bricks.replace(/,/g, '') * 0.0099).toFixed(2) - DISPLAY = 'USD' - break - case 1: - IRL = (UserData.Bricks.replace(/,/g, '') * 0.009).toFixed(2) - DISPLAY = 'EUR' - break - case 2: - IRL = (UserData.Bricks.replace(/,/g, '') * 0.0131).toFixed(2) - DISPLAY = 'CAD' - break - case 3: - IRL = (UserData.Bricks.replace(/,/g, '') * 0.0077).toFixed(2) - DISPLAY = 'GBP' - break - case 4: - IRL = (UserData.Bricks.replace(/,/g, '') * 0.1691).toFixed(2) - DISPLAY = 'MXN' - break - case 5: - IRL = (UserData.Bricks.replace(/,/g, '') * 0.0144).toFixed(2) - DISPLAY = 'AUD' - break - case 6: - IRL = (UserData.Bricks.replace(/,/g, '') * 0.2338).toFixed(2) - DISPLAY = 'TRY' - break + if (Settings.ThemeCreatorOn && Settings.ThemeCreatorOn === true && Theme != null) { + document.body.prepend(Theme) } - let BrickBalanceCount = [document.querySelector('.text-success .brickBalanceCount'), document.querySelector('.text-success .brickBalanceCont')] - BrickBalanceCount.forEach(element => { - element.innerText = element.innerText + ` ($${IRL} ${DISPLAY})` - }); - } - - if (Settings.HideNotifBadgesOn && Settings.HideNotifBadgesOn === true) { - document.querySelectorAll('.notif-nav.notif-sidebar').forEach(element => {element.remove();}); - } -}); + + // Define Data + const UserData = { + Username: document.querySelector('a.text-reset.text-decoration-none[href^="/users"]').innerText.replace(/\s+/g,''), + ID: document.querySelector('.text-reset.text-decoration-none[href^="/users/"]').getAttribute('href').split('/')[2], + Bricks: document.querySelector('.brickBalanceCont').innerText.replace(/\s+/g,'') + } + + window.localStorage.setItem('account_info', JSON.stringify(UserData)) + document.body.setAttribute('data-URL', window.location.href) + + // Add PolyPlus Settings link to Sidebar + const Parent = document.querySelector('ul.nav.nav-flush') + const Clone = Parent.querySelectorAll('li.nav-item')[0].cloneNode(true) + Clone.getElementsByTagName('a')[0].href = '/my/settings/polyplus' + Clone.getElementsByTagName('span')[0].innerText = "Poly+" + const Icon = Clone.querySelector('i') + Icon.classList = 'fa-regular fa-sparkles' + + if (Settings.ModifyNavOn && Settings.ModifyNavOn === true) { + let NavbarItems = document.querySelectorAll('.navbar-nav.me-auto a.nav-link[href]') + let Needed = [NavbarItems[10],NavbarItems[11],NavbarItems[12],NavbarItems[13],NavbarItems[14]] + for (let i = 0; i < Settings.ModifyNav.length; i++) { + if (Settings.ModifyNav[i].Label != null) { + console.log(Needed[i], Needed[i].children[1]) + Needed[i].children[1].innerText = Settings.ModifyNav[i].Label + Needed[i].href = Settings.ModifyNav[i].Link + } + } + } + + if (Settings.HideUpgradeBtnOn && Settings.HideUpgradeBtnOn === true) { + document.querySelector('.nav-sidebar a[href="/upgrade"].nav-link.py-1.nav-sidebar-link').remove() + } + + if (Settings.IRLPriceWithCurrencyOn && Settings.IRLPriceWithCurrencyOn === true) { + const IRL = await Utilities.CalculateIRL(UserData.Bricks, Settings.IRLPriceWithCurrencyCurrency) + const BrickBalanceCount = [document.querySelector('.text-success .brickBalanceCount'), document.querySelector('.text-success .brickBalanceCont')] + BrickBalanceCount.forEach(element => {element.innerText = element.innerText + ` ($${IRL.bricks} ${IRL.display})`}); + } + + if (Settings.HideNotifBadgesOn && Settings.HideNotifBadgesOn === true) { + document.querySelectorAll('.notif-nav.notif-sidebar').forEach(element => {element.remove();}); + } + }); +})(); function MergeObjects(obj1, obj2) { var mergedObj = {}; diff --git a/js/polyplus-settings.js b/js/polyplus-settings.js index c8ea396..3ebce70 100755 --- a/js/polyplus-settings.js +++ b/js/polyplus-settings.js @@ -1,7 +1,5 @@ const InExtensionSettings = (window.location.pathname.split('/')[3] === "polyplus") -if (InExtensionSettings === true) { - window.location.href = chrome.runtime.getURL('settings.html') -} +if (InExtensionSettings === true) { window.location.href = chrome.runtime.getURL('settings.html') } document.addEventListener('DOMContentLoaded', function(){ const Nav = document.getElementsByClassName('nav nav-pills')[0] diff --git a/js/resources/utils.js b/js/resources/utils.js index 34b95fc..4da5569 100644 --- a/js/resources/utils.js +++ b/js/resources/utils.js @@ -1,95 +1,105 @@ -export default { - DefaultSettings: { - PinnedGamesOn: false, - ForumMentsOn: false, - BestFriendsOn: false, - ImprovedFrListsOn: false, - IRLPriceWithCurrencyOn: true, - IRLPriceWithCurrencyCurrency: 0, - IRLPriceWithCurrencyPackage: 0, - HideNotifBadgesOn: true, - SimplifiedProfileURLsOn: true, - StoreOwnTagOn: true, - ThemeCreatorOn: false, - ThemeCreator: { - BGColor: null, - BGImage: null, - BGImageSize: 'fit', - PrimaryTextColor: null, - SecondaryTextColor: null, - LinkTextColor: null, - WebsiteLogo: null - }, - ModifyNavOn: false, - ModifyNav: [ - { - Label: "Play", - Link: "https://polytoria.com/places" - }, - { - Label: "Store", - Link: "https://polytoria.com/store" - }, - { - Label: "Guilds", - Link: "https://polytoria.com/guilds" - }, - { - Label: "People", - Link: "https://polytoria.com/users" - }, - { - Label: "Forum", - Link: "https://polytoria.com/forum" - } - ], - MoreSearchFiltersOn: true, - ApplyMembershipThemeOn: false, - ApplyMembershipThemeTheme: 0, - ForumMarkOn: true, - MultiCancelOutTradesOn: true, - ItemWishlistOn: true, - HideUpgradeBtnOn: false - }, - CalculateIRL: async function(bricks, to) { - const response = await fetch(chrome.runtime.getURL('/js/resources/currencies.json')) - if (!response.ok) { - throw new Error('Getting currency data failure') - } - const data = await response.json() +/* +HOW TO USE IN CONTENT SCRIPTS: - let IRL; - let DISPLAY; - switch (to) { - case 0: - IRL = (bricks.replace(/,/g, '') * 0.0099).toFixed(2) - DISPLAY = 'USD' - break - case 1: - IRL = (bricks.replace(/,/g, '') * 0.009).toFixed(2) - DISPLAY = 'EUR' - break - case 2: - IRL = (bricks.replace(/,/g, '') * 0.0131).toFixed(2) - DISPLAY = 'CAD' - break - case 3: - IRL = (bricks.replace(/,/g, '') * 0.0077).toFixed(2) - DISPLAY = 'GBP' - break - case 4: - IRL = (bricks.replace(/,/g, '') * 0.1691).toFixed(2) - DISPLAY = 'MXN' - break - case 5: - IRL = (bricks.replace(/,/g, '') * 0.0144).toFixed(2) - DISPLAY = 'AUD' - break - case 6: - IRL = (bricks.replace(/,/g, '') * 0.2338).toFixed(2) - DISPLAY = 'TRY' - break - } - return {bricks: IRL, display: DISPLAY} +(async () => { + let Utilities = await import(chrome.runtime.getURL('/js/resources/utils.js')); + Utilities = Utilities.default +})(); +*/ + +export default { + DefaultSettings: { + PinnedGamesOn: true, + ForumMentsOn: true, + BestFriendsOn: false, + ImprovedFrListsOn: false, + IRLPriceWithCurrencyOn: true, + IRLPriceWithCurrencyCurrency: 0, + IRLPriceWithCurrencyPackage: 0, + HideNotifBadgesOn: false, + StoreOwnTagOn: true, + ThemeCreatorOn: false, + ThemeCreator: { + BGColor: null, + BGImage: null, + BGImageSize: 'fit', + PrimaryTextColor: null, + SecondaryTextColor: null, + LinkTextColor: null, + WebsiteLogo: null + }, + ModifyNavOn: false, + ModifyNav: [ + { + Label: "Play", + Link: "https://polytoria.com/places" + }, + { + Label: "Store", + Link: "https://polytoria.com/store" + }, + { + Label: "Guilds", + Link: "https://polytoria.com/guilds" + }, + { + Label: "People", + Link: "https://polytoria.com/users" + }, + { + Label: "Forum", + Link: "https://polytoria.com/forum" + } + ], + MoreSearchFiltersOn: true, + ApplyMembershipThemeOn: false, + ApplyMembershipThemeTheme: 0, + MultiCancelOutTradesOn: true, + ItemWishlistOn: true, + HideUpgradeBtnOn: false + }, + CalculateIRL: async function(bricks, to, brickPackage) { + /* + const response = await fetch(chrome.runtime.getURL('/js/resources/currencies.json')) + if (!response.ok) { + throw new Error('Getting currency data failure') } + const data = await response.json() + */ + + let IRL; + let DISPLAY; + //const UnitPrice = data.Data[brickPackage][to] + switch (to) { + case 0: + IRL = (bricks.replace(/,/g, '') * 0.0099).toFixed(2) + DISPLAY = 'USD' + break + case 1: + IRL = (bricks.replace(/,/g, '') * 0.009).toFixed(2) + DISPLAY = 'EUR' + break + case 2: + IRL = (bricks.replace(/,/g, '') * 0.0131).toFixed(2) + DISPLAY = 'CAD' + break + case 3: + IRL = (bricks.replace(/,/g, '') * 0.0077).toFixed(2) + DISPLAY = 'GBP' + break + case 4: + IRL = (bricks.replace(/,/g, '') * 0.1691).toFixed(2) + DISPLAY = 'MXN' + break + case 5: + IRL = (bricks.replace(/,/g, '') * 0.0144).toFixed(2) + DISPLAY = 'AUD' + break + case 6: + IRL = (bricks.replace(/,/g, '') * 0.2338).toFixed(2) + DISPLAY = 'TRY' + break + } + return {bricks: IRL, display: DISPLAY} + } } \ No newline at end of file diff --git a/js/store/item-view.js b/js/store/item-view.js index 58cd3bc..792ed50 100755 --- a/js/store/item-view.js +++ b/js/store/item-view.js @@ -1,28 +1,30 @@ const ItemID = window.location.pathname.split('/')[2] +var Utilities; + +var Settings; var ItemWishlist; var PurchaseBtn; var WishlistBtn; -setTimeout(function () { +(async () => { + if (!(window.location.href.split('/')[4])) {return} + + Utilities = await import(chrome.runtime.getURL('/js/resources/utils.js')); + Utilities = Utilities.default + if (!(window.location.href.split('/')[4])) {return} chrome.storage.sync.get(['PolyPlus_Settings'], function(result){ - var Settings = result.PolyPlus_Settings || { - IRLPriceWithCurrencyOn: false, - IRLPriceWithCurrencyCurrency: 0, - ItemWishlistOn: true - } + Settings = result.PolyPlus_Settings || {} PurchaseBtn = document.getElementsByClassName('btn btn-outline-success')[0] - console.log(PurchaseBtn) if (Settings.IRLPriceWithCurrencyOn === true){ IRLPrice() } if (Settings.ItemWishlistOn === true && !(PurchaseBtn.getAttribute('disabled'))) { - console.log('AAAA') HandleItemWishlist() } }) -}, 100) +})(); chrome.storage.onChanged.addListener(function(changes, namespace) { if ('PolyPlus_ItemWishlist' in changes) { @@ -53,46 +55,15 @@ chrome.storage.onChanged.addListener(function(changes, namespace) { } }); -function IRLPrice() { +async function IRLPrice() { if (!(PurchaseBtn.getAttribute('disabled'))) { - let Price = PurchaseBtn.getAttribute('data-price').replace(/,/g, '') - let Span = document.createElement('span') + const Price = PurchaseBtn.getAttribute('data-price') + const Span = document.createElement('span') Span.classList = 'text-muted polyplus-own-tag' Span.style.fontSize = '0.7rem' Span.style.fontWeight = 'normal' - let IRL; - let DISPLAY; - switch (Settings.IRLPriceWithCurrencyCurrency) { - case 0: - IRL = (Price * 0.0099).toFixed(2) - DISPLAY = 'USD' - break - case 1: - IRL = (Price * 0.009).toFixed(2) - DISPLAY = 'EUR' - break - case 2: - IRL = (Price * 0.0131).toFixed(2) - DISPLAY = 'CAD' - break - case 3: - IRL = (Price * 0.0077).toFixed(2) - DISPLAY = 'GBP' - break - case 4: - IRL = (Price * 0.1691).toFixed(2) - DISPLAY = 'MXN' - break - case 5: - IRL = (Price * 0.0144).toFixed(2) - DISPLAY = 'AUD' - break - case 6: - IRL = (Price * 0.2338).toFixed(2) - DISPLAY = 'TRY' - break - } - Span.innerText = "($" + IRL + " " + DISPLAY + ")" + const Result = await Utilities.CalculateIRL(Price, Settings.IRLPriceWithCurrencyCurrency) + Span.innerText = "($" + Result.bricks + " " + Result.display + ")" PurchaseBtn.appendChild(Span) } } diff --git a/js/store/store.js b/js/store/store.js index 7dfb80a..933226f 100755 --- a/js/store/store.js +++ b/js/store/store.js @@ -1,13 +1,25 @@ -setTimeout(function () {}, 100) -var Settings = {IRLPriceWithCurrencyOn: true, IRLPriceWithCurrencyCurrency: 0, StoreOwnTagOn: true}; -var UserID = JSON.parse(window.localStorage.getItem('account_info')).ID -var ItemGrid = document.getElementById('assets') +const UserID = JSON.parse(window.localStorage.getItem('account_info')).ID + +var Settings; + +var Utilities; +(async () => { + Utilities = await import(chrome.runtime.getURL('/js/resources/utils.js')); + Utilities = Utilities.default + + Update() +})(); + +const ItemGrid = document.getElementById('assets') var Inventory = []; + chrome.storage.sync.get(['PolyPlus_Settings'], function(result){ - Settings = result.PolyPlus_Settings; + Settings = result.PolyPlus_Settings || Utilities.DefaultSettings; + console.log(Settings) }); function Update() { + console.log('update') if (Settings.IRLPriceWithCurrencyOn === true) { Array.from(ItemGrid.children).forEach(element => {LoadIRLPrices(element)}); } @@ -15,9 +27,7 @@ function Update() { const observer = new MutationObserver(async function (list){ for (const record of list) { - console.log('record') for (const element of record.addedNodes) { - console.log('element', element.tagName, element.classList) if (element.tagName === "DIV" && element.classList.value === 'mb-3 itemCardCont') { if (Settings.IRLPriceWithCurrencyOn === true) {LoadIRLPrices(element)} if (Settings.StoreOwnTagOn === true) { @@ -49,56 +59,23 @@ const observer = new MutationObserver(async function (list){ observer.observe(ItemGrid, {attributes: false,childList: true,subtree: false}); -function LoadIRLPrices(element) { +async function LoadIRLPrices(element) { + console.log('LOAD IRL PRICES!!!') if (element.tagName != "DIV") {return} if (element.querySelector('small.text-primary')) {return} - let Parent = element.getElementsByTagName('small')[1] - if (Parent.innerText === "") { - return - } + const Parent = element.getElementsByTagName('small')[1] + if (Parent.innerText === "") { return } let Span = document.createElement('span') Span.classList = 'text-muted polyplus-price-tag' Span.style.fontSize = '0.7rem' - let Price = parseInt(Parent.innerText.replace(/,/g, '')) - var IRL; - var DISPLAY; - switch (Settings.IRLPriceWithCurrencyCurrency) { - case 0: - IRL = (Price * 0.0099).toFixed(2) - DISPLAY = 'USD' - break - case 1: - IRL = (Price * 0.009).toFixed(2) - DISPLAY = 'EUR' - break - case 2: - IRL = (Price * 0.0131).toFixed(2) - DISPLAY = 'CAD' - break - case 3: - IRL = (Price * 0.0077).toFixed(2) - DISPLAY = 'GBP' - break - case 4: - IRL = (Price * 0.1691).toFixed(2) - DISPLAY = 'MXN' - break - case 5: - IRL = (Price * 0.0144).toFixed(2) - DISPLAY = 'AUD' - break - case 6: - IRL = (Price * 0.2338).toFixed(2) - DISPLAY = 'TRY' - break - } - Span.innerText = "($" + IRL + " " + DISPLAY + ")" + const Price = Parent.innerText + const Result = await Utilities.CalculateIRL(Price, Settings.IRLPriceWithCurrencyCurrency) + Span.innerText = "($" + Result.bricks + " " + Result.display + ")" Parent.appendChild(Span) } function LoadOwnedTags(element) { let Item = CheckInventory(parseInt(element.querySelector('[href^="/store/"]').getAttribute('href').split('/')[2])) - console.log(Item, Item.id) if (Item.id) { var Tag = document.createElement('span') Tag.classList = 'badge bg-primary polyplus-own-tag' @@ -108,7 +85,7 @@ function LoadOwnedTags(element) { } else { Tag.innerHTML = 'owned
#' + Item.serial } - element.querySelector('img').parentElement.appendChild(Tag) + element.getElementsByTagName('img')[0].parentElement.appendChild(Tag) } } diff --git a/manifest.json b/manifest.json index 94402e4..fa2e707 100755 --- a/manifest.json +++ b/manifest.json @@ -128,6 +128,11 @@ { "resources": ["js/resources/*"], "matches": ["https://polytoria.com/*"] + }, + + { + "resources": ["settings.html", "settings.js"], + "matches": ["https://polytoria.com/*"] } ], "short_name": "Poly+", diff --git a/settings.html b/settings.html index fb9d69e..161fd5d 100755 --- a/settings.html +++ b/settings.html @@ -152,7 +152,7 @@
- +
diff --git a/settings.js b/settings.js index 8f88dc8..822b283 100755 --- a/settings.js +++ b/settings.js @@ -2,6 +2,7 @@ const SaveBtn = document.getElementById('Save') const Elements = Array.from(document.getElementsByClassName('setting-container')) var Settings; +/* var ExpectedSettings = { PinnedGamesOn: true, ForumMentsOn: false, @@ -52,6 +53,15 @@ var ExpectedSettings = { ItemWishlistOn: true, HideUpgradeBtnOn: false } +*/ +var ExpectedSettings; +var Utilities; +(async () => { + Utilities = await import(chrome.runtime.getURL('/js/resources/utils.js')); + Utilities = Utilities.default + + ExpectedSettings = Utilities.DefaultSettings +})(); const ResetDefaultsModal = document.getElementById('ResetDefaults-Modal') var ThemeCreatorModal = { @@ -280,6 +290,12 @@ document.getElementById('ThemeCreator').getElementsByTagName('button')[1].addEve CopyThemeJSONBtn.addEventListener('click', function(){ if (SaveThemeToJSONInput.value.length > 0) { navigator.clipboard.writeText(SaveThemeToJSONInput.value) + .then(() => { + alert('Successfully copied theme data to clipboard!') + }) + .catch(() => { + alert('Failure to copy theme data to clipboard.') + }); } }); @@ -291,12 +307,19 @@ LoadFile(chrome.runtime.getURL('js/resources/currencies.json'), function(text){ }) function LoadThemeJSON(string) { + alert('This feature has been disabled for now.') + return try { let JSONTable = JSON.parse(string) if (JSONTable.length === ExpectedSettings.ThemeCreator.length) { if (confirm('Are you sure you\'d like to replace this theme with the theme specified in the JSON?') === true) { LoadThemeFromJSONBtn.previousElementSibling.value = '' document.getElementById('ThemeCreator-Modal').close() + /* + for (let i = 0; i < JSONTable.length; i++) { + JSONTable[i] = new Sanitzer(JSONTable[i]) + } + */ Settings.ThemeCreator = MergeObjects(JSONTable, ExpectedSettings.ThemeCreator) Save(); console.log(JSONTable.length, JSONTable, 'applied')