MCPcopy
hub / github.com/wavetermdev/waveterm / CreateBlockCommand

Method CreateBlockCommand

pkg/wshrpc/wshserver/wshserver.go:225–297  ·  view source on GitHub ↗
(ctx context.Context, data wshrpc.CommandCreateBlockData)

Source from the content-addressed store, hash-verified

223}
224
225func (ws *WshServer) CreateBlockCommand(ctx context.Context, data wshrpc.CommandCreateBlockData) (*waveobj.ORef, error) {
226 ctx = waveobj.ContextWithUpdates(ctx)
227 tabId := data.TabId
228 blockData, err := wcore.CreateBlock(ctx, tabId, data.BlockDef, data.RtOpts)
229 if err != nil {
230 return nil, fmt.Errorf("error creating block: %w", err)
231 }
232 var layoutAction *waveobj.LayoutActionData
233 if data.TargetBlockId != "" {
234 switch data.TargetAction {
235 case "replace":
236 layoutAction = &waveobj.LayoutActionData{
237 ActionType: wcore.LayoutActionDataType_Replace,
238 TargetBlockId: data.TargetBlockId,
239 BlockId: blockData.OID,
240 Focused: data.Focused,
241 }
242 err = wcore.DeleteBlock(ctx, data.TargetBlockId, false)
243 if err != nil {
244 return nil, fmt.Errorf("error deleting block (trying to do block replace): %w", err)
245 }
246 case "splitright":
247 layoutAction = &waveobj.LayoutActionData{
248 ActionType: wcore.LayoutActionDataType_SplitHorizontal,
249 BlockId: blockData.OID,
250 TargetBlockId: data.TargetBlockId,
251 Position: "after",
252 Focused: data.Focused,
253 }
254 case "splitleft":
255 layoutAction = &waveobj.LayoutActionData{
256 ActionType: wcore.LayoutActionDataType_SplitHorizontal,
257 BlockId: blockData.OID,
258 TargetBlockId: data.TargetBlockId,
259 Position: "before",
260 Focused: data.Focused,
261 }
262 case "splitup":
263 layoutAction = &waveobj.LayoutActionData{
264 ActionType: wcore.LayoutActionDataType_SplitVertical,
265 BlockId: blockData.OID,
266 TargetBlockId: data.TargetBlockId,
267 Position: "before",
268 Focused: data.Focused,
269 }
270 case "splitdown":
271 layoutAction = &waveobj.LayoutActionData{
272 ActionType: wcore.LayoutActionDataType_SplitVertical,
273 BlockId: blockData.OID,
274 TargetBlockId: data.TargetBlockId,
275 Position: "after",
276 Focused: data.Focused,
277 }
278 default:
279 return nil, fmt.Errorf("invalid target action: %s", data.TargetAction)
280 }
281 } else {
282 layoutAction = &waveobj.LayoutActionData{

Callers 1

PathCommandMethod · 0.95

Calls 6

ContextWithUpdatesFunction · 0.92
CreateBlockFunction · 0.92
DeleteBlockFunction · 0.92
QueueLayoutActionForTabFunction · 0.92
ContextGetUpdatesRtnFunction · 0.92
SendUpdateEventsMethod · 0.80

Tested by

no test coverage detected