MCPcopy Create free account
hub / github.com/mailvelope/mailvelope / init

Function init

src/content-scripts/clientAPI.js:47–104  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

45}
46
47export function init() {
48 const apiTag = document.getElementById('mailvelope-api');
49 if (apiTag) {
50 if (apiTag.dataset.version !== prefs.version) {
51 window.setTimeout(() => {
52 window.dispatchEvent(new CustomEvent('mailvelope-disconnect', {detail: {version: prefs.version}}));
53 }, 1);
54 }
55 return;
56 }
57 if (!window.mailvelope) {
58 const element = document.createElement('script');
59 element.id = 'mailvelope-api';
60 element.src = chrome.runtime.getURL('client-API/mailvelope-client-api.js');
61 element.dataset.version = prefs.version;
62 document.head.append(element);
63 }
64 controllerPort = EventHandler.connect(`api-${getUUID()}`);
65 const port = {
66 onMessage: {
67 addListener(listener) {
68 window.addEventListener('message', event => {
69 if (!isValidOrigin(event.origin) ||
70 event.data.mvelo_extension ||
71 !event.data.mvelo_client) {
72 return;
73 }
74 const {mvelo_client, ...data} = event.data;
75 try {
76 checkTypes(data);
77 if (data.identifier) {
78 if (data.identifier.includes(KEYRING_DELIMITER)) {
79 throw new MvError('Identifier invalid.', 'INVALID_IDENTIFIER');
80 }
81 data.keyringId = host + KEYRING_DELIMITER + data.identifier;
82 } else {
83 data.keyringId = MAIN_KEYRING_ID;
84 }
85 listener(data);
86 } catch (e) {
87 if (data._reply) {
88 port.postMessage({...data, event: '_reply', error: mapError(e)});
89 } else {
90 throw e;
91 }
92 }
93 });
94 }
95 },
96 postMessage(options) {
97 options.mvelo_extension = true;
98 const targetOrigin = getTargetOrigin();
99 window.postMessage(options, targetOrigin);
100 }
101 };
102 clientPort = new EventHandler(port);
103 registerClientEventHandler();
104}

Callers

nothing calls this directly

Calls 3

getUUIDFunction · 0.90
connectMethod · 0.45

Tested by

no test coverage detected