• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

input-output-hk / lace / 8325082528

18 Mar 2024 10:32AM UTC coverage: 53.421% (-0.4%) from 53.839%
8325082528

push

github

79df06
pczeglik-iohk
chore(extension): update lace version v1.9.0 (#960)

2291 of 5273 branches covered (43.45%)

Branch coverage included in aggregate %.

5228 of 8802 relevant lines covered (59.4%)

54.4 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/apps/browser-extension-wallet/src/lib/scripts/background/requestAccess.ts
1
import pDebounce from 'p-debounce';
×
2
import { RequestAccess } from '@cardano-sdk/dapp-connector';
3
import { storage as webStorage, tabs, Runtime } from 'webextension-polyfill';
×
4
import { AuthorizedDappStorage } from '@src/types';
5

6
import { authorizedDappsList, userPromptService } from './services/dappService';
×
7
import { ensureUiIsOpenAndLoaded } from './util';
×
8
import { authenticator } from './authenticator';
×
9
import { AUTHORIZED_DAPPS_KEY } from '../types';
×
10
import { Wallet } from '@lace/cardano';
11
import { BehaviorSubject } from 'rxjs';
×
12
import { walletManager, walletRepository } from './wallet';
×
13
import { senderToDappInfo } from '@src/utils/senderToDappInfo';
×
14

15
const DEBOUNCE_THROTTLE = 500;
×
16

17
export const dappInfo$ = new BehaviorSubject<Wallet.DappInfo>(undefined);
×
18

19
export const requestAccess: RequestAccess = async (sender: Runtime.MessageSender) => {
×
20
  const { logo, name, url } = await senderToDappInfo(sender);
×
21
  dappInfo$.next({ logo, name, url });
×
22
  await ensureUiIsOpenAndLoaded({ walletManager, walletRepository }, '#/dapp/connect', false);
×
23
  const isAllowed = await userPromptService.allowOrigin(url);
×
24
  if (isAllowed === 'deny') return Promise.reject();
×
25
  if (isAllowed === 'allow') {
×
26
    const { authorizedDapps }: AuthorizedDappStorage = await webStorage.local.get(AUTHORIZED_DAPPS_KEY);
×
27
    if (authorizedDapps) {
×
28
      await webStorage.local.set({ authorizedDapps: [...authorizedDapps, { logo, name, url }] });
×
29
      authorizedDappsList.next([...authorizedDapps, { logo, name, url }]);
×
30
    } else {
31
      await webStorage.local.set({ authorizedDapps: [{ logo, name, url }] });
×
32
      authorizedDappsList.next([{ logo, name, url }]);
×
33
    }
34
  } else {
35
    tabs.onRemoved.addListener((t) => {
×
36
      if (t === sender.tab.id) {
×
37
        authenticator.revokeAccess(sender);
×
38
        tabs.onRemoved.removeListener(this);
×
39
      }
40
    });
41
  }
42
  return Promise.resolve(true);
×
43
};
44

45
export const requestAccessDebounced = pDebounce(requestAccess, DEBOUNCE_THROTTLE);
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc