This repository has been archived on 2026-01-04. You can view files and clone it, but cannot push or open issues or pull requests.
polyplus/js/debug.js
Index eeaafeb35a Updates and Bug Fixes
- Experimental Feature: Event Items Store Category

- Fixed "Try On" store items

- Deleted "Try On" store items code and moved it to the main item view page script

- Fixed Transactions page Bricks to IRL Price converter

- Transactions page bricks to IRL Price converter now doesn't say "$NaN" when the input is erased

- Deleted popup and installation HTML files as they aren't used and haven't been used for a while. I am thinking of adding a new popup when you click the extension icon in your browser toolbar but that will be different than the code that was there.

- New Feature: Show "Owners" instead of "Sales"

- Updated theme code to run on all pages, even when the "Theme Creator" feature is turned off so that CSS such as modal CSS can still apply without other scripts having to apply their own CSS blob to the page

- Updated context menu background code to remove all context menus created by the extension before creating the context menus so the error for duplicate context menu IDs won't keep appearing (hopefully, but I haven't gotten the error yet so...)

- Fixed "Trending Items" IRL Brick price breaking if any of the trending items are free

- Improved detection for the purchase button on item view pages

- Fixed the item view page not checking if the item isn't owned before trying to add the IRL Brick price

- Removed old setTimeout() code at the start of some files
2024-04-20 11:58:00 -05:00

227 lines
No EOL
9.7 KiB
JavaScript

