feat: "Multi-Whitelist" and "Clear Whitelist" features
This commit is contained in:
parent
c6a3ce2c69
commit
908637e72e
5 changed files with 183 additions and 7 deletions
|
|
@ -98,7 +98,14 @@ const DefaultSettings = {
|
|||
},
|
||||
ReaddCopyablePlacesOn: true,
|
||||
TimePlayedOn: true,
|
||||
HomeJoinFriendsButtonOn: true
|
||||
HomeJoinFriendsButtonOn: true,
|
||||
ImprovedPlaceManagement: {
|
||||
Enabled: true,
|
||||
QuickActivityToggleOn: true,
|
||||
PlaceFileDownloadOn: true,
|
||||
MultiWhitelistOn: true,
|
||||
ClearWhitelistOn: true
|
||||
}
|
||||
}
|
||||
|
||||
// ON EXTENSION INSTALL / RELOAD
|
||||
|
|
|
|||
|
|
@ -4,10 +4,41 @@ const Form = document.querySelector('form[action="/create/place/update"]');
|
|||
var Settings;
|
||||
var PlaceData = null;
|
||||
|
||||
let Utilities;
|
||||
|
||||
!(async () => {
|
||||
Utilities = (await import(chrome.runtime.getURL('resources/utils.js')))
|
||||
.default;
|
||||
|
||||
chrome.storage.sync.get(['PolyPlus_Settings'], function(result){
|
||||
Settings = result.PolyPlus_Settings || {
|
||||
ImprovedPlaceManagement: {
|
||||
Enabled: true,
|
||||
QuickActivityToggleOn: true,
|
||||
PlaceFileDownloadOn: true,
|
||||
MultiWhitelistOn: true,
|
||||
ClearWhitelistOn: true
|
||||
}
|
||||
}
|
||||
|
||||
if (Settings.ImprovedPlaceManagement.Enabled) {
|
||||
if (Settings.ImprovedPlaceManagement.QuickActivityToggleOn && Settings.ImprovedPlaceManagement.QuickActivityToggleOn === true) {
|
||||
ActivityToggle();
|
||||
//RequestGameProfile()
|
||||
}
|
||||
|
||||
if (Settings.ImprovedPlaceManagement.PlaceFileDownloadOn && Settings.ImprovedPlaceManagement.PlaceFileDownloadOn === true) {
|
||||
CopyOwnedPlace();
|
||||
}
|
||||
|
||||
if (Settings.ImprovedPlaceManagement.MultiWhitelistOn && Settings.ImprovedPlaceManagement.MultiWhitelistOn === true) {
|
||||
MultiWhitelist();
|
||||
}
|
||||
|
||||
if (Settings.ImprovedPlaceManagement.ClearWhitelistOn && Settings.ImprovedPlaceManagement.ClearWhitelistOn === true) {
|
||||
ClearWhitelist();
|
||||
}
|
||||
}
|
||||
})
|
||||
})();
|
||||
|
||||
async function ActivityToggle() {
|
||||
|
|
@ -141,3 +172,103 @@ async function CopyOwnedPlace() {
|
|||
});
|
||||
});
|
||||
}
|
||||
|
||||
function MultiWhitelist(){
|
||||
const WhitelistCard = document.querySelector('.card:has(#whitelist-username)')
|
||||
|
||||
const MultiWhitelistCard = document.createElement('card')
|
||||
MultiWhitelistCard.classList = 'card mt-3'
|
||||
MultiWhitelistCard.innerHTML = `
|
||||
<div class="card-header">
|
||||
<i class="fa-duotone fa-solid fa-vial-circle-check"></i>
|
||||
Multi-Whitelist
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<textarea class="form-control bg-dark mb-2" placeholder="Usernames (separated by lines).." style="min-height: 250px;"></textarea>
|
||||
<button class="btn btn-primary">
|
||||
<i class="fa-duotone fa-solid fa-users"></i>
|
||||
Whitelist
|
||||
</button>
|
||||
</div>
|
||||
`
|
||||
WhitelistCard.parentElement.appendChild(MultiWhitelistCard)
|
||||
|
||||
const MultiWhitelistSubmitButton = MultiWhitelistCard.getElementsByTagName('button')[0]
|
||||
|
||||
MultiWhitelistSubmitButton.addEventListener('click', async function(){
|
||||
const Usernames = MultiWhitelistSubmitButton.previousElementSibling.value.split('\n').filter((x) => x !== "")
|
||||
MultiWhitelistSubmitButton.previousElementSibling.disabled = true
|
||||
if (Usernames.length > 0) {
|
||||
for (let username of Usernames) {
|
||||
const WhitelistAddRequest = (await (await fetch('https://polytoria.com/api/create/whitelist', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
placeID: PlaceID,
|
||||
username: username
|
||||
})
|
||||
})).json())
|
||||
}
|
||||
|
||||
window.location.reload()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function ClearWhitelist() {
|
||||
const WhitelistCard = document.querySelector('.card:has(#whitelist-username)')
|
||||
|
||||
const ClearWhitelistButton = document.createElement('button')
|
||||
ClearWhitelistButton.classList = 'btn btn-danger btn-sm'
|
||||
ClearWhitelistButton.style = 'position: absolute; top: 0; right: 0; margin: 4px;'
|
||||
ClearWhitelistButton.innerHTML = '<i class="fa-duotone fa-solid fa-broom-wide"></i> Clear'
|
||||
WhitelistCard.children[0].appendChild(ClearWhitelistButton)
|
||||
|
||||
let WhitelistData = null
|
||||
let ClearPending = false
|
||||
ClearWhitelistButton.addEventListener('click', async function(){
|
||||
if (ClearPending === false) {
|
||||
ClearPending = true
|
||||
ClearWhitelistButton.innerText = 'Are you sure?'
|
||||
setTimeout(() => {
|
||||
if (ClearPending === true) {
|
||||
ClearPending = false;
|
||||
ClearWhitelistButton.innerHTML = '<i class="fa-duotone fa-solid fa-broom-wide"></i> Clear'
|
||||
}
|
||||
}, 3000);
|
||||
} else {
|
||||
ClearPending = false
|
||||
ClearWhitelistButton.innerHTML = '<i class="fa-duotone fa-solid fa-broom-wide"></i> Clear'
|
||||
if (confirm('Are you sure you\'d like to clear all of this place\'s whitelist')) {
|
||||
if (WhitelistData === null) {
|
||||
const InitialWhitelist = (await (await fetch('https://polytoria.com/api/create/whitelist?placeID=' + PlaceID + '&page=1')).json())
|
||||
WhitelistData = [...InitialWhitelist.data]
|
||||
|
||||
if (InitialWhitelist.meta.lastPage > 1) {
|
||||
for (let page = 1; page < InitialWhitelist.meta.lastPage; page++) {
|
||||
const PageResult = (await (await fetch('https://polytoria.com/api/create/whitelist?placeID=' + PlaceID + '&page=' + (page+1))).json())
|
||||
WhitelistData.push(...PageResult.data)
|
||||
}
|
||||
}
|
||||
|
||||
for (let id of WhitelistData.map((x) => x.user.id)) {
|
||||
Utilities.RatelimitRepeatingFetch('https://polytoria.com/api/create/remove-whitelist', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
placeID: PlaceID,
|
||||
userID: id
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
window.location.reload()
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
@ -33,8 +33,8 @@
|
|||
},
|
||||
|
||||
{
|
||||
"matches": ["https://polytoria.com/create/place/**"],
|
||||
"js": ["/js/places/place-edit.js"]
|
||||
"matches": ["https://polytoria.com/create/place/**/access"],
|
||||
"js": ["/js/create/place-access.js"]
|
||||
},
|
||||
|
||||
{
|
||||
|
|
|
|||
|
|
@ -117,7 +117,14 @@ export default {
|
|||
OpacityOn: true
|
||||
},
|
||||
TimePlayedOn: true,
|
||||
HomeJoinFriendsButtonOn: true
|
||||
HomeJoinFriendsButtonOn: true,
|
||||
ImprovedPlaceManagement: {
|
||||
Enabled: true,
|
||||
QuickActivityToggleOn: true,
|
||||
PlaceFileDownloadOn: true,
|
||||
MultiWhitelistOn: true,
|
||||
ClearWhitelistOn: true
|
||||
}
|
||||
},
|
||||
Limits: {
|
||||
PinnedGames: 10,
|
||||
|
|
|
|||
|
|
@ -810,6 +810,37 @@
|
|||
Quickly join your friends' servers by clicking the play button inside the tooltip in the "Friends" section of the homepage.
|
||||
</span>
|
||||
</div>
|
||||
<div class="setting-container" id="improved-place-management">
|
||||
<span class="badge bg-primary mb-1">Now a Setting!</span>
|
||||
<br>
|
||||
<span class="indicator"> </span>
|
||||
<span class="title">
|
||||
Improved Place Management
|
||||
</span>
|
||||
<div class="setting-buttons">
|
||||
<button class="btn btn-sm toggle-btn" data-setting="Enabled" data-parent="ImprovedPlaceManagement">Toggle</button>
|
||||
</div>
|
||||
<br />
|
||||
<span class="desc">
|
||||
Develop the next hit game easier with a few management tools!
|
||||
</span>
|
||||
<span class="form-check form-switch">
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="quick-activity-toggle" data-setting="QuickActivityToggleOn" data-parent="ImprovedPlaceManagement" />
|
||||
<label class="form-check-label" for="quick-activity-toggle"> Quick Place Activity Toggle </label>
|
||||
</span>
|
||||
<span class="form-check form-switch">
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="download-place-file-button" data-setting="PlaceFileDownloadOn" data-parent="ImprovedPlaceManagement" />
|
||||
<label class="form-check-label" for="download-place-file-button"> Download Place File Button </label>
|
||||
</span>
|
||||
<span class="form-check form-switch">
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="multi-whitelist" data-setting="MultiWhitelistOn" data-parent="ImprovedPlaceManagement" />
|
||||
<label class="form-check-label" for="multi-whitelist"> <span class="badge bg-primary mb-1">New in v1.3!</span> Multi-Whitelist Several Users </label>
|
||||
</span>
|
||||
<span class="form-check form-switch">
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="clear-whitelist-button" data-setting="ClearWhitelistOn" data-parent="ImprovedPlaceManagement" />
|
||||
<label class="form-check-label" for="clear-whitelist-button"> <span class="badge bg-primary mb-1">New in v1.3!</span> Quick Clear Whitelist Button </label>
|
||||
</span>
|
||||
</div>
|
||||
<!---
|
||||
<div class="setting-container" id="auto-ad-bidding">
|
||||
<span class="indicator"> </span>
|
||||
|
|
|
|||
Reference in a new issue