disable best friends feature & improvements

- disabled best friends feature

- improved load asset by ID in avatar sandbox (originally was quickly added cause I was bored, now it actually works with different asset types and stuff)

- add work in progress "automatic ad bidding" feature modal

- fixed apply membership themes with nested setting objects

- fixed try-on items feature defaulting to giving the preview avatar shirt and pants even if the user's avatar didn't have them

- fixed "download place file" because site no longer uses csrf tokens
This commit is contained in:
Index 2024-06-08 21:21:33 -05:00
parent 8258f2b892
commit 6a42004dba
11 changed files with 198 additions and 49 deletions

View file

@ -174,10 +174,21 @@ if (new URLSearchParams(window.location.search).has('sandbox')) {
}); });
let LoadAsset = document.getElementById('load-asset'); let LoadAsset = document.getElementById('load-asset');
const LoadAssetType = document.getElementById('load-asset-type')
LoadAsset.addEventListener('click', async function () { LoadAsset.addEventListener('click', async function () {
console.log('clickk'); if (!LoadAsset.previousElementSibling.value.startsWith('http') && !LoadAsset.previousElementSibling.value.startsWith('data:')) {
const MeshURL = (await (await fetch('https://api.polytoria.com/v1/assets/serve-mesh/' + LoadAsset.previousElementSibling.value)).json()).url; if (LoadAssetType.options[LoadAssetType.selectedIndex].value === 'hat') {
Avatar.items.push(MeshURL); Avatar.items.push((await (await fetch('https://api.polytoria.com/v1/assets/serve-mesh/' + LoadAsset.previousElementSibling.value)).json()).url);
} else {
Avatar[LoadAssetType.options[LoadAssetType.selectedIndex].value] = (await (await fetch('https://api.polytoria.com/v1/assets/serve/' + LoadAsset.previousElementSibling.value + '/Asset')).json()).url;
}
} else {
if (LoadAssetType.options[LoadAssetType.selectedIndex].value === 'hat') {
Avatar.items.push(LoadAsset.previousElementSibling.value);
} else {
Avatar[LoadAssetType.options[LoadAssetType.selectedIndex].value] = LoadAsset.previousElementSibling.value
}
}
UpdateAvatar(); UpdateAvatar();
}); });
}); });
@ -190,7 +201,7 @@ if (new URLSearchParams(window.location.search).has('sandbox')) {
} }
function UpdateAvatar() { function UpdateAvatar() {
GenerateHash().then((hash) => { FormatAvatar().then((hash) => {
IFrame.addEventListener('load', function () { IFrame.addEventListener('load', function () {
IFrame.src = 'https://polytoria.com/ptstatic/itemview/#' + hash; IFrame.src = 'https://polytoria.com/ptstatic/itemview/#' + hash;
}); });
@ -272,10 +283,19 @@ async function FormatAvatar() {
// Hats, Tools: https://api.polytoria.com/v1/assets/serve-mesh/:id // Hats, Tools: https://api.polytoria.com/v1/assets/serve-mesh/:id
// or: https://api.polytoria.com/v1/assets/serve/:id/Asset // or: https://api.polytoria.com/v1/assets/serve/:id/Asset
const meshPromises = Avatar.items.map(async (item, index) => {
if (typeof item === 'number') {
console.log(item);
FormattedAvatar.items[index] = await FetchMesh(item)
console.log('after url');
//Avatar.items[index] = URL
}
});
Avatar.items.forEach(async (item, index) => { Avatar.items.forEach(async (item, index) => {
if (typeof item === 'number') { if (typeof item === 'number') {
console.log(item); console.log(item);
await FetchMesh(item) FetchMesh(item)
.then((URL) => { .then((URL) => {
console.log('URL: ' + URL); console.log('URL: ' + URL);
FormattedAvatar.items[index] = URL; FormattedAvatar.items[index] = URL;
@ -294,12 +314,10 @@ async function FormatAvatar() {
} }
if (FormattedAvatar.face === undefined) { FormattedAvatar.face = 'https://c0.ptacdn.com/static/3dview/DefaultFace.png'; } if (FormattedAvatar.face === undefined) { FormattedAvatar.face = 'https://c0.ptacdn.com/static/3dview/DefaultFace.png'; }
if (!FormattedAvatar.face.startsWith('data:') && !FormattedAvatar.face.startsWith('http')) { if (FormattedAvatar.face && typeof FormattedAvatar.face === 'number') {
if (FormattedAvatar.face && typeof FormattedAvatar.face === 'number') { FormattedAvatar.face = await FetchAsset(FormattedAvatar.face);
FormattedAvatar.face = await FetchAsset(FormattedAvatar.face); } else if (FormattedAvatar.face === undefined) {
} else { FormattedAvatar.face = 'https://c0.ptacdn.com/static/3dview/DefaultFace.png';
FormattedAvatar.face = 'https://c0.ptacdn.com/static/3dview/DefaultFace.png';
}
} }
if (typeof FormattedAvatar.shirt === 'number') { if (typeof FormattedAvatar.shirt === 'number') {
@ -308,9 +326,14 @@ async function FormatAvatar() {
if (typeof FormattedAvatar.pants === 'number') { if (typeof FormattedAvatar.pants === 'number') {
FormattedAvatar.pants = await FetchAsset(FormattedAvatar.pants); FormattedAvatar.pants = await FetchAsset(FormattedAvatar.pants);
} }
await Promise.all(meshPromises)
console.log('Real Avatar: ', Avatar, 'Formatted: ', FormattedAvatar); console.log('Real Avatar: ', Avatar)
return FormattedAvatar; console.log('Formatted: ', FormattedAvatar)
console.log('URI: ', btoa(encodeURIComponent(JSON.stringify(FormattedAvatar))))
console.log('Fix: ', JSON.stringify(decodeURIComponent(atob(btoa(encodeURIComponent(JSON.stringify(FormattedAvatar)))))));
return btoa(encodeURIComponent(JSON.stringify(FormattedAvatar)));
} }
function LoadMyself() { function LoadMyself() {
@ -399,6 +422,23 @@ async function FetchMesh(id) {
return null; return null;
} }
console.log('https://api.polytoria.com/v1/assets/serve-mesh/:id'.replace(':id', id)); console.log('https://api.polytoria.com/v1/assets/serve-mesh/:id'.replace(':id', id));
return new Promise((resolve, reject) => {
fetch('https://api.polytoria.com/v1/assets/serve-mesh/:id'.replace(':id', id))
.then((response) => {
if (!response.ok) {
throw new Error('Network not ok');
}
return response.json();
})
.then((data) => {
console.log(data, 'finished', data.url);
resolve(data.url);
})
.catch((error) => {
console.log('Fetch error: ' + error);
});
})
return fetch('https://api.polytoria.com/v1/assets/serve-mesh/:id'.replace(':id', id)) return fetch('https://api.polytoria.com/v1/assets/serve-mesh/:id'.replace(':id', id))
.then((response) => { .then((response) => {
if (!response.ok) { if (!response.ok) {

View file

@ -152,6 +152,7 @@ function PinnedGames() {
} }
function BestFriends() { function BestFriends() {
return
Array.from(document.querySelectorAll('[bestFriend]')).forEach((element) => { Array.from(document.querySelectorAll('[bestFriend]')).forEach((element) => {
element.removeAttribute('bestFriend'); element.removeAttribute('bestFriend');
element.getElementsByClassName('friend-name')[0].style.color = 'initial'; element.getElementsByClassName('friend-name')[0].style.color = 'initial';

View file

@ -1,4 +1,4 @@
let UserID = window.location.pathname.split('/')[2]; let Username = window.location.pathname.split('/')[2];
const AvatarRow = document.getElementsByClassName('d-flex flex-row flex-nowrap overflow-x-scroll px-3 px-lg-0 mb-2 mb-lg-0')[0]; const AvatarRow = document.getElementsByClassName('d-flex flex-row flex-nowrap overflow-x-scroll px-3 px-lg-0 mb-2 mb-lg-0')[0];
const AvatarHeading = document.querySelector('.section-title:has(i.fa-user-crown)'); const AvatarHeading = document.querySelector('.section-title:has(i.fa-user-crown)');
@ -9,9 +9,9 @@ let CalculateButton;
let Utilities; let Utilities;
if (UserID) { if (Username) {
(async () => { (async () => {
UserID = (await (await fetch('https://api.polytoria.com/v1/users/')).json()).id; UserID = (await (await fetch('https://api.polytoria.com/v1/users/find?username=' + Username )).json()).id;
Utilities = await import(chrome.runtime.getURL('resources/utils.js')); Utilities = await import(chrome.runtime.getURL('resources/utils.js'));
Utilities = Utilities.default; Utilities = Utilities.default;

View file

@ -1,9 +1,9 @@
const AssetID = window.location.pathname.split('/')[2]; const AssetID = window.location.pathname.split('/')[2];
const LibraryType = document.querySelectorAll('ol a')[1].innerText.toLowerCase(); const LibraryType = document.querySelectorAll('ol a')[1].innerText.toLowerCase();
const LibraryTypes = ['model', 'audio', 'decal', 'mesh']; const LibraryTypes = ['model', 'audio', 'decal', 'mesh', 'shirt', 'pant'];
if (LibraryTypes.filter((x) => !LibraryTypes.some(element => element.startsWith(LibraryType))).length > 0) { if (LibraryTypes.filter((x) => !LibraryTypes.some(element => element.startsWith(LibraryType))).length > 0) {
chrome.storage.sync.get(['PolyPlus_Settings'], function (result) { chrome.storage.sync.get(['PolyPlus_Settings'], async function (result) {
Settings = result.PolyPlus_Settings || {}; Settings = result.PolyPlus_Settings || {};
if (Settings.LibraryDownloadsOn === false) { if (Settings.LibraryDownloadsOn === false) {
@ -18,6 +18,7 @@ if (LibraryTypes.filter((x) => !LibraryTypes.some(element => element.startsWith(
DownloadLink.innerHTML = `<i class="fa-duotone fa-download"></i> Download`; DownloadLink.innerHTML = `<i class="fa-duotone fa-download"></i> Download`;
Dropdown.insertBefore(DownloadLink, Dropdown.children[Dropdown.children.length - 1]); Dropdown.insertBefore(DownloadLink, Dropdown.children[Dropdown.children.length - 1]);
console.log('type', LibraryType, LibraryType.startsWith('shirt'), LibraryType.startsWith('pant'))
switch (LibraryType) { switch (LibraryType) {
case LibraryType.startsWith('model'): case LibraryType.startsWith('model'):
DownloadLink.href = 'https://api.polytoria.com/v1/models/get-model?id=' + AssetID; DownloadLink.href = 'https://api.polytoria.com/v1/models/get-model?id=' + AssetID;
@ -26,21 +27,39 @@ if (LibraryTypes.filter((x) => !LibraryTypes.some(element => element.startsWith(
const AudioBlob = new Blob([document.getElementsByTagName('audio')[0]], {type: 'octet-steam'}); const AudioBlob = new Blob([document.getElementsByTagName('audio')[0]], {type: 'octet-steam'});
DownloadLink.href = URL.createObjectURL(AudioBlob); DownloadLink.href = URL.createObjectURL(AudioBlob);
DownloadLink.download = document.getElementsByTagName('h1')[0].innerText + '.mp3'; DownloadLink.download = document.getElementsByTagName('h1')[0].innerText + '.mp3';
case LibraryType.startsWith('decal'): case (LibraryType.startsWith('decal')):
const DecalBlob = new Blob([document.getElementsByClassName('store-thumbnail')[0]], {type: 'image/png'}); const DecalBlob = new Blob([document.getElementsByClassName('store-thumbnail')[0]], {type: 'image/png'});
DownloadLink.href = URL.createObjectURL(DecalBlob); DownloadLink.href = URL.createObjectURL(DecalBlob);
DownloadLink.download = document.getElementsByTagName('h1')[0].innerText + '.png'; DownloadLink.download = document.getElementsByTagName('h1')[0].innerText + '.png';
break; break;
} }
if (LibraryType.startsWith('mesh')) { if (LibraryType.startsWith('shirt') || LibraryType.startsWith('pant')) {
let ClothingURL = null;
DownloadLink.addEventListener('click', async function () {
if (ClothingURL !== null) {
return;
}
ClothingURL = (await (await fetch('https://api.polytoria.com/v1/assets/serve/' + AssetID + '/Asset')).json());
if (ClothingURL.success === true) {
//const ClothingBlob = new Blob([(await (await fetch(ClothingURL.url)).blob())], {type: 'image/png'})
const ClothingBlob = (await (await fetch(ClothingURL.url)).blob())
DownloadLink.href = URL.createObjectURL(ClothingBlob);
DownloadLink.download = document.getElementsByTagName('h1')[0].innerText + '.png';
DownloadLink.click();
} else {
alert('Failure to fetch .png file for clothing item');
}
});
} else if (LibraryType.startsWith('mesh')) {
let MeshURL = null; let MeshURL = null;
DownloadLink.addEventListener('click', async function () { DownloadLink.addEventListener('click', async function () {
if (MeshURL !== null) { if (MeshURL !== null) {
return; return;
} }
MeshURL = await fetch('https://api.polytoria.com/v1/assets/serve-mesh/' + AssetID); MeshURL = (await (await fetch('https://api.polytoria.com/v1/assets/serve-mesh/' + AssetID)).json());
MeshURL = await MeshURL.json();
if (MeshURL.success === true) { if (MeshURL.success === true) {
DownloadLink.href = MeshURL.url; DownloadLink.href = MeshURL.url;

View file

@ -1,13 +1,17 @@
chrome.storage.sync.get(['PolyPlus_Settings'], function (result) { chrome.storage.sync.get(['PolyPlus_Settings'], function (result) {
Settings = result.PolyPlus_Settings || { Settings = result.PolyPlus_Settings || {
ApplyMembershipTheme: {
Enabled: false,
Theme: 0
},
ApplyMembershipThemeOn: false, ApplyMembershipThemeOn: false,
ApplyMembershipThemeTheme: 0 ApplyMembershipThemeTheme: 0
}; };
if (Settings.ApplyMembershipThemeOn !== true) { if (Settings.ApplyMembershipTheme.Enabled !== true) {
return; return;
} }
MembershipTheme = Settings.ApplyMembershipThemeTheme === 0 ? 'plus' : 'plusdx'; MembershipTheme = Settings.ApplyMembershipTheme.Theme === 0 ? 'plus' : 'plusdx';
document.addEventListener('DOMContentLoaded', function () { document.addEventListener('DOMContentLoaded', function () {
if (document.getElementsByClassName('card-header')[0] && document.getElementsByClassName('card-header')[0].innerText === ' Page not found') { if (document.getElementsByClassName('card-header')[0] && document.getElementsByClassName('card-header')[0].innerText === ' Page not found') {
@ -24,25 +28,28 @@ chrome.storage.sync.get(['PolyPlus_Settings'], function (result) {
Navbar.classList.add('navbar-' + MembershipTheme); Navbar.classList.add('navbar-' + MembershipTheme);
Sidebar.classList.add('sidebar-' + MembershipTheme); Sidebar.classList.add('sidebar-' + MembershipTheme);
if (MembershipTheme === 'plusdx') { let SidebarLogo = Sidebar.getElementsByTagName('img')[0];
let SidebarLogo = document.querySelector('.nav-sidebar img'); if (MembershipTheme === 'plus') {
SidebarLogo.setAttribute('src', 'https://c0.ptacdn.com/static/images/branding/icon-plusdx.bd9daa92.svg'); SidebarLogo.src = 'https://c0.ptacdn.com/static/images/branding/icon-plus.8f6e41f1.svg'
let SidebarLogoLabel = document.createElement('div'); } else {
SidebarLogoLabel.classList = 'nplusdx-banner'; SidebarLogo.src = 'https://c0.ptacdn.com/static/images/branding/icon-plusdx.bd9daa92.svg'
SidebarLogoLabel.innerHTML = ` }
<i class="pi pi-plusdx" style="margin-right:-0.4em"></i>
`;
SidebarLogo.parentElement.appendChild(SidebarLogoLabel);
if (window.location.pathname === '/home') { let SidebarLogoLabel = document.createElement('div');
let HomeUsernameText = document.getElementsByClassName('home-title2')[0]; SidebarLogoLabel.classList = 'n' + MembershipTheme + '-banner';
HomeUsernameText.children[0].classList.add('text-plusdx'); SidebarLogoLabel.innerHTML = `
let Label = document.createElement('div'); <i class="pi pi-${MembershipTheme}" style="margin-right:-0.4em"></i>
Label.classList = 'hplusdx-banner rounded-2'; `;
Label.setAttribute('style', 'margin-top: -8px; animation-delay: 0.09s;'); SidebarLogo.parentElement.appendChild(SidebarLogoLabel);
Label.innerText = 'Deluxe';
HomeUsernameText.appendChild(Label); if (MembershipTheme === 'plusdx' && window.location.pathname === '/home') {
} let HomeUsernameText = document.getElementsByClassName('home-title2')[0];
HomeUsernameText.classList.add('text-plusdx');
let Label = document.createElement('div');
Label.classList = 'hplusdx-banner reqFadeAnim rounded-2';
Label.setAttribute('style', 'margin-top:-8px');
Label.innerText = 'Deluxe';
HomeUsernameText.parentElement.appendChild(Label);
} }
}); });
}); });

View file

@ -95,13 +95,12 @@ function RequestGameProfile() {
async function CopyOwnedPlace() { async function CopyOwnedPlace() {
console.log('ran function'); console.log('ran function');
if (PlaceData === null) { if (PlaceData === null) {
PlaceData = await fetch('https://api.polytoria.com/v1/places/' + 2640); PlaceData = await fetch('https://api.polytoria.com/v1/places/' + PlaceID);
PlaceData = await PlaceData.json(); PlaceData = await PlaceData.json();
} }
if (PlaceData.creator.id !== parseInt(JSON.parse(window.localStorage.getItem('p+account_info')).ID)) { if (PlaceData.creator.id !== parseInt(JSON.parse(window.localStorage.getItem('p+account_info')).ID)) {
console.log('returned'); return
//return
} }
const DIV = document.createElement('div'); const DIV = document.createElement('div');
@ -123,9 +122,11 @@ async function CopyOwnedPlace() {
let CreatorToken = await fetch('https://polytoria.com/api/places/edit', { let CreatorToken = await fetch('https://polytoria.com/api/places/edit', {
method: 'POST', method: 'POST',
/*
headers: { headers: {
'X-CSRF-Token': document.querySelector('input[name="_csrf"]').value 'X-CSRF-Token': document.querySelector('input[name="_csrf"]').value
}, },
*/
body: JSON.stringify({placeID: PlaceID}) body: JSON.stringify({placeID: PlaceID})
}); });
CreatorToken = await CreatorToken.json(); CreatorToken = await CreatorToken.json();

View file

@ -175,8 +175,6 @@ function TryOnItems() {
const Avatar = { const Avatar = {
useCharacter: true, useCharacter: true,
items: [], items: [],
shirt: 'https://c0.ptacdn.com/assets/uWrrnFGwgNN5W171vqYTWY7E639rKiXK.png',
pants: 'https://c0.ptacdn.com/assets/HD6TFdXD8CaflRNmd84VCNyNsmTB0SH3.png',
headColor: '#e0e0e0', headColor: '#e0e0e0',
torsoColor: '#e0e0e0', torsoColor: '#e0e0e0',
leftArmColor: '#e0e0e0', leftArmColor: '#e0e0e0',

View file

@ -2,8 +2,8 @@
"manifest_version": 3, "manifest_version": 3,
"author": "Index", "author": "Index",
"name": "Poly+", "name": "Poly+",
"version": "1.11", "version": "1.21",
"version_name": "Pre-Release Build (v1.1.1)", "version_name": "Pre-Release Build (v1.2.1)",
"description": "Power-up your Polytoria experience with Poly+! Created by Index.", "description": "Power-up your Polytoria experience with Poly+! Created by Index.",
"homepage_url": "https://polyplus.vercel.app/", "homepage_url": "https://polyplus.vercel.app/",
"permissions": ["storage", "contextMenus", "scripting", "alarms", "notifications"], "permissions": ["storage", "contextMenus", "scripting", "alarms", "notifications"],

View file

@ -64,10 +64,20 @@
</button> </button>
</div> </div>
</div> </div>
<hr class="mt-2 mb-3">
<select class="form-select mb-2" id="load-asset-type">
<option value="hat" selected>Hat</option>
<option value="face">Face</option>
<option value="shirt">Shirt</option>
<option value="pants">Pants</option>
<hr>
<option value="user">User Avatar</option>
</select>
<div class="input-group mb-3"> <div class="input-group mb-3">
<input type="text" class="form-control bg-dark" placeholder="Asset ID.." /> <input type="text" class="form-control bg-dark" placeholder="Asset ID.." />
<button class="btn btn-primary" id="load-asset">Load Asset</button> <button class="btn btn-primary" id="load-asset">Load Asset</button>
</div> </div>
<hr class="mt-2 mb-3">
<div class="card mcard mb-3"> <div class="card mcard mb-3">
<h6 class="card-header"> <h6 class="card-header">
<i class="fad fa-palette"></i> <i class="fad fa-palette"></i>

View file

@ -321,6 +321,63 @@
</div> </div>
</div> </div>
</dialog> </dialog>
<dialog class="w-75" id="AutoAdBidding-Modal" data-setting="AutoAdBidding">
<div class="modal-header">
<p>Automatic Ad Bidding</p>
</div>
<div class="modal-body">
<p>description (max 10 ads)</p>
<hr class="mt-2 mb-3" />
<div class="input-group mb-2">
<input type="text" class="form-control ignore" placeholder="Ad ID..">
<button class="btn btn-primary" id="auto-ad-bidding-add">Add</button>
</div>
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Ad Name</th>
<th scope="col">Bid</th>
<th scope="col">Automation</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td><a href="https://polytoria.com/create/ad/632">"everdayi m shuffling"</a></td>
<td class="text-success"><span class="pi">$</span> 150</td>
<td>
<select class="form-select ignore">
<option value="daily" selected>Daily</option>
<option value="weekly">Weekly</option>
<option value="monthly">Monthly</option>
</select>
</td>
<td>
<div role="group" class="btn-group w-100">
<button class="btn btn-success w-25">
BID
</button>
<button class="btn btn-orange w-25">
EDIT
</button>
<button class="btn btn-danger w-25">
DELETE
</button>
</div>
</td>
</tr>
</tbody>
</table>
<div role="group" class="btn-group w-100">
<button class="btn btn-success w-25" data-setting="[save]">Save</button>
<button class="btn btn-warning w-25" data-setting="[reset-default]">Reset to Defaults</button>
<button class="btn btn-secondary w-25" data-setting="[cancel]">Cancel</button>
</div>
</div>
</dialog>
<div id="page"> <div id="page">
<h1 class="text-center" style="text-shadow: 0px 0px 5px orange; padding-bottom: 5px; margin-bottom: 10px;">Poly+ Settings</h1> <h1 class="text-center" style="text-shadow: 0px 0px 5px orange; padding-bottom: 5px; margin-bottom: 10px;">Poly+ Settings</h1>
<p class="setting-container" id="pinned-games"> <p class="setting-container" id="pinned-games">
@ -343,6 +400,7 @@
<br /> <br />
<span style="font-size: 0.8rem; color: orange;">* Forum Mentions do not notify the user or show up as a notification on their account.</span> <span style="font-size: 0.8rem; color: orange;">* Forum Mentions do not notify the user or show up as a notification on their account.</span>
</p> </p>
<!--
<p class="setting-container" id="best-friends"> <p class="setting-container" id="best-friends">
<span class="indicator">&nbsp;</span> <span class="indicator">&nbsp;</span>
<span class="title"> <span class="title">
@ -352,6 +410,7 @@
<br /> <br />
<span class="desc">Prioritize the bestest of friends on applicable friend lists! (limit: <span id="BestFriends-limit"></span> best friends)</span> <span class="desc">Prioritize the bestest of friends on applicable friend lists! (limit: <span id="BestFriends-limit"></span> best friends)</span>
</p> </p>
-->
<p class="setting-container" id="improved-friend-lists"> <p class="setting-container" id="improved-friend-lists">
<span class="indicator">&nbsp;</span> <span class="indicator">&nbsp;</span>
<span class="title"> <span class="title">
@ -607,6 +666,18 @@
<label class="form-check-label" for="hide-user-ads-rectangle"> Hide Rectangle User Ads </label> <label class="form-check-label" for="hide-user-ads-rectangle"> Hide Rectangle User Ads </label>
</span> </span>
</p> </p>
<!---
<p class="setting-container" id="auto-ad-bidding">
<span class="indicator">&nbsp;</span>
<span class="title">
Automatic Ad Bidding
<button class="btn btn-sm toggle-btn" data-setting="AutoAdBiddingOn">Toggle</button>
<button class="btn btn-primary btn-sm" data-modal="AutoAdBidding">Options</button>
</span>
<br />
<span class="desc">description</span>
</p>
-->
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<h3>EXPERIMENTAL SETTINGS</h3> <h3>EXPERIMENTAL SETTINGS</h3>

View file

@ -194,10 +194,12 @@ function SetSetting(element, value, update, modalParent) {
return "Are you sure you'd like to leave? Your Poly+ settings haven't been saved." return "Are you sure you'd like to leave? Your Poly+ settings haven't been saved."
}; };
} }
/*
if (AreIdentical(Settings, RecentSave) === true) { if (AreIdentical(Settings, RecentSave) === true) {
document.title = 'Poly+ Settings' document.title = 'Poly+ Settings'
SaveBtn.disabled = true SaveBtn.disabled = true
} }
*/
} }
function GetSettingValue(element, modalParent) { function GetSettingValue(element, modalParent) {