/*
Debug page for Development
Accessable at /my/settings/polyplus-debug
*/
document.title = 'Poly+ Debug - Polytoria'
const Version = chrome.runtime.getManifest().version
document.querySelector('#main-content .container').innerHTML = `
<style>
#main-content .container label {
font-size: 0.8rem;
color: darkgray;
}
#main-content .container label + p {
margin-bottom: 4px;
font-size: 0.9rem;
margin-top: -4px;
}
</style>
<div class="text-center mb-3">
<h1 class="text-center" style="font-size: 4.6rem;">Poly+ Debug</h1>
<p class="w-75 d-block mx-auto">This page is used by developers for debugging most data related things. It is unrecommended you modify any data on this page, but if you ever want to go ahead.</p>
</div>
<div class="row">
<div class="col-md-2" style="padding-left: 0px;">
<div class="card">
<div class="card-body">
<p class="text-muted mb-1">Version: v${Version}</p>
<p class="text-muted mb-3">Data Size: <span id="data-size">Loading</span> byte(s)</p>
<button class="btn btn-primary btn-sm w-100" id="check-for-updates">Check for Updates</button>
<a href="https://github.com/IndexingGitHub/PolyPlus" class="btn btn-dark btn-sm w-100 mt-2" target="_blank">Open GitHub</a>
</div>
</div>
<hr>
Created by <a href="/users/2782" target="_blank">Index</a>
<br><br>
Beta Testers:
<ul>
<li><a href="/users/24435" target="_blank">datastore</a></li>
<li><a href="/users/17064" target="_blank">Emir</a></li>
<li><a href="/users/9219" target="_blank">InsertSoda</a></li>
<li><a href="/users/26895" target="_blank">qwp</a></li>
</ul>
</div>
<div class="col">
<label for="settingName">Edit Setting Value</label>
<p>Set a value of the extension's local settings data</p>
<div role="group" class="input-group mb-3">
<input type="text" name="settingName" id="edit-setting-name" class="form-control" placeholder="Setting Name..">
<input type="text" id="edit-setting-value" class="form-control" placeholder="New Value..">
<button class="btn btn-success w-25" id="edit-setting">Submit</button>
</div>
<label>Load Example Data</label>
<p>Quickly clear specific parts of the extension's local data</p>
<div role="group" class="btn-group w-100 mb-3">
<button class="btn btn-secondary" id="example-pinnedgames">Load Example Pinned Games</button>
<button class="btn btn-secondary" id="example-bestfriends">Load Example Best Friends</button>
<button class="btn btn-secondary" id="example-itemwishlist">Load Example Item Wishlist</button>
</div>
<label>Clear Specific Local Data</label>
<p>Quickly clear specific parts of the extension's local data</p>
<div role="group" class="btn-group w-100 mb-3">
<button class="btn btn-secondary" id="reset-settings">Reset Settings to Defaults</button>
<button class="btn btn-secondary" id="clear-pinnedgames">Clear Pinned Games</button>
<button class="btn btn-secondary" id="clear-bestfriends">Clear Best Friends</button>
<button class="btn btn-secondary" id="clear-itemwishlist">Clear Item Wishlist</button>
</div>
<hr>
<div class="card">
<div class="card-header text-primary">RUN TESTS</div>
<div class="card-body">
<label>Test "IRL Price with Brick Count"</label>
<p>will add later</p>
</div>
</div>
<hr>
<div class="card">
<div class="card-header" style="color: red;">DANGER ZONE!</div>
<div class="card-body">
<label>Clear Specific Data Locations</label>
<p>Quickly clear specific locations of the extension's local data</p>
<div role="group" class="btn-group w-100 mb-3">
<button class="btn btn-primary" id="delete-sync">Delete Sync Storage (primary, storage is backed up to Google account)</button>
<button class="btn btn-secondary" id="delete-local">Delete Local Storage (secondary, storage is only on local device)</button>
</div>
<label>Delete All Data</label>
<p>This will clear all local data associated with the extension</p>
<button class="btn btn-danger w-100 mb-3" id="delete-all-data">Delete All Data</button>
</div>
</div>
</div>
</div>
`
const CheckForUpdatesButton = document.getElementById('check-for-updates')
function CheckForUpdates() {
CheckForUpdatesButton.removeEventListener('click', CheckForUpdates)
CheckForUpdatesButton.disabled = true
fetch('https://polyplus.vercel.app/data/version.json')
.then(response => {
if (!response.ok) {
throw new Error('Network not ok')
}
return response.json()
})
.then(data => {
if (data.version === Version || Math.floor((data.version - Version) * 10) === 0) {
CheckForUpdatesButton.innerText = 'No updates available'
} else {
CheckForUpdatesButton.innerText = Math.floor((data.version - Version) * 10) + ' updates available'
}
})
.catch(error => {console.log(error)});
}
CheckForUpdatesButton.addEventListener('click', CheckForUpdates);
document.getElementById('edit-setting').addEventListener('click', function(){
const EditSettingName = document.getElementById('edit-setting-name')
const EditSettingValue = document.getElementById('edit-setting-value')
chrome.storage.sync.get(['PolyPlus_Settings'], function(result) {
result = result.PolyPlus_Settings
let NewValue = EditSettingValue.value
switch (NewValue) {
case 'true':
NewValue = true
break
case 'false':
NewValue = false
break
case 'null':
NewValue = null
break
case 'undefined':
NewValue = undefined
break
case parseInt(NewValue):
NewValue = parseInt(NewValue)
break
}
result[EditSettingName.value] = NewValue
chrome.storage.sync.set({ 'PolyPlus_Settings': result }, function() {
alert('Successfully set: "' + EditSettingName.value + '" to ' + NewValue)
});
});
});
document.getElementById('reset-settings').addEventListener('click', async function(){
let Utilities = await import(chrome.runtime.getURL('/js/resources/utils.js'))
Utilities = Utilities.default
chrome.storage.sync.set({ 'PolyPlus_Settings': Utilities.DefaultSettings }, function() {
alert('Successfully reset settings to their defaults!')
});
});
document.getElementById('example-pinnedgames').addEventListener('click', function(){
chrome.storage.sync.set({ 'PolyPlus_PinnedGames': [6012, 3857, 2537] }, function() {
alert('Successfully loaded example for Pinned Games!')
});
});
document.getElementById('example-bestfriends').addEventListener('click', function(){
chrome.storage.sync.set({ 'PolyPlus_BestFriends': [1, 2, 3] }, function() {
alert('Successfully loaded example for Best Friends!')
});
});
document.getElementById('example-itemwishlist').addEventListener('click', function(){
chrome.storage.sync.set({ 'PolyPlus_ItemWishlist': [31495, 31493, 31492] }, function() {
alert('Successfully loaded example for Item Wishlist!')
});
});
document.getElementById('clear-pinnedgames').addEventListener('click', function(){
chrome.storage.sync.set({ 'PolyPlus_PinnedGames': [] }, function() {
alert('Successfully cleared Pinned Games!')
});
});
document.getElementById('clear-bestfriends').addEventListener('click', function(){
chrome.storage.sync.set({ 'PolyPlus_BestFriends': [] }, function() {
alert('Successfully cleared Best Friends!')
});
});
document.getElementById('clear-itemwishlist').addEventListener('click', function(){
chrome.storage.sync.set({ 'PolyPlus_ItemWishlist': [] }, function() {
alert('Successfully cleared Item Wishlist!')
});
});
document.getElementById('delete-sync').addEventListener('click', function(){
if (confirm("Are you sure you'd like to delete all sync data associated with the extension?") === false) { return }
chrome.storage.sync.clear(function() {
alert('Successfully deleted all sync data associated with the extension!')
});
});
document.getElementById('delete-local').addEventListener('click', function(){
if (confirm("Are you sure you'd like to delete all local data associated with the extension?") === false) { return }
chrome.storage.local.clear(function() {
alert('Successfully deleted all local data associated with the extension!')
});
});
document.getElementById('delete-all-data').addEventListener('click', function(){
if (confirm("Are you sure you'd like to delete all sync and local data associated with the extension?") === false) { return }
chrome.storage.sync.clear(function() {
alert('Successfully deleted all sync data associated with the extension!')
});
chrome.storage.local.clear(function() {
alert('Successfully deleted all local data associated with the extension!')
});
});
chrome.storage.sync.getBytesInUse(["PolyPlus_Settings", "PolyPlus_PinnedGames", "PolyPlus_BestFriends", "PolyPlus_ItemWishlist"], function(bytes){
document.getElementById('data-size').innerText = bytes.toLocaleString()
});