blob: 393f5f71ec54b2d6c0a1a99154fc9f2c1bb1246c [file] [log] [blame]
// In order to pass i18n strings and settings values to the injected scripts,
// which don't have access to the chrome.* APIs, we use event listeners.
import {getOptions} from './optionsUtils.js';
export function setUpListener() {
window.addEventListener('TWPT_sendRequest', evt => {
var request = evt.detail;
Promise.resolve(null)
.then(() => {
switch (request.data.action) {
case 'geti18nMessage':
return chrome.i18n.getMessage(
request.data.msg,
(Array.isArray(request.data.placeholders) ?
request.data.placeholders :
[]));
case 'getProfileIndicatorOptions':
return getOptions(['profileindicator', 'profileindicatoralt'])
.then(options => {
return {
indicatorDot: options?.profileindicator ?? false,
numPosts: options?.profileindicatoralt ?? false,
};
});
case 'getNumPostMonths':
return getOptions('profileindicatoralt_months')
.then(options => options?.profileindicatoralt_months ?? 12);
default:
console.warn('Unknown action ' + request.data.action + '.');
return 'unknownAction';
}
})
.then(data => {
var response = {
data,
requestId: request.id,
prefix: (request.prefix || 'TWPT'),
};
window.postMessage(response, '*');
});
});
}