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);