From 5fc0435cc1227bf445d06a3931343020faaecd10 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Thu, 9 Mar 2017 15:34:32 +0100 Subject: Save unsent messages (acc offline etc) and send later; don't send pgp messages if pgp error --- .../src/module/xep/0203_delayed_delivery.vala | 28 ++++++++-------------- 1 file changed, 10 insertions(+), 18 deletions(-) (limited to 'vala-xmpp/src/module/xep/0203_delayed_delivery.vala') diff --git a/vala-xmpp/src/module/xep/0203_delayed_delivery.vala b/vala-xmpp/src/module/xep/0203_delayed_delivery.vala index 528b0017..9f9761f2 100644 --- a/vala-xmpp/src/module/xep/0203_delayed_delivery.vala +++ b/vala-xmpp/src/module/xep/0203_delayed_delivery.vala @@ -6,16 +6,17 @@ namespace Xmpp.Xep.DelayedDelivery { public class Module : XmppStreamModule { public const string ID = "0203_delayed_delivery"; + public static void set_message_delay(Message.Stanza message, DateTime datetime) { + StanzaNode delay_node = (new StanzaNode.build("delay", NS_URI)).add_self_xmlns(); + delay_node.put_attribute("stamp", (new DateTimeProfiles.Module()).to_datetime(datetime)); + message.stanza.put_node(delay_node); + } + public static DateTime? get_send_time(Message.Stanza message) { StanzaNode? delay_node = message.stanza.get_subnode("delay", NS_URI); if (delay_node != null) { string time = delay_node.get_attribute("stamp"); - return new DateTime.utc(int.parse(time.substring(0, 4)), - int.parse(time.substring(5, 2)), - int.parse(time.substring(8, 2)), - int.parse(time.substring(11, 2)), - int.parse(time.substring(14, 2)), - int.parse(time.substring(17, 2))); + return (new DateTimeProfiles.Module()).parse_string(time); } else { return null; } @@ -39,24 +40,15 @@ namespace Xmpp.Xep.DelayedDelivery { public override string get_id() { return ID; } private void on_pre_received_message(XmppStream stream, Message.Stanza message) { - StanzaNode? delay_node = message.stanza.get_subnode("delay", NS_URI); - if (delay_node != null) { - string time = delay_node.get_attribute("stamp"); - DateTime datetime = new DateTime.utc(int.parse(time.substring(0, 4)), - int.parse(time.substring(5, 2)), - int.parse(time.substring(8, 2)), - int.parse(time.substring(11, 2)), - int.parse(time.substring(14, 2)), - int.parse(time.substring(17, 2))); - message.add_flag(new MessageFlag(datetime)); - } + DateTime? datetime = get_send_time(message); + if (datetime != null) message.add_flag(new MessageFlag(datetime)); } } public class MessageFlag : Message.MessageFlag { public const string ID = "delayed_delivery"; - DateTime datetime; + public DateTime datetime { get; private set; } public MessageFlag(DateTime datetime) { this.datetime = datetime; -- cgit v1.2.3-70-g09d2