in src/dataEditor/dataEditorClient.ts [224:325]
private async setupDataEditor() {
assert(
checkpointPath && checkpointPath.length > 0,
'checkpointPath is not set'
)
let data = {
byteOrderMark: '',
changeCount: 0,
computedFileSize: 0,
diskFileSize: 0,
fileName: this.fileToEdit,
language: '',
type: '',
undoCount: 0,
}
// create a session and capture the session id, content type, and file size
try {
const createSessionResponse = await createSession(
this.fileToEdit,
undefined,
checkpointPath
)
this.omegaSessionId = createSessionResponse.getSessionId()
assert(this.omegaSessionId.length > 0, 'omegaSessionId is not set')
addActiveSession(this.omegaSessionId)
data.diskFileSize = data.computedFileSize =
createSessionResponse.hasFileSize()
? (createSessionResponse.getFileSize() as number)
: 0
const contentTypeResponse = await getContentType(
this.omegaSessionId,
0,
Math.min(1024, data.computedFileSize)
)
data.type = contentTypeResponse.getContentType()
assert(data.type.length > 0, 'contentType is not set')
const byteOrderMarkResponse = await getByteOrderMark(
this.omegaSessionId,
0
)
data.byteOrderMark = byteOrderMarkResponse.getByteOrderMark()
assert(data.byteOrderMark.length > 0, 'byteOrderMark is not set')
const languageResponse = await getLanguage(
this.omegaSessionId,
0,
Math.min(1024, data.computedFileSize),
data.byteOrderMark
)
data.language = languageResponse.getLanguage()
assert(data.language.length > 0, 'language is not set')
data.diskFileSize = data.computedFileSize =
createSessionResponse.hasFileSize()
? (createSessionResponse.getFileSize() as number)
: 0
} catch {
const msg = `Failed to create session for ${this.fileToEdit}`
getLogger().error({
err: {
msg: msg,
stack: new Error().stack,
},
})
vscode.window.showErrorMessage(msg)
}
// create the viewport
try {
const viewportDataResponse = await createViewport(
undefined,
this.omegaSessionId,
0,
VIEWPORT_CAPACITY_MAX,
false
)
this.currentViewportId = viewportDataResponse.getViewportId()
assert(this.currentViewportId.length > 0, 'currentViewportId is not set')
await viewportSubscribe(this.panel, this.currentViewportId)
await sendViewportRefresh(this.panel, viewportDataResponse)
} catch {
const msg = `Failed to create viewport for ${this.fileToEdit}`
getLogger().error({
err: {
msg: msg,
stack: new Error().stack,
},
})
vscode.window.showErrorMessage(msg)
}
// send the initial file info to the webview
await this.panel.webview.postMessage({
command: MessageCommand.fileInfo,
data: data,
})
}