()
| 115 | })) |
| 116 | |
| 117 | export function useDataStateMapper() { |
| 118 | const { addPaths, setSandboxId, setUrl, upsertCommand, addGeneratedFiles } = |
| 119 | useSandboxStore() |
| 120 | const { errors } = useCommandErrorsLogs() |
| 121 | const { setCursor } = useMonitorState() |
| 122 | |
| 123 | return (data: DataUIPart<DataPart>) => { |
| 124 | switch (data.type) { |
| 125 | case 'data-create-sandbox': |
| 126 | if (data.data.sandboxId) { |
| 127 | setSandboxId(data.data.sandboxId) |
| 128 | } |
| 129 | break |
| 130 | case 'data-generating-files': |
| 131 | if (data.data.status === 'uploaded') { |
| 132 | setCursor(errors.length) |
| 133 | addPaths(data.data.paths) |
| 134 | addGeneratedFiles(data.data.paths) |
| 135 | } |
| 136 | break |
| 137 | case 'data-run-command': |
| 138 | if ( |
| 139 | data.data.commandId && |
| 140 | (data.data.status === 'executing' || data.data.status === 'running') |
| 141 | ) { |
| 142 | upsertCommand({ |
| 143 | background: data.data.status === 'running', |
| 144 | sandboxId: data.data.sandboxId, |
| 145 | cmdId: data.data.commandId, |
| 146 | command: data.data.command, |
| 147 | args: data.data.args, |
| 148 | }) |
| 149 | } |
| 150 | break |
| 151 | case 'data-get-sandbox-url': |
| 152 | if (data.data.url) { |
| 153 | setUrl(data.data.url, crypto.randomUUID()) |
| 154 | } |
| 155 | break |
| 156 | default: |
| 157 | break |
| 158 | } |
| 159 | } |
| 160 | } |
no test coverage detected