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

'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')
})()