diff --git a/src/content.ts b/src/content.ts index 0843f2c..24a1cd1 100644 --- a/src/content.ts +++ b/src/content.ts @@ -1,5 +1,6 @@ import { TwitterHider } from './hider'; import { Preferences } from './interfaces/preferences'; +import { PreferencesRepository } from './preferences-repository'; class Background { static async init(): Promise<void> { @@ -7,43 +8,18 @@ class Background { await this.setup(); } - this.listen(); - } - - static async listen(): Promise<void> { - const preferences: Preferences = await this.getSavedPreferences(); + const preferences: Preferences = await PreferencesRepository.get(); const hider = new TwitterHider(preferences); hider.init(); } - static setup(): Promise<void> { - const defaults = { - hideLikes: true, - hideRetweets: true, - hideReplies: true, - setup: true - }; - - return new Promise(resolve => { - globalThis.chrome.storage.local.set(defaults, () => resolve()); - }); + private static async setup(): Promise<void> { + await PreferencesRepository.set(PreferencesRepository.DefaultPreferences); } - static checkIfFirstStart(): Promise<boolean> { - return new Promise(resolve => { - globalThis.chrome.storage.local.get('setup', data => { - resolve(!data.setup); - }); - }); - } - - static getSavedPreferences(): Promise<Preferences> { - return new Promise(resolve => { - globalThis.chrome.storage.local.get(['hideLikes', 'hideReplies', 'hideRetweets'], (data: Preferences) => { - resolve(data); - }); - }) + private static async checkIfFirstStart(): Promise<boolean> { + return !(await PreferencesRepository.get()); } } diff --git a/src/popup.html b/src/popup.html index 2882288..6d5222c 100644 --- a/src/popup.html +++ b/src/popup.html @@ -26,6 +26,11 @@ <label for="hideretweets">Hide re-tweets?</label> <input type="checkbox" name="hideretweets" id="hideRetweets"> </div> + + <div class="row"> + <label for="hideretweets">Hide follower counts?</label> + <input type="checkbox" name="hidefollowers" id="hideFollowers"> + </div> <div class="row" id="savedChanges" style="display: none"> <span style="color: green">Your changes have been saved. You must refresh your page before they take effect.</span> diff --git a/src/popup.js b/src/popup.ts similarity index 100% rename from src/popup.js rename to src/popup.ts diff --git a/src/preferences-repository.ts b/src/preferences-repository.ts new file mode 100644 index 0000000..98c47a5 --- /dev/null +++ b/src/preferences-repository.ts @@ -0,0 +1,22 @@ +import { Preferences } from './interfaces/preferences'; + +export class PreferencesRepository { + static readonly DefaultPreferences: Preferences = { + hideLikes: true, + hideRetweets: true, + hideReplies: true + }; + + static get(): Promise<Preferences> { + const propertyNames: string[] = Object.keys(this.DefaultPreferences); + return new Promise(resolve => { + globalThis.chrome.storage.local.get(propertyNames, (data: Preferences) => resolve(data)) + }); + } + + static set(preferences: Preferences): Promise<void> { + return new Promise(resolve => { + globalThis.chrome.storage.local.set(preferences, () => resolve()); + }); + } +} \ No newline at end of file