bitwarden-estensione-browser/src/browser/browserApi.ts

76 lines
2.0 KiB
TypeScript
Raw Normal View History

export default class BrowserApi {
2018-01-12 05:04:47 +01:00
static isSafariApi: boolean = (typeof safari !== 'undefined');
static isChromeApi: boolean = (typeof chrome !== 'undefined');
static async getTabFromCurrentWindowId(): Promise<any> {
return await BrowserApi.tabsQueryFirst({
active: true,
windowId: chrome.windows.WINDOW_ID_CURRENT,
});
}
static async getTabFromCurrentWindow(): Promise<any> {
return await BrowserApi.tabsQueryFirst({
active: true,
currentWindow: true,
});
}
static tabsQuery(options: any): Promise<any[]> {
return new Promise((resolve) => {
chrome.tabs.query(options, (tabs: any[]) => {
resolve(tabs);
});
});
}
static async tabsQueryFirst(options: any): Promise<any> {
const tabs = await BrowserApi.tabsQuery(options);
if (tabs.length > 0) {
return tabs[0];
}
return null;
}
2017-12-07 21:36:24 +01:00
static tabSendMessage(tab: any, command: string, data: any = null): Promise<any[]> {
if (!tab || !tab.id) {
return;
}
const obj: any = {
command: command,
};
if (data != null) {
obj.data = data;
}
return new Promise((resolve) => {
chrome.tabs.sendMessage(tab.id, obj, () => {
resolve();
});
});
}
2018-01-12 05:04:47 +01:00
static getBackgroundPage(): any {
2018-01-12 05:39:16 +01:00
if (BrowserApi.isChromeApi) {
return chrome.extension.getBackgroundPage();
} else if (BrowserApi.isSafariApi) {
return safari.extension.globalPage.contentWindow;
} else {
return null;
2018-01-12 05:04:47 +01:00
}
}
2018-01-12 16:05:30 +01:00
2018-01-12 16:41:01 +01:00
static getApplicationVersion(): string {
2018-01-12 16:05:30 +01:00
if (BrowserApi.isChromeApi) {
return chrome.runtime.getManifest().version;
} else if (BrowserApi.isSafariApi) {
2018-01-12 16:07:27 +01:00
return safari.extension.displayVersion;
2018-01-12 16:05:30 +01:00
} else {
return null;
}
}
}