about summary refs log tree commit diff stats
path: root/src/event/server_events.c
diff options
context:
space:
mode:
authorMichael Vetter <jubalh@iodoru.org>2019-08-02 15:52:49 +0200
committerMichael Vetter <jubalh@iodoru.org>2019-08-02 15:52:49 +0200
commit25501a5d8aacb3ab20daad761333e26fbb8822dd (patch)
tree5f3c5bb366327470212ef630023781136a55a672 /src/event/server_events.c
parent5d711639b060eb0454fee69c5f8e5ffcc27f492f (diff)
downloadprofani-tty-25501a5d8aacb3ab20daad761333e26fbb8822dd.tar.gz
Improve sv_ev_roster_received() last activity check
We don't need to do all the timing stuff if last activity is disabled
anyways.
Diffstat (limited to 'src/event/server_events.c')
-rw-r--r--src/event/server_events.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/event/server_events.c b/src/event/server_events.c
index 14c0a11a..0bd5d5e8 100644
--- a/src/event/server_events.c
+++ b/src/event/server_events.c
@@ -153,35 +153,33 @@ sv_ev_roster_received(void)
     // send initial presence
     resource_presence_t conn_presence = accounts_get_login_presence(account_name);
     char *last_activity_str = accounts_get_last_activity(account_name);
-    if (last_activity_str) {
-        GDateTime *nowdt = g_date_time_new_now_utc();
+    if (prefs_get_boolean(PREF_LASTACTIVITY) && last_activity_str) {
 
         GTimeVal lasttv;
+        GDateTime *nowdt = g_date_time_new_now_utc();
         gboolean res = g_time_val_from_iso8601(last_activity_str, &lasttv);
+
         if (res) {
             GDateTime *lastdt = g_date_time_new_from_timeval_utc(&lasttv);
             GTimeSpan diff_micros = g_date_time_difference(nowdt, lastdt);
             int diff_secs = (diff_micros / 1000) / 1000;
-            if (prefs_get_boolean(PREF_LASTACTIVITY)) {
-                connection_set_presence_msg(NULL);
-                cl_ev_presence_send(conn_presence, diff_secs);
-            } else {
-                connection_set_presence_msg(NULL);
-                cl_ev_presence_send(conn_presence, 0);
-            }
+
+            connection_set_presence_msg(NULL);
+            cl_ev_presence_send(conn_presence, diff_secs);
+
             g_date_time_unref(lastdt);
         } else {
             connection_set_presence_msg(NULL);
             cl_ev_presence_send(conn_presence, 0);
         }
-
-        free(last_activity_str);
         g_date_time_unref(nowdt);
     } else {
         connection_set_presence_msg(NULL);
         cl_ev_presence_send(conn_presence, 0);
     }
 
+    free(last_activity_str);
+
     const char *fulljid = connection_get_fulljid();
     plugins_on_connect(account_name, fulljid);