Skip to content
This repository was archived by the owner on Jul 25, 2024. It is now read-only.

Commit 2c8300a

Browse files
Sam1301timabbott
authored andcommitted
Process update message events.
1 parent 846edb7 commit 2c8300a

File tree

4 files changed

+58
-5
lines changed

4 files changed

+58
-5
lines changed

app/src/main/java/com/zulip/android/activities/MessageListFragment.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -719,4 +719,8 @@ public boolean scrolledToLastMessage() {
719719
Object object = adapter.getItem(linearLayoutManager.findLastVisibleItemPosition());
720720
return object instanceof Message && (((Message) object).getId() >= app.getMaxMessageId() - 2);
721721
}
722+
723+
public RecyclerMessageAdapter getAdapter() {
724+
return this.adapter;
725+
}
722726
}

app/src/main/java/com/zulip/android/activities/ZulipActivity.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2308,4 +2308,16 @@ public void onClick(View view) {
23082308
public enum Flag {
23092309
RESET_DATABASE,
23102310
}
2311+
2312+
/**
2313+
* TODO: add description
2314+
* @return
2315+
*/
2316+
public MessageListFragment getCurrentMessageList() {
2317+
if (narrowedList == null) {
2318+
return homeList;
2319+
} else {
2320+
return narrowedList;
2321+
}
2322+
}
23112323
}

app/src/main/java/com/zulip/android/networking/AsyncGetEvents.java

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import android.util.Log;
88
import android.widget.Toast;
99

10+
import com.j256.ormlite.dao.Dao;
1011
import com.j256.ormlite.dao.RuntimeExceptionDao;
1112
import com.j256.ormlite.misc.TransactionManager;
1213
import com.zulip.android.R;
@@ -24,6 +25,7 @@
2425
import com.zulip.android.networking.response.events.MessageWrapper;
2526
import com.zulip.android.networking.response.events.MutedTopicsWrapper;
2627
import com.zulip.android.networking.response.events.SubscriptionWrapper;
28+
import com.zulip.android.networking.response.events.UpdateMessageWrapper;
2729
import com.zulip.android.util.MutedTopics;
2830
import com.zulip.android.util.TypeSwapper;
2931
import com.zulip.android.util.ZLog;
@@ -341,16 +343,21 @@ public Message convert(MessageWrapper messageWrapper) {
341343
processMessages(messages);
342344
}
343345

346+
// update message
347+
List<EventsBranch> updateMessageEvents = events.getEventsOfBranchType(EventsBranch.BranchType.UPDATE_MESSAGE);
348+
if (!updateMessageEvents.isEmpty()) {
349+
Log.i("AsyncGetEvents", "Received " + updateMessageEvents.size()
350+
+ " update message events");
351+
processUpdateMessages(updateMessageEvents);
352+
}
353+
344354
//get message time limit events
345355
List<EventsBranch> messageTimeLimit = events.getEventsOfBranchType(EventsBranch.BranchType.EDIT_MESSAGE_TIME_LIMIT);
346356
if (!messageTimeLimit.isEmpty()) {
347357
Log.i("AsyncGetEvents", "Received " + messageTimeLimit.size()
348358
+ " realm event");
349359
processMessageEditParam(messageTimeLimit);
350360
}
351-
352-
// update message
353-
// TODO: handle update message event
354361
}
355362

356363
/**
@@ -453,6 +460,10 @@ public void run() {
453460
});
454461
}
455462

463+
/**
464+
* TODO: add description
465+
* @param messageEditLimitEvents
466+
*/
456467
private void processMessageEditParam(List<EventsBranch> messageEditLimitEvents) {
457468
for (EventsBranch wrapper : messageEditLimitEvents) {
458469
EditMessageWrapper timeLimitResponse = (EditMessageWrapper) wrapper;
@@ -462,4 +473,30 @@ private void processMessageEditParam(List<EventsBranch> messageEditLimitEvents)
462473
);
463474
}
464475
}
476+
477+
private void processUpdateMessages(List<EventsBranch> updateEvents) {
478+
for (EventsBranch event : updateEvents) {
479+
UpdateMessageWrapper updateEvent = (UpdateMessageWrapper) event;
480+
Message message = updateEvent.getMessage();
481+
if (message != null) {
482+
message.setFormattedContent(updateEvent.getFormattedContent());
483+
484+
// update the message in database
485+
Dao<Message, Integer> messageDao = app.getDao(Message.class);
486+
try {
487+
messageDao.update(message);
488+
} catch (SQLException e) {
489+
ZLog.logException(e);
490+
}
491+
}
492+
}
493+
494+
mActivity.runOnUiThread(new Runnable() {
495+
@Override
496+
public void run() {
497+
// notify adapter dataset changed
498+
mActivity.getCurrentMessageList().getAdapter().notifyDataSetChanged();
499+
}
500+
});
501+
}
465502
}

app/src/main/java/com/zulip/android/networking/response/events/UpdateMessageWrapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import com.zulip.android.models.Message;
77
import com.zulip.android.util.ZLog;
88

9-
import java.sql.Date;
109
import java.sql.SQLException;
1110
import java.util.List;
1211

@@ -26,7 +25,7 @@ public class UpdateMessageWrapper extends EventsBranch {
2625
private String senderEmail;
2726

2827
@SerializedName("edit_timestamp")
29-
private Date editedTimeStamp;
28+
private long editedTimeStamp;
3029

3130
@SerializedName("orig_content")
3231
private String origContent;
@@ -62,6 +61,7 @@ public Message getMessage() {
6261
return null;
6362
}
6463

64+
// TODO: remove these if cntent is not used
6565
public String getContent() {
6666
return this.content;
6767
}

0 commit comments

Comments
 (0)