How to return and update previous card using Card Service?

36 Views Asked by At

My root card contains a list of some items. I make a request inside root card. Whem I click on some item I'm pushing the card with details of this item where I could change state of this item on server (by post request)

After that I want to return on previous card (root) and get new list of items from my server. But it doesn't work

/** Call this card in homepageTrigger */
function createRootCard() {
  /** Get items from server */
  const items = getItems();

  const card = CardService.newCardBuilder();

  /** add items to card where every item has action click to open item details card */

  items.forEach(item => {
   /** some code */

   const header = CardService.newDecoratedText()
    .setText(item.name)
    .setBottomLabel(item.type)
    .setOnClickAction(
      CardService.newAction()
      .setFunctionName('openDetails')
      .setParameters(item)
    );

  /** some code */
  })

  return card.build();
}

/** Add details card */

function openDetails(params) {
  const { parameters } = params;

  return CardService.newNavigation().pushCard(
      createDetailsCard(parameters)
    );
  };
}

/** Create details card*/
function createDetailsCard(...item) {
  const card = CardService.newCardBuilder();

  const contextButton = CardService.newTextButton()
      .setText("Add item")
      .setOnClickAction(
         CardService.newAction()
           .setFunctionName('addItem')
           .setParameters({ id: item.id })
        })
      );

  /** Add button to card */

  return card.build();
}


function addItem(params) {
  const { parameters } = params;

  /** Send add request on server */
  addItemOnServer(parameters.id);

  /** Return on previous card and update state */
  return CardService.newActionResponseBuilder()
      .setNavigation(CardService.newNavigation().popCard())
      .setStateChanged(true)
      .build();
}
0

There are 0 best solutions below