Verbose logging support
This commit is contained in:
parent
7dbf2edbce
commit
2330e8b37f
3 changed files with 43 additions and 6 deletions
|
@ -16,7 +16,9 @@ export function App() {
|
||||||
const [updating, setUpdating] = createSignal(true)
|
const [updating, setUpdating] = createSignal(true)
|
||||||
const [showSettings, setShowSettings] = createSignal(false)
|
const [showSettings, setShowSettings] = createSignal(false)
|
||||||
const [settingsTab, setSettingsTab] = createSignal<SettingsTab>('accounts')
|
const [settingsTab, setSettingsTab] = createSignal<SettingsTab>('accounts')
|
||||||
|
|
||||||
const [isResizing, setIsResizing] = createSignal(false)
|
const [isResizing, setIsResizing] = createSignal(false)
|
||||||
|
const [sizes, setSizes] = createSignal([0.5, 0.5])
|
||||||
|
|
||||||
let workerIframe!: HTMLIFrameElement
|
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}>
|
<ResizablePanel class="h-full overflow-x-auto overflow-y-hidden" minSize={0.2}>
|
||||||
<EditorTabs />
|
<EditorTabs />
|
||||||
<Editor class="size-full" />
|
<Editor class="size-full" />
|
||||||
</ResizablePanel>
|
</ResizablePanel>
|
||||||
<ResizableHandle withHandle onMouseDown={() => setIsResizing(true)} onMouseUp={() => setIsResizing(false)} />
|
<ResizableHandle
|
||||||
|
withHandle
|
||||||
|
onDblClick={() => {
|
||||||
|
setSizes([0.5, 0.5])
|
||||||
|
}}
|
||||||
|
onMouseDown={() => setIsResizing(true)}
|
||||||
|
onMouseUp={() => setIsResizing(false)}
|
||||||
|
/>
|
||||||
<ResizablePanel
|
<ResizablePanel
|
||||||
class="flex max-h-full flex-col overflow-hidden"
|
class="flex max-h-full flex-col overflow-hidden"
|
||||||
minSize={0.2}
|
minSize={0.2}
|
||||||
|
|
|
@ -24,6 +24,10 @@ const $enableUpdates = persistentAtom('repl:enableUpdates', true, {
|
||||||
encode: String,
|
encode: String,
|
||||||
decode: value => value === 'true',
|
decode: value => value === 'true',
|
||||||
})
|
})
|
||||||
|
const $enableVerbose = persistentAtom('repl:verboseLogs', true, {
|
||||||
|
encode: String,
|
||||||
|
decode: value => value === 'true',
|
||||||
|
})
|
||||||
|
|
||||||
export function Runner(props: { isResizing: boolean }) {
|
export function Runner(props: { isResizing: boolean }) {
|
||||||
const [devtoolsIframe, setDevtoolsIframe] = createSignal<HTMLIFrameElement | undefined>()
|
const [devtoolsIframe, setDevtoolsIframe] = createSignal<HTMLIFrameElement | undefined>()
|
||||||
|
@ -35,6 +39,7 @@ export function Runner(props: { isResizing: boolean }) {
|
||||||
const currentAccountId = useStore($activeAccountId)
|
const currentAccountId = useStore($activeAccountId)
|
||||||
const disconnectAfterSecs = useStore($disconnectAfterSecs)
|
const disconnectAfterSecs = useStore($disconnectAfterSecs)
|
||||||
const enableUpdates = useStore($enableUpdates)
|
const enableUpdates = useStore($enableUpdates)
|
||||||
|
const enableVerbose = useStore($enableVerbose)
|
||||||
|
|
||||||
let currentScriptId: string | undefined
|
let currentScriptId: string | undefined
|
||||||
let deadTimer: timers.Timer | undefined
|
let deadTimer: timers.Timer | undefined
|
||||||
|
@ -74,6 +79,7 @@ export function Runner(props: { isResizing: boolean }) {
|
||||||
event: 'INIT',
|
event: 'INIT',
|
||||||
accountId: currentAccountId(),
|
accountId: currentAccountId(),
|
||||||
logUpdates: enableUpdates(),
|
logUpdates: enableUpdates(),
|
||||||
|
verboseLogs: enableVerbose(),
|
||||||
}, '*')
|
}, '*')
|
||||||
setRunnerLoaded(true)
|
setRunnerLoaded(true)
|
||||||
deadTimer = timers.setTimeout(() => {
|
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 (
|
return (
|
||||||
<>
|
<>
|
||||||
<div class="flex shrink-0 flex-row p-1">
|
<div class="flex shrink-0 flex-row p-1">
|
||||||
|
@ -287,6 +302,13 @@ export function Runner(props: { isResizing: boolean }) {
|
||||||
/>
|
/>
|
||||||
Log updates
|
Log updates
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
|
<DropdownMenuItem class="text-xs" onClick={handleToggleVerbose}>
|
||||||
|
<Dynamic
|
||||||
|
component={enableVerbose() ? LucideCheckSquare : LucideSquare}
|
||||||
|
class="mr-2 size-3"
|
||||||
|
/>
|
||||||
|
Verbose logs
|
||||||
|
</DropdownMenuItem>
|
||||||
<DropdownMenuSeparator />
|
<DropdownMenuSeparator />
|
||||||
<DropdownMenuGroup>
|
<DropdownMenuGroup>
|
||||||
<DropdownMenuGroupLabel class="text-xs">
|
<DropdownMenuGroupLabel class="text-xs">
|
||||||
|
|
|
@ -30,8 +30,9 @@ chobitsu.setOnMessage((message: string) => {
|
||||||
let lastAccountId: string | undefined
|
let lastAccountId: string | undefined
|
||||||
let lastConnectionState: ConnectionState | undefined
|
let lastConnectionState: ConnectionState | undefined
|
||||||
let logUpdates = false
|
let logUpdates = false
|
||||||
|
let verboseLogs = false
|
||||||
|
|
||||||
function initClient(accountId: string) {
|
function initClient(accountId: string, verbose: boolean) {
|
||||||
lastAccountId = accountId
|
lastAccountId = accountId
|
||||||
|
|
||||||
let extraConfig: Partial<TelegramClientOptions> | undefined
|
let extraConfig: Partial<TelegramClientOptions> | undefined
|
||||||
|
@ -53,6 +54,7 @@ function initClient(accountId: string) {
|
||||||
apiId: import.meta.env.VITE_API_ID,
|
apiId: import.meta.env.VITE_API_ID,
|
||||||
apiHash: import.meta.env.VITE_API_HASH,
|
apiHash: import.meta.env.VITE_API_HASH,
|
||||||
storage: `mtcute:${accountId}`,
|
storage: `mtcute:${accountId}`,
|
||||||
|
logLevel: verbose ? 5 : 2,
|
||||||
...extraConfig,
|
...extraConfig,
|
||||||
})
|
})
|
||||||
window.tg.onConnectionState.add((state) => {
|
window.tg.onConnectionState.add((state) => {
|
||||||
|
@ -86,7 +88,7 @@ window.addEventListener('message', ({ data }) => {
|
||||||
sendToChobitsu({ method: 'DOMStorage.enable' })
|
sendToChobitsu({ method: 'DOMStorage.enable' })
|
||||||
sendToDevtools({ method: 'DOM.documentUpdated' })
|
sendToDevtools({ method: 'DOM.documentUpdated' })
|
||||||
|
|
||||||
initClient(data.accountId)
|
initClient(data.accountId, data.verboseLogs)
|
||||||
logUpdates = data.logUpdates
|
logUpdates = data.logUpdates
|
||||||
|
|
||||||
if (window.tg !== undefined) {
|
if (window.tg !== undefined) {
|
||||||
|
@ -118,7 +120,7 @@ window.addEventListener('message', ({ data }) => {
|
||||||
chobitsu.sendRawMessage(data.value)
|
chobitsu.sendRawMessage(data.value)
|
||||||
} else if (data.event === 'ACCOUNT_CHANGED') {
|
} else if (data.event === 'ACCOUNT_CHANGED') {
|
||||||
window.tg?.close()
|
window.tg?.close()
|
||||||
initClient(data.accountId)
|
initClient(data.accountId, data.verboseLogs)
|
||||||
|
|
||||||
if (lastConnectionState !== 'offline') {
|
if (lastConnectionState !== 'offline') {
|
||||||
window.parent.postMessage({ event: 'CONNECTION_STATE', value: 'offline' }, HOST_ORIGIN)
|
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
|
// todo: we dont have a clean way to disconnect i think
|
||||||
window.tg?.close()
|
window.tg?.close()
|
||||||
if (lastAccountId) {
|
if (lastAccountId) {
|
||||||
initClient(lastAccountId)
|
initClient(lastAccountId, data.verboseLogs)
|
||||||
}
|
}
|
||||||
window.parent.postMessage({ event: 'CONNECTION_STATE', value: 'offline' }, HOST_ORIGIN)
|
window.parent.postMessage({ event: 'CONNECTION_STATE', value: 'offline' }, HOST_ORIGIN)
|
||||||
} else if (data.event === 'RECONNECT') {
|
} else if (data.event === 'RECONNECT') {
|
||||||
|
@ -139,6 +141,10 @@ window.addEventListener('message', ({ data }) => {
|
||||||
} else if (data.event === 'TOGGLE_UPDATES') {
|
} else if (data.event === 'TOGGLE_UPDATES') {
|
||||||
if (data.value === logUpdates) return
|
if (data.value === logUpdates) return
|
||||||
logUpdates = data.value
|
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
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue