import { CSSProperties, useMemo } from 'react' import { getURLsFromString } from '~/utils/url' import { Prisma } from '@prisma/client' import { ActionMode } from '~/utils/types' import classNames from 'classnames' import ChronologicalScrollableFeed from '~/components/ChronologicalScrollableFeed' export default function Logs(props: { logs: Prisma.JsonValue | string[] className?: string isCompleted: boolean isFocused?: boolean mode: ActionMode style?: CSSProperties }) { const logs = useMemo((): string[] => { if (!Array.isArray(props.logs)) return [] if (!props.logs || !props.logs.length) return [] const lines = [...props.logs.map(String)] if (props.isCompleted) { lines.push('\n✔ Transaction completed') } return lines }, [props.logs, props.isCompleted]) return ( {logs.length === 0 ? ( props.mode === 'console' ? ( No logs received yet. Use ctx.log() in your action to print output here. ) : ( No logs received yet ) ) : ( )} ) } function LogLines({ logs }: { logs: string[] }) { return ( <> {logs.map((line, i) => { const urlMatches = getURLsFromString(line) line = line.replace(/, '<').replace(/>/, '>') if (urlMatches?.length) { let lineWithUrls = line for (let i = 0; i < urlMatches.length; i++) { const url = urlMatches[i] lineWithUrls = lineWithUrls.replace( url, `${url}` ) } return ( ) } return {line} })} > ) }
No logs received yet. Use ctx.log() in your action to print output here.
ctx.log()