Verbose logging support

This commit is contained in:
Полина 2025-01-18 09:24:54 +03:00
parent 7dbf2edbce
commit 2330e8b37f
3 changed files with 43 additions and 6 deletions

View file

@ -16,7 +16,9 @@ export function App() {
const [updating, setUpdating] = createSignal(true)
const [showSettings, setShowSettings] = createSignal(false)
const [settingsTab, setSettingsTab] = createSignal<SettingsTab>('accounts')
const [isResizing, setIsResizing] = createSignal(false)
const [sizes, setSizes] = createSignal([0.5, 0.5])
let workerIframe!: HTMLIFrameElement
@ -61,12 +63,19 @@ export function App() {
/>
)}
>
<Resizable orientation="horizontal" class="size-full max-h-[calc(100vh-57px)]">
<Resizable sizes={sizes()} onSizesChange={e => setSizes(e)} orientation="horizontal" class="size-full max-h-[calc(100vh-57px)]">
<ResizablePanel class="h-full overflow-x-auto overflow-y-hidden" minSize={0.2}>
<EditorTabs />
<Editor class="size-full" />
</ResizablePanel>
<ResizableHandle withHandle onMouseDown={() => setIsResizing(true)} onMouseUp={() => setIsResizing(false)} />
<ResizableHandle
withHandle
onDblClick={() => {
setSizes([0.5, 0.5])
}}
onMouseDown={() => setIsResizing(true)}
onMouseUp={() => setIsResizing(false)}
/>
<ResizablePanel
class="flex max-h-full flex-col overflow-hidden"
minSize={0.2}

View file

@ -24,6 +24,10 @@ const $enableUpdates = persistentAtom('repl:enableUpdates', true, {
encode: String,
decode: value => value === 'true',
})
const $enableVerbose = persistentAtom('repl:verboseLogs', true, {
encode: String,
decode: value => value === 'true',
})
export function Runner(props: { isResizing: boolean }) {
const [devtoolsIframe, setDevtoolsIframe] = createSignal<HTMLIFrameElement | undefined>()
@ -35,6 +39,7 @@ export function Runner(props: { isResizing: boolean }) {
const currentAccountId = useStore($activeAccountId)
const disconnectAfterSecs = useStore($disconnectAfterSecs)
const enableUpdates = useStore($enableUpdates)
const enableVerbose = useStore($enableVerbose)
let currentScriptId: string | undefined
let deadTimer: timers.Timer | undefined
@ -74,6 +79,7 @@ export function Runner(props: { isResizing: boolean }) {
event: 'INIT',
accountId: currentAccountId(),
logUpdates: enableUpdates(),
verboseLogs: enableVerbose(),
}, '*')
setRunnerLoaded(true)
deadTimer = timers.setTimeout(() => {
@ -203,6 +209,15 @@ export function Runner(props: { isResizing: boolean }) {
}, '*')
}
function handleToggleVerbose() {
const newValue = !enableVerbose()
$enableVerbose.set(newValue)
runnerIframe()?.contentWindow?.postMessage({
event: 'TOGGLE_VERBOSE',
value: newValue,
}, '*')
}
return (
<>
<div class="flex shrink-0 flex-row p-1">
@ -287,6 +302,13 @@ export function Runner(props: { isResizing: boolean }) {
/>
Log updates
</DropdownMenuItem>
<DropdownMenuItem class="text-xs" onClick={handleToggleVerbose}>
<Dynamic
component={enableVerbose() ? LucideCheckSquare : LucideSquare}
class="mr-2 size-3"
/>
Verbose logs
</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuGroup>
<DropdownMenuGroupLabel class="text-xs">

View file

@ -30,8 +30,9 @@ chobitsu.setOnMessage((message: string) => {
let lastAccountId: string | undefined
let lastConnectionState: ConnectionState | undefined
let logUpdates = false
let verboseLogs = false
function initClient(accountId: string) {
function initClient(accountId: string, verbose: boolean) {
lastAccountId = accountId
let extraConfig: Partial<TelegramClientOptions> | undefined
@ -53,6 +54,7 @@ function initClient(accountId: string) {
apiId: import.meta.env.VITE_API_ID,
apiHash: import.meta.env.VITE_API_HASH,
storage: `mtcute:${accountId}`,
logLevel: verbose ? 5 : 2,
...extraConfig,
})
window.tg.onConnectionState.add((state) => {
@ -86,7 +88,7 @@ window.addEventListener('message', ({ data }) => {
sendToChobitsu({ method: 'DOMStorage.enable' })
sendToDevtools({ method: 'DOM.documentUpdated' })
initClient(data.accountId)
initClient(data.accountId, data.verboseLogs)
logUpdates = data.logUpdates
if (window.tg !== undefined) {
@ -118,7 +120,7 @@ window.addEventListener('message', ({ data }) => {
chobitsu.sendRawMessage(data.value)
} else if (data.event === 'ACCOUNT_CHANGED') {
window.tg?.close()
initClient(data.accountId)
initClient(data.accountId, data.verboseLogs)
if (lastConnectionState !== 'offline') {
window.parent.postMessage({ event: 'CONNECTION_STATE', value: 'offline' }, HOST_ORIGIN)
@ -129,7 +131,7 @@ window.addEventListener('message', ({ data }) => {
// todo: we dont have a clean way to disconnect i think
window.tg?.close()
if (lastAccountId) {
initClient(lastAccountId)
initClient(lastAccountId, data.verboseLogs)
}
window.parent.postMessage({ event: 'CONNECTION_STATE', value: 'offline' }, HOST_ORIGIN)
} else if (data.event === 'RECONNECT') {
@ -139,6 +141,10 @@ window.addEventListener('message', ({ data }) => {
} else if (data.event === 'TOGGLE_UPDATES') {
if (data.value === logUpdates) return
logUpdates = data.value
} else if (data.event === 'TOGGLE_VERBOSE') {
if (data.value === verboseLogs) return
verboseLogs = data.value;
(window.tg.log as any).level = verboseLogs ? 5 : 2
}
})