diff options
author | James Booth <boothj5@gmail.com> | 2015-09-25 00:26:58 +0100 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2015-09-25 00:26:58 +0100 |
commit | b484411ea8d94349c2879f09f48d907dbdaf72c9 (patch) | |
tree | 7598ecd667dfff306cb1c499f1efe6a7a9cabe6b /src | |
parent | 4257ecb1c50a00da2b40e018e1eb2dfa1a8d4a1b (diff) | |
download | profani-tty-b484411ea8d94349c2879f09f48d907dbdaf72c9.tar.gz |
Save last activity to account on disconnect
Diffstat (limited to 'src')
-rw-r--r-- | src/command/commands.c | 1 | ||||
-rw-r--r-- | src/config/accounts.c | 17 | ||||
-rw-r--r-- | src/config/accounts.h | 1 | ||||
-rw-r--r-- | src/xmpp/connection.c | 1 |
4 files changed, 20 insertions, 0 deletions
diff --git a/src/command/commands.c b/src/command/commands.c index 3f695cc1..5ddfa07e 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -777,6 +777,7 @@ cmd_disconnect(ProfWin *window, const char * const command, gchar **args) if (jabber_get_connection_status() == JABBER_CONNECTED) { char *jid = strdup(jabber_get_fulljid()); cons_show("%s logged out successfully.", jid); + accounts_set_last_activity(jabber_get_account_name()); jabber_disconnect(); roster_clear(); muc_invites_clear(); diff --git a/src/config/accounts.c b/src/config/accounts.c index a827392b..d43cc3a3 100644 --- a/src/config/accounts.c +++ b/src/config/accounts.c @@ -762,6 +762,23 @@ accounts_set_last_presence(const char * const account_name, const char * const v } void +accounts_set_last_activity(const char * const account_name) +{ + if (accounts_account_exists(account_name)) { + GDateTime *nowdt = g_date_time_new_now_utc(); + GTimeVal nowtv; + gboolean res = g_date_time_to_timeval(nowdt, &nowtv); + g_date_time_unref(nowdt); + + if (res) { + char *timestr = g_time_val_to_iso8601(&nowtv); + g_key_file_set_string(accounts, account_name, "last.activity", timestr); + _save_accounts(); + } + } +} + +void accounts_set_login_presence(const char * const account_name, const char * const value) { if (accounts_account_exists(account_name)) { diff --git a/src/config/accounts.h b/src/config/accounts.h index eb981cb8..65106365 100644 --- a/src/config/accounts.h +++ b/src/config/accounts.h @@ -66,6 +66,7 @@ void accounts_set_muc_service(const char * const account_name, const char * cons void accounts_set_muc_nick(const char * const account_name, const char * const value); void accounts_set_otr_policy(const char * const account_name, const char * const value); void accounts_set_last_presence(const char * const account_name, const char * const value); +void accounts_set_last_activity(const char * const account_name); void accounts_set_login_presence(const char * const account_name, const char * const value); resource_presence_t accounts_get_login_presence(const char * const account_name); resource_presence_t accounts_get_last_presence(const char * const account_name); diff --git a/src/xmpp/connection.c b/src/xmpp/connection.c index 768a4476..abc08732 100644 --- a/src/xmpp/connection.c +++ b/src/xmpp/connection.c @@ -200,6 +200,7 @@ jabber_disconnect(void) // if connected, send end stream and wait for response if (jabber_conn.conn_status == JABBER_CONNECTED) { log_info("Closing connection"); + accounts_set_last_activity(jabber_get_account_name()); jabber_conn.conn_status = JABBER_DISCONNECTING; xmpp_disconnect(jabber_conn.conn); |