metamorpov/popup.js

139 lines
4.1 KiB
JavaScript
Raw Normal View History

2019-10-19 05:27:27 -04:00
DEACTIVATE_KEY = 'deactivate-this-extension-pls-interactive-fics-yalla-bina';
2015-02-23 05:17:13 -05:00
2015-02-21 22:00:28 -05:00
document.addEventListener('DOMContentLoaded', function () {
2019-10-19 05:27:27 -04:00
// event listeners
document.getElementById('change-name-form').addEventListener('submit', changeName)
document.getElementById('clear-name-form').addEventListener('submit', clearName)
document.getElementById('replace-other-words-form').addEventListener('submit', replaceOther)
2019-10-19 07:05:20 -04:00
document.getElementById('refresh-replacements-form').addEventListener('submit', refreshReplacements)
2019-10-19 05:27:27 -04:00
document.getElementById('show-saved').addEventListener('click', loadSaved)
document.getElementById('deactivate').addEventListener('click', toggleDeactivate)
2017-05-19 12:13:06 -04:00
2019-10-19 05:27:27 -04:00
// set disable/enable button
setDeactivateKey()
});
const changeName = () => {
const person = document.getElementById('change-name-form-text').value
if (person) {
2019-10-19 06:48:59 -04:00
chrome.storage.sync.set({'person': person}, chrome.tabs.reload())
2019-10-19 05:27:27 -04:00
}
}
const clearName = () => {
2019-10-19 06:48:59 -04:00
chrome.storage.sync.remove('person', chrome.tabs.reload())
2019-10-19 05:27:27 -04:00
}
const replaceOther = () => {
const input_word = document.getElementById('replace-word').value
const replacement = document.getElementById('replace-with').value
const is_case_sensitive = document.getElementById('is-case-sensitive').checked
2019-10-19 05:27:27 -04:00
if (input_word && replacement) {
if (document.getElementById('is-perm').checked) {
const obj = {}
obj[input_word] = replacement
obj[`${input_word}_case_sensitive`] = is_case_sensitive
2019-10-19 06:48:59 -04:00
chrome.storage.sync.set(obj)
2019-10-19 05:27:27 -04:00
}
chrome.tabs.query({ active: true, currentWindow: true }, tabs => {
chrome.tabs.sendMessage(
tabs[0].id,
{
input_word: input_word,
replace_value: replacement,
case_sensitive: is_case_sensitive
2019-10-19 05:27:27 -04:00
})
})
}
}
2019-10-19 07:05:20 -04:00
const refreshReplacements = () => {
chrome.tabs.query({ active: true, currentWindow: true }, tabs => {
chrome.tabs.sendMessage(
tabs[0].id,
{
refresh: true
})
})
}
2019-10-19 05:27:27 -04:00
const loadSaved = () => {
2019-10-19 06:48:59 -04:00
chrome.storage.sync.get(null, items => {
2019-10-19 05:27:27 -04:00
const list = document.getElementById('saved-items-list')
list.innerHTML = ''
let hasItems = false
for (var key in items) {
2019-10-19 06:48:59 -04:00
if (key !== DEACTIVATE_KEY && !key.endsWith('_case_sensitive')) {
2019-10-19 05:27:27 -04:00
const label = key === 'person' ? 'Y/N' : key
2019-10-19 06:48:59 -04:00
const case_sensitive = !!items[`${key}_case_sensitive`]
const case_sensitive_string = case_sensitive ? 'case sensitive' : 'not case sensitive'
const representative = `${label} -> ${items[key]} (${case_sensitive_string})`
2019-10-19 05:27:27 -04:00
const list_item = createListItem(key, representative, 'one-saved-item')
list.appendChild(list_item)
hasItems = true
2017-05-19 12:13:06 -04:00
}
2016-06-18 23:04:38 -04:00
}
2019-10-19 05:27:27 -04:00
if (!hasItems) {
list.innerHTML = '<small>No stored replacements yet!</small>'
2016-06-18 23:04:38 -04:00
}
2019-10-19 05:27:27 -04:00
})
}
2016-06-18 23:04:38 -04:00
2019-10-19 05:27:27 -04:00
const createListItem = (id, text, className) => {
const text_node = document.createTextNode(text)
const list_node = document.createElement('LI')
list_node.appendChild(text_node)
list_node.className = className
list_node.id = id
list_node.addEventListener('click', () => {
2019-10-19 06:48:59 -04:00
chrome.storage.sync.remove(id)
2019-10-19 05:27:27 -04:00
list_node.className += ' strikethrough'
})
return list_node
}
2015-02-27 05:46:57 -05:00
2019-10-19 05:27:27 -04:00
const setDeactivateKey = () => {
2019-10-19 06:48:59 -04:00
chrome.storage.sync.get(DEACTIVATE_KEY, obj => {
2019-10-19 05:27:27 -04:00
const is_deactivated = obj[DEACTIVATE_KEY]
toggleDeactivateLabel(is_deactivated)
2015-02-27 05:46:57 -05:00
2019-10-19 05:27:27 -04:00
if (is_deactivated) {
const other_elements = document.getElementById('all-but-deactivate-wrapper')
other_elements.style.opacity = '0.5'
const input_elements = document.getElementsByTagName('INPUT')
Array.from(input_elements).forEach(input => {
if (input.id !== 'deactivate') {
input.disabled = 'disabled'
}
})
}
})
2015-02-21 22:00:28 -05:00
}
2019-10-19 05:27:27 -04:00
const toggleDeactivateLabel = (reactivateBool) => {
const prefix = reactivateBool ? 'Re-activate' : 'Deactivate'
const deactivate_button = document.getElementById('deactivate')
deactivate_button.value = `${prefix} Extension`
}
const toggleDeactivate = () => {
2019-10-19 06:48:59 -04:00
chrome.storage.sync.get(DEACTIVATE_KEY, obj => {
2019-10-19 05:27:27 -04:00
const was_deactivated = obj[DEACTIVATE_KEY]
toggleDeactivateLabel(!was_deactivated)
if (was_deactivated) {
2019-10-19 06:48:59 -04:00
chrome.storage.sync.remove(DEACTIVATE_KEY)
2019-10-19 05:27:27 -04:00
} else {
const new_object = {}
new_object[DEACTIVATE_KEY] = true
2019-10-19 06:48:59 -04:00
chrome.storage.sync.set(new_object)
2019-10-19 05:27:27 -04:00
}
chrome.tabs.reload()
window.close()
})
}