Skip to content

[BUG] When replacing a variable's value with object, it gets merged into an existing object #338

Open
@jnv

Description

@jnv

Provide a general summary of the issue in the Title above

I have a Comlink with roughly the following flow (based on linkedin's PublishPost use case):

set {
  content = input.link ? {article: { source: input.link, title: input.title || input.link }} : undefined
}
// ...something
set if (Array.isArray(images) && images.length > 0) {
  // set content (and override link if it was set); assume single image here
  content = {media: images[0]}
}
set if (Array.isArray(images) && images.length > 1) {
  content = {
    multiImage: {
      images: images,
    }
  }
}

Expected Behavior

I expect the content variable to always contain a new object with the single property; either {article}, {media}, or {multiImage}.

Current Behavior

It seems the existing object in the content variable gets merged with the new object instead, so I end up with {article, media}, {media, multiImage} and similar.

Possible Solution

I suspect the culprit might be in the interpreter; updating the stack is done with mergeVariables function which merges objects recursively:

this.stack = mergeVariables(this.stack, result.value as NonPrimitive);

Your Environment

  • Version used: OneSDK v2.3.0
  • Environment name and version: Node v18.12.1
  • Operating System and version: Fedora Linux 37

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions