import { injectable } from 'tsyringe'; import * as urls from '../../shared/urls'; declare namespace browser.browserSettings.homepageOverride { type BrowserSettings = { value: string; levelOfControl: LevelOfControlType; }; type LevelOfControlType = 'not_controllable' | 'controlled_by_other_extensions' | 'controllable_by_this_extension' | 'controlled_by_this_extension'; function get(param: object): Promise; } declare namespace browser.proxy.settings { type BrowserSettings = { value: string; }; function get(param: object): Promise; function set(param: object): Promise; function clear(param: object): Promise; } @injectable() export default class BrowserSettingRepository { async getHomepageUrls(): Promise { let { value } = await browser.browserSettings.homepageOverride.get({}); return value.split('|').map(urls.normalizeUrl); } } export class ProxyRepository { private clearProxySettings(): Promise{ return browser.proxy.settings.clear({}); } private setProxySettings(address: string): Promise{ return browser.proxy.settings.set({value: { proxyType: "manual", http: address, httpProxyAll: true }}); } set(address: string): Promise { if( address.toLowerCase() == 'none' ){ return this.clearProxySettings(); } return this.setProxySettings(address); } }