push-notification-event-messagetrash.c revision bcb4e51a409d94ae670de96afb8483a4f7855294
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen/* Copyright (c) 2015-2018 Dovecot authors, see the included COPYING file */
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen#include "lib.h"
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen#include "mail-storage.h"
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen#include "mail-types.h"
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen#include "push-notification-drivers.h"
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen#include "push-notification-events.h"
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen#include "push-notification-event-messagetrash.h"
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen#include "push-notification-txn-msg.h"
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen#define EVENT_NAME "MessageTrash"
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainenstatic void push_notification_event_messagetrash_debug_msg
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen(struct push_notification_txn_event *event ATTR_UNUSED)
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen{
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen i_debug("%s: Message was marked as deleted", EVENT_NAME);
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen}
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainenstatic void push_notification_event_messagetrash_event(
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen struct push_notification_txn *ptxn,
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen struct push_notification_event_config *ec,
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen struct push_notification_txn_msg *msg,
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen struct mail *mail,
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen enum mail_flags old_flags)
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen{
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen struct push_notification_event_messagetrash_data *data;
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen enum mail_flags flags;
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen /* If data struct exists, that means the deleted flag was changed. */
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen data = push_notification_txn_msg_get_eventdata(msg, EVENT_NAME);
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen if ((data == NULL) && (old_flags & MAIL_DELETED) == 0) {
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen flags = mail_get_flags(mail);
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen if ((flags & MAIL_DELETED) != 0) {
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen data = p_new(ptxn->pool,
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen struct push_notification_event_messagetrash_data, 1);
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen data->trash = TRUE;
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen push_notification_txn_msg_set_eventdata(ptxn, msg, ec, data);
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen }
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen }
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen}
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen/* Event definition */
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainenextern struct push_notification_event push_notification_event_messagetrash;
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainenstruct push_notification_event push_notification_event_messagetrash = {
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen .name = EVENT_NAME,
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen .msg = {
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen .debug_msg = push_notification_event_messagetrash_debug_msg
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen },
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen .msg_triggers = {
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen .flagchange = push_notification_event_messagetrash_event
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen }
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen};
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen