package com.knacki.mimou.sms; import android.content.Context; import android.telephony.PhoneNumberUtils; import com.knacki.mimou.bridge.JSONObjifiable; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; /** * Created by thibal on 1/5/18. */ public class Conversation implements JSONObjifiable{ private final String address; private int messageCount = 0; private int unreadCount = 0; private long created = Long.MAX_VALUE; private ArrayList members = new ArrayList<>(); private Sms lastSms = null; private Sms firstUnread = null; public Conversation(String address) { this.address = address; } public Conversation addMessage(Context c, Sms sms) { messageCount++; if (lastSms == null || lastSms.getDate() < sms.getDate()) { lastSms = sms; } if (!sms.isRead()) { if (firstUnread == null || firstUnread.getDate() > sms.getDate()) firstUnread = sms; unreadCount++; } boolean containsMember = false; for (String i: members) { if (PhoneNumberUtils.compare(c, i, sms.getAddress())) { containsMember = true; break; } } if (!containsMember) { members.add(sms.getAddress()); } created = Math.min(created, sms.getDate()); return this; } public String getAddress() { return address; } @Override public JSONObject toJSON() throws JSONException { JSONObject obj = new JSONObject(); obj.put("created", created); obj.put("id", address); obj.put("is_archived", false); obj.put("is_member", true); JSONArray membersArr = new JSONArray(); for (String i: members) membersArr.put(i); obj.put("members", membersArr); obj.put("is_private", true); obj.put("messageCount", messageCount); obj.put("name", "address"); // FIXME if (lastSms != null) obj.put("last_msg", lastSms.getDate()); if (unreadCount > 0) obj.put("last_read", 1); // FIXME return obj; } }