aboutsummaryrefslogblamecommitdiff
path: root/src/background/infrastructures/ContentMessageClient.ts
blob: b6c0c2300deda94798e4a8d232cd20f77b4a579e (plain) (tree)
1
2
3
4
5
6
7
8
9
                                      
                                                  
 
             
                                           
                                                   
                                              
                                                               
                 



                                        
 
                                                          
                                                           
                                         
                                     
   
                                                          

                                          
 
                                                                      



                                   
 
import { injectable } from 'tsyringe';
import * as messages from '../../shared/messages';

@injectable()
export default class ContentMessageClient {
  async broadcastSettingsChanged(): Promise<void> {
    const tabs = await browser.tabs.query({});
    for (const tab of tabs) {
      if (!tab.id || tab.url && tab.url.startsWith('about:')) {
        continue;
      }
      browser.tabs.sendMessage(tab.id, {
        type: messages.SETTINGS_CHANGED,
      });
    }
  }

  async getAddonEnabled(tabId: number): Promise<boolean> {
    const enabled = await browser.tabs.sendMessage(tabId, {
      type: messages.ADDON_ENABLED_QUERY,
    });
    return enabled as any as boolean;
  }

  async toggleAddonEnabled(tabId: number): Promise<void> {
    await browser.tabs.sendMessage(tabId, {
      type: messages.ADDON_TOGGLE_ENABLED,
    });
  }

  async scrollTo(tabId: number, x: number, y: number): Promise<void> {
    await browser.tabs.sendMessage(tabId, {
      type: messages.TAB_SCROLL_TO,
      x,
      y,
    });
  }
}