-
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
* feat: create settings-item components * feat: create settings-separator components * fix: refactor * fix: delete unused exports * fix: refactor * [WIP] feat: create sbs-message component * fix: extract asyncQuerySelector() as utility * feat: use sbs-message element for TweetChecker class * fix: fix layout bug * fix: add TODO comment * feat: use sbs-message element for ProfileChecker class * chore: tempolary delete sbsMessageWrapper.ts * chore: rename message.ts to sbsMessageWrapper.ts * chore: restore sbsMessageWrapper.ts content * fix: delete unused file and variables * fix: delete unused constant * fix: fix text color of the buttons in the sbs-messages * fix: replace asyncQuerySelector() with async-query * fix: inherit font family from parent element * fix: sbsMessage is not imported in user scripts
- Loading branch information
1 parent
77a6cff
commit 25c7694
Showing
29 changed files
with
1,263 additions
and
522 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import { loadSettings } from "./loadSettings"; | ||
import { loadVersion } from "./loadVersion"; | ||
|
||
void loadSettings(); | ||
loadVersion(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
import "../components/settingsItem"; | ||
import "../components/settingsSeparator"; | ||
import { DEFAULT_SETTINGS } from "../common/defaultSettings"; | ||
import { SETTINGS_ITEMS } from "./settingsItems"; | ||
import { Settings } from "../@types/common/settings"; | ||
import { TRANSLATION_ATTRIBUTE } from "../common/constants"; | ||
import { Translator } from "../common/translator"; | ||
import browser from "webextension-polyfill"; | ||
import { isSettings } from "../@types/common/settings.guard"; | ||
|
||
/** | ||
* Load settings from local storage. | ||
* @returns settings | ||
*/ | ||
const loadSettingsFromStorage = async () => { | ||
const settings = await browser.storage.local.get(DEFAULT_SETTINGS); | ||
if (!isSettings(settings)) throw new Error("Failed to get settings from storage"); | ||
|
||
return settings; | ||
}; | ||
|
||
/** | ||
* Create new settings separator element. | ||
* @param translationKey translation key | ||
* @returns created settings separator | ||
*/ | ||
const createSettingsSeparator = (translationKey: string) => { | ||
const separator = document.createElement("settings-separator"); | ||
separator.setAttribute(TRANSLATION_ATTRIBUTE, translationKey); | ||
|
||
return separator; | ||
}; | ||
|
||
/** | ||
* Create new settings item element. | ||
* @param settingsName settings name | ||
* @param translationKey translation key | ||
* @param checked settings status | ||
* @returns created settings item | ||
*/ | ||
const createSettingsItem = (settingsName: string, translationKey: string, checked: boolean) => { | ||
const item = document.createElement("settings-item"); | ||
item.settingsName = settingsName; | ||
item.setAttribute(TRANSLATION_ATTRIBUTE, translationKey); | ||
item.checked = checked; | ||
item.addEventListener("change", () => { | ||
void browser.storage.local.set({ [item.settingsName]: item.checked }); | ||
}); | ||
|
||
return item; | ||
}; | ||
|
||
/** | ||
* Run translation. | ||
*/ | ||
const runTranslation = () => { | ||
const translator = new Translator((key) => browser.i18n.getMessage(key), browser.runtime.getURL("dist/image/")); | ||
translator.translateElements(); | ||
}; | ||
|
||
/** | ||
* Create settings item or separator element from data. | ||
* @param settings settings | ||
* @param data settings item data | ||
* @returns created element | ||
*/ | ||
const createItemsFromData = (settings: Settings, data: (typeof SETTINGS_ITEMS)[number]) => { | ||
if (data.type === "separator") { | ||
return createSettingsSeparator(data.translationKey); | ||
} else if (data.type === "checkbox") { | ||
return createSettingsItem(data.settingsName, data.translationKey, settings[data.settingsName]); | ||
} | ||
|
||
throw new Error("Invalid data"); | ||
}; | ||
|
||
/** | ||
* Load settings UI. | ||
*/ | ||
const loadSettings = async () => { | ||
const settings = await loadSettingsFromStorage(); | ||
|
||
const fieldset = document.querySelector("fieldset"); | ||
if (!fieldset) throw new Error("Failed to get fieldset"); | ||
const fragment = document.createDocumentFragment(); | ||
|
||
for (const data of SETTINGS_ITEMS) { | ||
const element = createItemsFromData(settings, data); | ||
fragment.appendChild(element); | ||
} | ||
|
||
fieldset.appendChild(fragment); | ||
runTranslation(); | ||
}; | ||
|
||
export { loadSettings }; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
import browser from "webextension-polyfill"; | ||
|
||
const loadVersion = () => { | ||
const { version } = browser.runtime.getManifest(); | ||
const versionElement = document.getElementById("version-number"); | ||
if (!versionElement) throw new Error("Failed to get #version-number element"); | ||
|
||
versionElement.textContent = `v${version}`; | ||
versionElement.setAttribute("href", `https://github.com/Robot-Inventor/shadowban-scanner/releases/tag/v${version}`); | ||
}; | ||
|
||
export { loadVersion }; |
Oops, something went wrong.