3

If we update an activity after retrieving from stream, we are able to update

String feedId = "ef202000-3f6b-11e7-8080-800171e94936";
Feed feed = StreamUtils.getStreamClient().newFeed(Constants.FEED_SLUG, "feed_66_103");
NotificationActivityServiceImpl<MessageItem> userMessagesActivityService = feed.newNotificationActivityService(MessageItem.class);
FeedFilter filter = new FeedFilter.Builder().withIdGreaterThanEquals(feedId).withLimit(1).build();
StreamResponse<NotificationActivity<MessageItem>> userMessageItems = userMessagesActivityService.getActivities(filter, false, false);
if (userMessageItems != null && userMessageItems.getResults().size() != 0) {
    for (NotificationActivity<MessageItem> messageItemNotificationActivity : userMessageItems.getResults()) {
        for (MessageItem messageItem : messageItemNotificationActivity.getActivities()) {
            messageItem.setMessage_status(MESSAGE_STATUS_READ);
            userMessagesActivityService.updateActivities(Collections.singletonList(messageItem));
            Log.d("Message json", new Gson().toJson(messageItem));
        }
    }
}

But, If we update it by constructing the activity, we are unable to update

Feed feed = StreamUtils.getStreamClient().newFeed(Constants.FEED_SLUG, "chat_66_103");
String messageJson = "{\"channel_id\":\"feed_66_103\",\"message\":{\"message_text\":\"Test message\"},\"message_status\":\"DELIVERED\",\"receivers\":[103],\"actor\":\"66\",\"foreignId\":\"66_103_1495511846405\",\"id\":\"ef202000-3f6b-11e7-8080-800171e94936\",\"object\":\"delivery_message\",\"time\":\"May 23, 2017 9:27:26 AM\",\"to\":[],\"verb\":\"delivery_message\"}";
MessageItem messageItem = new Gson().fromJson(messageJson, MessageItem.class);
messageItem.setMessage_status(MESSAGE_STATUS_READ);
NotificationActivityServiceImpl<MessageItem> userMessagesActivityService = feed.newNotificationActivityService(MessageItem.class);
userMessagesActivityService.updateActivities(Collections.singletonList(messageItem));
Log.d("Message json", new Gson().toJson(messageItem));

In the setMessage_status method, I'm changing values of variables object, verb, message_status

Here even the logs printing the same object. We don't know what we are missing.

We tried it from python client as well. Same issue there as well.

Community
  • 1
  • 1
Sanyasirao Mopada
  • 943
  • 12
  • 31

1 Answers1

0

Updating activities is done using your foreign ID. Currently your payload is sending this value in a field called foreignId and our endpoint will be expecting foreign_id.

iandouglas
  • 4,146
  • 2
  • 33
  • 33
  • Thanks for reply. But as for BaseActivity model, while serializing json to java model, It assigning foreignId value to foreign_id.. Even I'm able to log and access it from java model. Below is the snippet present in BaseActivity @JsonProperty("foreign_id") protected String foreignId; Even I set the foreignId using setForeignId method, but still unable to update. – Sanyasirao Mopada May 24 '17 at 06:08
  • Okay, your code didn't present that. The last line of your code dumps the JSON, can you add that to your original question so we can see it too? `Log.d("Message json", new Gson().toJson(messageItem));` – iandouglas May 25 '17 at 15:02
  • Also, our SDKs would usually return a payload of data from an update call, like your call here. Could you check for a return value and add that to your question as well? `userMessagesActivityService.updateActivities(Collections.singletonList(messageItem));` – iandouglas May 25 '17 at 15:04