step two towards nicer notifications. mark read if carbon arrives
This commit is contained in:
parent
02883a7ac4
commit
9a5a429888
|
@ -101,33 +101,37 @@ public class XmppConnectionService extends Service {
|
||||||
public void onMessagePacketReceived(Account account,
|
public void onMessagePacketReceived(Account account,
|
||||||
MessagePacket packet) {
|
MessagePacket packet) {
|
||||||
Message message = null;
|
Message message = null;
|
||||||
boolean notify = false;
|
boolean notify = true;
|
||||||
if ((packet.getType() == MessagePacket.TYPE_CHAT)) {
|
if ((packet.getType() == MessagePacket.TYPE_CHAT)) {
|
||||||
String pgpBody = MessageParser.getPgpBody(packet);
|
String pgpBody = MessageParser.getPgpBody(packet);
|
||||||
if (pgpBody != null) {
|
if (pgpBody != null) {
|
||||||
message = MessageParser.parsePgpChat(pgpBody, packet,
|
message = MessageParser.parsePgpChat(pgpBody, packet,
|
||||||
account, service);
|
account, service);
|
||||||
notify = false;
|
message.markUnread();
|
||||||
} else if (packet.hasChild("body")
|
} else if (packet.hasChild("body")
|
||||||
&& (packet.getBody().startsWith("?OTR"))) {
|
&& (packet.getBody().startsWith("?OTR"))) {
|
||||||
message = MessageParser.parseOtrChat(packet, account,
|
message = MessageParser.parseOtrChat(packet, account,
|
||||||
service);
|
service);
|
||||||
notify = true;
|
message.markUnread();
|
||||||
} else if (packet.hasChild("body")) {
|
} else if (packet.hasChild("body")) {
|
||||||
message = MessageParser.parsePlainTextChat(packet, account,
|
message = MessageParser.parsePlainTextChat(packet, account,
|
||||||
service);
|
service);
|
||||||
notify = true;
|
message.markUnread();
|
||||||
} else if (packet.hasChild("received")
|
} else if (packet.hasChild("received")
|
||||||
|| (packet.hasChild("sent"))) {
|
|| (packet.hasChild("sent"))) {
|
||||||
message = MessageParser.parseCarbonMessage(packet, account,
|
message = MessageParser.parseCarbonMessage(packet, account,
|
||||||
service);
|
service);
|
||||||
|
message.getConversation().markRead();
|
||||||
|
notify = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (packet.getType() == MessagePacket.TYPE_GROUPCHAT) {
|
} else if (packet.getType() == MessagePacket.TYPE_GROUPCHAT) {
|
||||||
message = MessageParser
|
message = MessageParser
|
||||||
.parseGroupchat(packet, account, service);
|
.parseGroupchat(packet, account, service);
|
||||||
if (message != null) {
|
if (message != null) {
|
||||||
notify = (message.getStatus() == Message.STATUS_RECIEVED);
|
if (message.getStatus() == Message.STATUS_RECIEVED) {
|
||||||
|
message.markUnread();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (packet.getType() == MessagePacket.TYPE_ERROR) {
|
} else if (packet.getType() == MessagePacket.TYPE_ERROR) {
|
||||||
message = MessageParser.parseError(packet, account, service);
|
message = MessageParser.parseError(packet, account, service);
|
||||||
|
@ -149,9 +153,6 @@ public class XmppConnectionService extends Service {
|
||||||
Log.d(LOGTAG, "error trying to parse date" + e.getMessage());
|
Log.d(LOGTAG, "error trying to parse date" + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (notify) {
|
|
||||||
message.markUnread();
|
|
||||||
}
|
|
||||||
Conversation conversation = message.getConversation();
|
Conversation conversation = message.getConversation();
|
||||||
conversation.getMessages().add(message);
|
conversation.getMessages().add(message);
|
||||||
if (packet.getType() != MessagePacket.TYPE_ERROR) {
|
if (packet.getType() != MessagePacket.TYPE_ERROR) {
|
||||||
|
@ -160,12 +161,10 @@ public class XmppConnectionService extends Service {
|
||||||
if (convChangedListener != null) {
|
if (convChangedListener != null) {
|
||||||
convChangedListener.onConversationListChanged();
|
convChangedListener.onConversationListChanged();
|
||||||
} else {
|
} else {
|
||||||
if (notify) {
|
|
||||||
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
||||||
mNotificationManager.notify(2342, UIHelper
|
mNotificationManager.notify(2342, UIHelper
|
||||||
.getUnreadMessageNotification(
|
.getNotification(
|
||||||
getApplicationContext(),getConversations()));
|
getApplicationContext(),getConversations(),notify));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -107,8 +107,8 @@ public class UIHelper {
|
||||||
return bitmap;
|
return bitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Notification getUnreadMessageNotification(Context context,
|
public static Notification getNotification(Context context,
|
||||||
List<Conversation> conversations) {
|
List<Conversation> conversations, boolean notify) {
|
||||||
|
|
||||||
String targetUuid = "";
|
String targetUuid = "";
|
||||||
List<Conversation> unread = new ArrayList<Conversation>();
|
List<Conversation> unread = new ArrayList<Conversation>();
|
||||||
|
@ -169,10 +169,12 @@ public class UIHelper {
|
||||||
mBuilder.setStyle(style);
|
mBuilder.setStyle(style);
|
||||||
}
|
}
|
||||||
mBuilder.setSmallIcon(R.drawable.notification);
|
mBuilder.setSmallIcon(R.drawable.notification);
|
||||||
|
if (notify) {
|
||||||
mBuilder.setLights(0xffffffff, 2000, 4000);
|
mBuilder.setLights(0xffffffff, 2000, 4000);
|
||||||
if (ringtone != null) {
|
if (ringtone != null) {
|
||||||
mBuilder.setSound(Uri.parse(ringtone));
|
mBuilder.setSound(Uri.parse(ringtone));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
|
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
|
||||||
stackBuilder.addParentStack(ConversationActivity.class);
|
stackBuilder.addParentStack(ConversationActivity.class);
|
||||||
|
|
Loading…
Reference in New Issue