Conversation.java 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.knacki.mimou.sms;
  2. import android.content.Context;
  3. import android.telephony.PhoneNumberUtils;
  4. import com.knacki.mimou.bridge.JSONObjifiable;
  5. import org.json.JSONArray;
  6. import org.json.JSONException;
  7. import org.json.JSONObject;
  8. import java.util.ArrayList;
  9. /**
  10. * Created by thibal on 1/5/18.
  11. */
  12. public class Conversation implements JSONObjifiable{
  13. private final String address;
  14. private int messageCount = 0;
  15. private int unreadCount = 0;
  16. private long created = Long.MAX_VALUE;
  17. private ArrayList<String> members = new ArrayList<>();
  18. private Sms lastSms = null;
  19. private Sms firstUnread = null;
  20. public Conversation(String address) {
  21. this.address = address;
  22. }
  23. public Conversation addMessage(Context c, Sms sms) {
  24. messageCount++;
  25. if (lastSms == null || lastSms.getDate() < sms.getDate()) {
  26. lastSms = sms;
  27. }
  28. if (!sms.isRead()) {
  29. if (firstUnread == null || firstUnread.getDate() > sms.getDate())
  30. firstUnread = sms;
  31. unreadCount++;
  32. }
  33. boolean containsMember = false;
  34. for (String i: members) {
  35. if (PhoneNumberUtils.compare(c, i, sms.getAddress())) {
  36. containsMember = true;
  37. break;
  38. }
  39. }
  40. if (!containsMember) {
  41. members.add(sms.getAddress());
  42. }
  43. created = Math.min(created, sms.getDate());
  44. return this;
  45. }
  46. public String getAddress() {
  47. return address;
  48. }
  49. @Override
  50. public JSONObject toJSON() throws JSONException {
  51. JSONObject obj = new JSONObject();
  52. obj.put("created", created);
  53. obj.put("id", address);
  54. obj.put("is_archived", false);
  55. obj.put("is_member", true);
  56. JSONArray membersArr = new JSONArray();
  57. for (String i: members)
  58. membersArr.put(i);
  59. obj.put("members", membersArr);
  60. obj.put("is_private", true);
  61. obj.put("messageCount", messageCount);
  62. obj.put("name", "address"); // FIXME
  63. if (lastSms != null)
  64. obj.put("last_msg", lastSms.getDate());
  65. if (unreadCount > 0)
  66. obj.put("last_read", 1); // FIXME
  67. return obj;
  68. }
  69. }