conference histories are now working. only the actually needed history is queried
This commit is contained in:
parent
962263e6e6
commit
f6a6982bd0
|
@ -73,7 +73,7 @@ public class Conversation extends AbstractEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isRead() {
|
public boolean isRead() {
|
||||||
if (this.messages == null) return true;
|
if ((this.messages == null)||(this.messages.size() == 0)) return true;
|
||||||
return this.messages.get(this.messages.size() - 1).isRead();
|
return this.messages.get(this.messages.size() - 1).isRead();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -127,5 +127,9 @@ public class Message extends AbstractEntity {
|
||||||
public void markUnread() {
|
public void markUnread() {
|
||||||
this.read = false;
|
this.read = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setTime(long time) {
|
||||||
|
this.timeSent = time;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,6 +229,10 @@ public class DatabaseBackend extends SQLiteOpenHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void mergeMessageIntoConversation(Message message) {
|
||||||
|
// select counterpart,body,(timeSent/1000)-180 as min,(timeSent/1000)+180 as max from messages where min<1392035670 and max>1392035670;
|
||||||
|
}
|
||||||
|
|
||||||
public List<Contact> getContacts(Account account) {
|
public List<Contact> getContacts(Account account) {
|
||||||
List<Contact> list = new ArrayList<Contact>();
|
List<Contact> list = new ArrayList<Contact>();
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
package de.gultsch.chat.services;
|
package de.gultsch.chat.services;
|
||||||
|
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -28,12 +31,8 @@ import de.gultsch.chat.xmpp.XmppConnection;
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.CursorLoader;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.Loader;
|
|
||||||
import android.content.Loader.OnLoadCompleteListener;
|
|
||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
import android.database.Cursor;
|
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
@ -115,8 +114,7 @@ public class XmppConnectionService extends Service {
|
||||||
String counterPart = null;
|
String counterPart = null;
|
||||||
conversation = findOrCreateConversation(account, jid, muc);
|
conversation = findOrCreateConversation(account, jid, muc);
|
||||||
if (muc) {
|
if (muc) {
|
||||||
if ((fromParts.length == 1) || (packet.hasChild("subject"))
|
if ((fromParts.length == 1) || (packet.hasChild("subject"))) {
|
||||||
|| (packet.hasChild("delay"))) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
counterPart = fromParts[1];
|
counterPart = fromParts[1];
|
||||||
|
@ -129,6 +127,16 @@ public class XmppConnectionService extends Service {
|
||||||
}
|
}
|
||||||
Message message = new Message(conversation, counterPart, body,
|
Message message = new Message(conversation, counterPart, body,
|
||||||
Message.ENCRYPTION_NONE, status);
|
Message.ENCRYPTION_NONE, status);
|
||||||
|
if (packet.hasChild("delay")) {
|
||||||
|
try {
|
||||||
|
String stamp = packet.findChild("delay").getAttribute("stamp");
|
||||||
|
stamp = stamp.replace("Z","+0000");
|
||||||
|
Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").parse(stamp);
|
||||||
|
message.setTime(date.getTime());
|
||||||
|
} catch (ParseException e) {
|
||||||
|
Log.d(LOGTAG,"error trying to parse date"+e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
if(notify) {
|
if(notify) {
|
||||||
message.markUnread();
|
message.markUnread();
|
||||||
}
|
}
|
||||||
|
@ -550,7 +558,15 @@ public class XmppConnectionService extends Service {
|
||||||
packet.setAttribute("to", muc + "/" + account.getUsername());
|
packet.setAttribute("to", muc + "/" + account.getUsername());
|
||||||
Element x = new Element("x");
|
Element x = new Element("x");
|
||||||
x.setAttribute("xmlns", "http://jabber.org/protocol/muc");
|
x.setAttribute("xmlns", "http://jabber.org/protocol/muc");
|
||||||
|
if (conversation.getMessages().size()!=0) {
|
||||||
|
Element history = new Element("history");
|
||||||
|
history.setAttribute("seconds",(System.currentTimeMillis() - conversation.getLatestMessageDate()) / 1000+"");
|
||||||
|
x.addChild(history);
|
||||||
|
} else {
|
||||||
|
Log.d(LOGTAG,"conversation had no prior messages"+conversation.getMessages().size());
|
||||||
|
}
|
||||||
packet.addChild(x);
|
packet.addChild(x);
|
||||||
|
Log.d(LOGTAG,packet.toString());
|
||||||
connections.get(conversation.getAccount()).sendPresencePacket(packet);
|
connections.get(conversation.getAccount()).sendPresencePacket(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue