kopia lustrzana https://github.com/lartsch/FediAct
92 wiersze
3.2 KiB
JavaScript
92 wiersze
3.2 KiB
JavaScript
|
|
// required settings keys with defauls
|
|
var settings = {
|
|
fedifollow_homeinstance: null,
|
|
fedifollow_alert: false,
|
|
fedifollow_mode: "blacklist",
|
|
fedifollow_whitelist: null,
|
|
fedifollow_blacklist: null,
|
|
fedifollow_target: "_self",
|
|
fedifollow_autoaction: true,
|
|
fedifollow_showfollows: true,
|
|
fedifollow_redirects: true
|
|
}
|
|
|
|
// fix for cross-browser storage api compatibility
|
|
var browser, chrome;
|
|
|
|
function onError(error){
|
|
console.error(`[FediFollow] Error: ${error}`);
|
|
}
|
|
|
|
// this performs loading the settings into the popup, reacting to changes and saving changes
|
|
function popupTasks(settings) {
|
|
|
|
function showConfirmation() {
|
|
$("span#indicator").show();
|
|
setTimeout(function() {
|
|
$("span#indicator").hide();
|
|
}, 1500);
|
|
}
|
|
|
|
function updateSettings(){
|
|
// update settings values
|
|
settings.fedifollow_homeinstance = $("input#homeinstance").val().trim();
|
|
settings.fedifollow_alert = $("input#alert").is(':checked');
|
|
settings.fedifollow_mode = $("select#mode").val();
|
|
settings.fedifollow_whitelist = $("textarea#whitelist_content").val();
|
|
settings.fedifollow_blacklist = $("textarea#blacklist_content").val();
|
|
settings.fedifollow_target = $("select#target").val();
|
|
settings.fedifollow_autoaction = $("input#autoaction").is(':checked');
|
|
settings.fedifollow_showfollows = $("input#showfollows").is(':checked');
|
|
settings.fedifollow_redirects = $("input#redirects").is(':checked');
|
|
// write to storage
|
|
const waitForSaved = (browser || chrome).storage.local.set(settings);
|
|
// show saved indicator after successful save
|
|
waitForSaved.then(showConfirmation(), onError);
|
|
}
|
|
|
|
function restoreForm() {
|
|
// set all default/configured values and show fields accordingly
|
|
$("input#homeinstance").val(settings.fedifollow_homeinstance);
|
|
$("textarea#blacklist_content").val(settings.fedifollow_blacklist);
|
|
$("textarea#whitelist_content").val(settings.fedifollow_whitelist);
|
|
$("select#mode").val(settings.fedifollow_mode);
|
|
$("select#target").val(settings.fedifollow_target);
|
|
$("input#alert").prop('checked', settings.fedifollow_alert);
|
|
$("input#autoaction").prop('checked', settings.fedifollow_autoaction);
|
|
$("input#showfollows").prop('checked', settings.fedifollow_showfollows);
|
|
$("input#redirects").prop('checked', settings.fedifollow_redirects);
|
|
// both containers are hidden by default
|
|
if ($("select#mode").val() == "whitelist") {
|
|
$("div#whitelist_input").show();
|
|
} else {
|
|
$("div#blacklist_input").show();
|
|
}
|
|
// check changes of the select to update whitelist/blacklist input
|
|
$("select#mode").change(function() {
|
|
if ($("select#mode").val() == "whitelist") {
|
|
$("div#blacklist_input").hide();
|
|
$("div#whitelist_input").show();
|
|
} else {
|
|
$("div#whitelist_input").hide();
|
|
$("div#blacklist_input").show();
|
|
}
|
|
});
|
|
}
|
|
|
|
$(document).ready(function() {
|
|
// restore the form values
|
|
restoreForm();
|
|
// perform storage actions on form submit
|
|
$("form#fedifollow-settings").on('submit', function(e){
|
|
// prevent default
|
|
e.preventDefault();
|
|
// update settings
|
|
updateSettings();
|
|
});
|
|
});
|
|
|
|
}
|
|
|
|
(browser || chrome).storage.local.get(settings).then(popupTasks, onError); |