88 EvaluateRequest
99} from "@jsheets/protocol/src/jsheets/api/snippet_runtime_pb" ;
1010import * as SheetProtocol from "@jsheets/protocol/src/jsheets/api/sheet_pb" ;
11- import { Sheet } from '../sheet'
11+ import { ComponentState , SheetState , SnippetState } from '../sheet'
1212
1313export interface EvaluationListener {
1414 onEnd ( ) : void
@@ -108,7 +108,7 @@ class WebSocketEvaluation implements Evaluation {
108108export class SheetClient {
109109 constructor ( private readonly baseUrl : string ) { }
110110
111- async find ( id : string ) : Promise < Sheet > {
111+ async find ( id : string ) : Promise < SheetState > {
112112 const call = await fetch ( `${ this . baseUrl } /api/v1/sheets/${ id } ` )
113113 if ( call . ok ) {
114114 const body = await call . json ( )
@@ -117,7 +117,7 @@ export class SheetClient {
117117 throw new Error ( `${ call . status } ` )
118118 }
119119
120- async post ( snippet : Partial < SheetProtocol . Sheet . AsObject > ) : Promise < Sheet > {
120+ async post ( snippet : Partial < SheetProtocol . Sheet . AsObject > ) : Promise < SheetState > {
121121 convertRequest ( snippet )
122122 const call = await fetch ( `${ this . baseUrl } /api/v1/sheets` , {
123123 method : 'POST' ,
@@ -131,28 +131,34 @@ export class SheetClient {
131131 }
132132}
133133
134- function createSheetFromResponse ( response : Record < string , any > ) : Sheet {
134+ function createSheetFromResponse ( response : Record < string , any > ) : SheetState {
135135 convertResponse ( response )
136136 const message = response as SheetProtocol . Sheet . AsObject
137+ const snippets : Record < string , SnippetState > = { }
138+ for ( const snippet of message . snippetsList ) {
139+ const components : Record < string , ComponentState > = { }
140+ for ( const component of snippet . componentsList ) {
141+ const kind = ( component . kind as unknown ) as string
142+ components [ component . id ] = {
143+ id : component . id ,
144+ order : component . order ,
145+ type : kind . toLowerCase ( ) === "code" ? "code" : "text" ,
146+ content : component . content
147+ }
148+ }
149+ snippets [ snippet . id ] = {
150+ id : snippet . id ,
151+ order : snippet . order ,
152+ title : snippet . name ,
153+ components
154+ }
155+ }
137156 return {
138157 id : message . id ,
139158 title : message . title ,
140159 description : message . description ,
141- snippets : message . snippetsList . map ( snippet => ( {
142- id : snippet . id ,
143- order : snippet . order ,
144- title : snippet . name ,
145- components : snippet . componentsList . map ( component => {
146- const kind = ( component . kind as unknown ) as string
147- return {
148- id : component . id ,
149- order : component . order ,
150- type : kind . toLowerCase ( ) ,
151- content : component . content
152- }
153- } )
154- } ) )
155- } as Sheet
160+ snippets : snippets
161+ } as SheetState
156162}
157163
158164function convertResponse ( object : Record < string , any > ) {
0 commit comments