blob: 393f5f71ec54b2d6c0a1a99154fc9f2c1bb1246c [file] [log] [blame]
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +02001// In order to pass i18n strings and settings values to the injected scripts,
2// which don't have access to the chrome.* APIs, we use event listeners.
3
Adrià Vilanova Martínezd269c622021-09-04 18:35:55 +02004import {getOptions} from './optionsUtils.js';
5
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +02006export function setUpListener() {
Adrià Vilanova Martínezd269c622021-09-04 18:35:55 +02007 window.addEventListener('TWPT_sendRequest', evt => {
8 var request = evt.detail;
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +02009
Adrià Vilanova Martínezd269c622021-09-04 18:35:55 +020010 Promise.resolve(null)
11 .then(() => {
12 switch (request.data.action) {
13 case 'geti18nMessage':
14 return chrome.i18n.getMessage(
15 request.data.msg,
16 (Array.isArray(request.data.placeholders) ?
17 request.data.placeholders :
18 []));
19
20 case 'getProfileIndicatorOptions':
21 return getOptions(['profileindicator', 'profileindicatoralt'])
22 .then(options => {
23 return {
24 indicatorDot: options?.profileindicator ?? false,
25 numPosts: options?.profileindicatoralt ?? false,
26 };
27 });
28
29 case 'getNumPostMonths':
30 return getOptions('profileindicatoralt_months')
31 .then(options => options?.profileindicatoralt_months ?? 12);
32
33 default:
34 console.warn('Unknown action ' + request.data.action + '.');
35 return 'unknownAction';
36 }
37 })
38 .then(data => {
39 var response = {
40 data,
41 requestId: request.id,
42 prefix: (request.prefix || 'TWPT'),
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020043 };
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020044
Adrià Vilanova Martínezd269c622021-09-04 18:35:55 +020045 window.postMessage(response, '*');
46 });
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020047 });
48}