You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.6 KiB
48 lines
1.6 KiB
'use strict'; |
|
// ISOLATED world: инжект MAIN-world chat-logger и передача конфига через CustomEvent |
|
(function () { |
|
var TOKEN_KEY = 'dshmem-bridge-token' |
|
var ENABLED_KEY = 'dshmem-log-enabled' |
|
var EXEC_KEY = 'dshmem-transport' |
|
var FORCE_KEY = 'dshmem-force-inject' |
|
var HOOK_ID = 'dshmem-hook' |
|
|
|
function pushConfig() { |
|
try { |
|
chrome.storage.local.get([TOKEN_KEY, ENABLED_KEY, EXEC_KEY, FORCE_KEY], function (v) { |
|
var detail = { |
|
token: v && v[TOKEN_KEY] ? String(v[TOKEN_KEY]) : '', |
|
enabled: !(v && v[ENABLED_KEY] === false), |
|
execSource: (v ? v[EXEC_KEY] === 'sse' : false) ? 'sse' : 'dom', |
|
forceInject: (v ? v[FORCE_KEY] === true : false), |
|
} |
|
try { |
|
window.dispatchEvent(new CustomEvent('dshmem:log-config', { detail: JSON.stringify(detail) })) |
|
} catch (e) { } |
|
}) |
|
} catch (e) { } |
|
} |
|
|
|
function injectHook() { |
|
if (document.getElementById(HOOK_ID)) return |
|
var script = document.createElement('script') |
|
script.id = HOOK_ID |
|
script.src = chrome.runtime.getURL('injected/chat-logger.js') |
|
script.async = false |
|
script.onload = function () { script.remove() } |
|
;(document.head || document.documentElement).appendChild(script) |
|
} |
|
|
|
window.addEventListener('dshmem:log-request', pushConfig) |
|
window.addEventListener('dshmem:force-inject-used', function () { try { chrome.storage.local.set({ 'dshmem-force-inject': false }) } catch (e) { } }) |
|
|
|
try { |
|
chrome.storage.onChanged.addListener(function (changes, area) { |
|
if (area !== 'local') return |
|
if (changes[TOKEN_KEY] || changes[ENABLED_KEY] || changes[EXEC_KEY] || changes[FORCE_KEY]) pushConfig() |
|
}) |
|
} catch (e) { } |
|
|
|
injectHook() |
|
console.log('[chat-log] injected') |
|
})()
|
|
|