mirror of
https://github.com/moparisthebest/k-9
synced 2024-12-17 21:32:26 -05:00
Fix marking messages as read from notification.
MessagingController.setFlag(Account, List<Long>, Flag, boolean, boolean) expects database IDs, while Message.getId() returns UIDs. Fix the operation by using a variant that expects UIDs.
This commit is contained in:
parent
2159f1c9bd
commit
c0e0ac9d34
@ -25,7 +25,7 @@ public class NotificationActionService extends CoreService {
|
|||||||
|
|
||||||
private final static String EXTRA_ACCOUNT = "account";
|
private final static String EXTRA_ACCOUNT = "account";
|
||||||
private final static String EXTRA_MESSAGE = "message";
|
private final static String EXTRA_MESSAGE = "message";
|
||||||
private final static String EXTRA_MESSAGE_IDS = "message_ids";
|
private final static String EXTRA_MESSAGE_LIST = "messages";
|
||||||
|
|
||||||
public static PendingIntent getReplyIntent(Context context, final Account account, final Message message) {
|
public static PendingIntent getReplyIntent(Context context, final Account account, final Message message) {
|
||||||
Intent i = new Intent(context, NotificationActionService.class);
|
Intent i = new Intent(context, NotificationActionService.class);
|
||||||
@ -37,15 +37,15 @@ public class NotificationActionService extends CoreService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static PendingIntent getReadAllMessagesIntent(Context context, final Account account, final Collection<Message> messages) {
|
public static PendingIntent getReadAllMessagesIntent(Context context, final Account account, final Collection<Message> messages) {
|
||||||
ArrayList<Long> messageIds = new ArrayList<Long>();
|
ArrayList<MessageReference> refs = new ArrayList<MessageReference>();
|
||||||
|
|
||||||
for (Message m : messages) {
|
for (Message m : messages) {
|
||||||
messageIds.add(m.getId());
|
refs.add(m.makeMessageReference());
|
||||||
}
|
}
|
||||||
|
|
||||||
Intent i = new Intent(context, NotificationActionService.class);
|
Intent i = new Intent(context, NotificationActionService.class);
|
||||||
i.putExtra(EXTRA_ACCOUNT, account.getUuid());
|
i.putExtra(EXTRA_ACCOUNT, account.getUuid());
|
||||||
i.putExtra(EXTRA_MESSAGE_IDS, messageIds);
|
i.putExtra(EXTRA_MESSAGE_LIST, refs);
|
||||||
i.setAction(READ_ALL_ACTION);
|
i.setAction(READ_ALL_ACTION);
|
||||||
|
|
||||||
return PendingIntent.getService(context, account.getAccountNumber(), i, PendingIntent.FLAG_UPDATE_CURRENT);
|
return PendingIntent.getService(context, account.getAccountNumber(), i, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
@ -64,9 +64,11 @@ public class NotificationActionService extends CoreService {
|
|||||||
if (K9.DEBUG)
|
if (K9.DEBUG)
|
||||||
Log.i(K9.LOG_TAG, "NotificationActionService marking messages as read");
|
Log.i(K9.LOG_TAG, "NotificationActionService marking messages as read");
|
||||||
|
|
||||||
ArrayList<Long> messageIds = (ArrayList<Long>) intent.getSerializableExtra(EXTRA_MESSAGE_IDS);
|
ArrayList<MessageReference> refs = (ArrayList<MessageReference>)
|
||||||
|
intent.getSerializableExtra(EXTRA_MESSAGE_LIST);
|
||||||
controller.setFlag(account, messageIds, Flag.SEEN, true, false);
|
for (MessageReference ref : refs) {
|
||||||
|
controller.setFlag(account, ref.folderName, ref.uid, Flag.SEEN, true);
|
||||||
|
}
|
||||||
} else if (REPLY_ACTION.equals(intent.getAction())) {
|
} else if (REPLY_ACTION.equals(intent.getAction())) {
|
||||||
if (K9.DEBUG)
|
if (K9.DEBUG)
|
||||||
Log.i(K9.LOG_TAG, "NotificationActionService initiating reply");
|
Log.i(K9.LOG_TAG, "NotificationActionService initiating reply");
|
||||||
|
Loading…
Reference in New Issue
Block a user