1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-06-09 21:30:42 +00:00

database: retrieve encryption type

When we get a message from the database, also retrieve the encryption
type.
This commit is contained in:
Michael Vetter 2022-06-29 15:30:54 +02:00
parent 449c7ce2ba
commit 6375b2719f

View File

@ -54,6 +54,7 @@ static sqlite3* g_chatlog_database;
static void _add_to_db(ProfMessage* message, char* type, const Jid* const from_jid, const Jid* const to_jid);
static char* _get_db_filename(ProfAccount* account);
static prof_msg_type_t _get_message_type_type(const char* const type);
static prof_enc_t _get_message_enc_type(const char* const encstr);
static char*
_get_db_filename(ProfAccount* account)
@ -199,7 +200,7 @@ log_database_get_previous_chat(const gchar* const contact_barejid)
if (!myjid)
return NULL;
query = sqlite3_mprintf("SELECT * FROM (SELECT `message`, `timestamp`, `from_jid`, `type` from `ChatLogs` WHERE (`from_jid` = '%q' AND `to_jid` = '%q') OR (`from_jid` = '%q' AND `to_jid` = '%q') ORDER BY `timestamp` DESC LIMIT 10) ORDER BY `timestamp` ASC;", contact_barejid, myjid->barejid, myjid->barejid, contact_barejid);
query = sqlite3_mprintf("SELECT * FROM (SELECT `message`, `timestamp`, `from_jid`, `type`, `encryption` from `ChatLogs` WHERE (`from_jid` = '%q' AND `to_jid` = '%q') OR (`from_jid` = '%q' AND `to_jid` = '%q') ORDER BY `timestamp` DESC LIMIT 10) ORDER BY `timestamp` ASC;", contact_barejid, myjid->barejid, myjid->barejid, contact_barejid);
if (!query) {
log_error("log_database_get_previous_chat(): SQL query. could not allocate memory");
return NULL;
@ -221,13 +222,14 @@ log_database_get_previous_chat(const gchar* const contact_barejid)
char* date = (char*)sqlite3_column_text(stmt, 1);
char* from = (char*)sqlite3_column_text(stmt, 2);
char* type = (char*)sqlite3_column_text(stmt, 3);
char* encryption = (char*)sqlite3_column_text(stmt, 3);
ProfMessage* msg = message_init();
msg->from_jid = jid_create(from);
msg->plain = strdup(message);
msg->timestamp = g_date_time_new_from_iso8601(date, NULL);
msg->type = _get_message_type_type(type);
// TODO: later we can get more fields like 'enc'. then we can display the history like regular chats with all info the user enabled.
msg->enc = _get_message_enc_type(encryption);
history = g_slist_append(history, msg);
}
@ -286,6 +288,22 @@ _get_message_enc_str(prof_enc_t enc)
return "none"; // do not return none - return NULL
}
static prof_enc_t
_get_message_enc_type(const char* const encstr)
{
if (g_strcmp0(encstr, "ox") == 0) {
return PROF_MSG_ENC_OX;
} else if (g_strcmp0(encstr, "pgp") == 0) {
return PROF_MSG_ENC_PGP;
} else if (g_strcmp0(encstr, "otr") == 0) {
return PROF_MSG_ENC_OTR;
} else if (g_strcmp0(encstr, "omemo") == 0) {
return PROF_MSG_ENC_OMEMO;
}
return PROF_MSG_ENC_NONE;
}
static void
_add_to_db(ProfMessage* message, char* type, const Jid* const from_jid, const Jid* const to_jid)
{