// General function connect_event(name, signal, callback) { const element = document.getElementById(name); element.addEventListener(signal, callback); } function delete_item(base_url, id) { request(`${base_url}/${id}`, (response, body) => { if (response.status != 200) {return;} const element = document.getElementById(id); element.parentElement.removeChild(element); }); } function request(url, callback) { fetch(url).then((response) => { if (callback != null) { response.text().then((body) => { callback(response, body) }); } }); } function toggle_all_details(class_name, state) { const elements = document.getElementsByClassName(class_name); for (let element of elements) { if (state && !element.hasAttribute('open')) { element.setAttribute('open', null); } else if (!state && element.hasAttribute('open')) { element.removeAttribute('open'); } } } function toggle_menu() { const menu = document.getElementById('main-menu'); const show_text = menu.hasAttribute('show'); if (show_text) { menu.removeAttribute('show'); } else { menu.setAttribute('show', null); } for (let item of document.getElementsByClassName('menu-item-text')) { if (show_text) { item.style.display = 'none' } else { item.style.display = 'inline' } } } function handle_key_enter(event) { if (event.code.toString().toUpperCase() == 'ENTER') { handle_save_config(event); } } function handle_save_config(event) { const input = event.target; let value = ''; if (input.type.toUpperCase() == 'CHECKBOX') { if (input.checked) { value = 'true'; } else { value = 'false'; } } else { value = input.value; } const url = new URL(input.form.action); url.searchParams.set(input.id, value) request(url, (response, body) => { if (response.status == 200) { console.log(`Set config: ${input.id}=${value}`); } }); } // Fediverse function create_account_nodes(ids) { for (let id of ids) { request(`/fediverse/acct_info/${id}`, (response, body) => { if (response.status != 200) { console.log(`Error ${response.status} when trying to fetch account: ${body}`); return; } const accts = document.getElementById('accounts'); const container = document.createElement('div'); container.innerHTML = body; accts.appendChild(container.children[0]); })} } function set_active(acctid) { request(`/fediverse/set_active/${acctid}`, (response, body) => { if (response.status != 200) { console.log(`Failed to set account active: ID ${acctid}`); return; } for (let acct of document.getElementsByClassName('account')) { var active = acct.getElementsByClassName('active')[0]; if (acct.id == acctid) { active.style.display = 'none'; } else { active.style.display = 'inline-block'; } } }); } // History function delete_history(histid) { request(`/history/delete/${histid}`, (response, body) => { if (response.status != 200) {return;} const element = document.getElementById(histid); const details = element.parentElement; details.removeChild(element); if (details.children.length <= 1) { details.parentElement.removeChild(details); } }); } // Search function set_default_search(id) { request(`/search/default/${id}`, (response, body) => { if (response.status != 200) { console.log(`Failed to set search engine active: ID ${id}`); return; } for (let acct of document.getElementsByClassName('search-item')) { const active = acct.getElementsByClassName('default')[0]; if (acct.id == `SEARCH${id}`) { active.style.display = 'none'; } else { active.style.display = 'inline-block'; } } }); } // Passwords function copy_password(id) { request(`/passwords/copy/${id}`, (response, body) => { if (response.status != 200) { console.log(`Error code when trying to copy password: ${xhr.status} ${xhr.statusText}`); } }); }