diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/Dbx_sqlite/src/dbevents.cpp | 17 | ||||
-rw-r--r-- | plugins/Dbx_sqlite/src/dbintf.h | 4 | ||||
-rw-r--r-- | plugins/Scriver/src/msgs.cpp | 1 |
3 files changed, 19 insertions, 3 deletions
diff --git a/plugins/Dbx_sqlite/src/dbevents.cpp b/plugins/Dbx_sqlite/src/dbevents.cpp index 433cae1852..fa3691a47e 100644 --- a/plugins/Dbx_sqlite/src/dbevents.cpp +++ b/plugins/Dbx_sqlite/src/dbevents.cpp @@ -410,7 +410,6 @@ MEVENT CDbxSQLite::FindFirstUnreadEvent(MCONTACT hContact) sqlite3_stmt *stmt = InitQuery("SELECT id FROM events WHERE contact_id = ? AND is_read = 0 ORDER BY timestamp LIMIT 1;", qEvFindUnread); sqlite3_bind_int64(stmt, 1, hContact); - sqlite3_bind_int(stmt, 2, DBEF_READ | DBEF_SENT); int rc = sqlite3_step(stmt); logError(rc, __FILE__, __LINE__); if (rc != SQLITE_ROW) { @@ -601,6 +600,22 @@ MEVENT CDbxSQLite::GetEventById(LPCSTR szModule, LPCSTR szId) return hDbEvent; } +int CDbxSQLite::UpdateEventId(MEVENT hDbEvent, LPCSTR szId) +{ + if (hDbEvent == 0 || mir_strlen(szId) == 0) + return 1; + + mir_cslock lock(m_csDbAccess); + sqlite3_stmt *stmt = InitQuery("UPDATE events SET server_id = ? WHERE id = ?;", qEvUpdateId); + sqlite3_bind_text(stmt, 1, szId, (int)mir_strlen(szId), nullptr); + sqlite3_bind_int64(stmt, 2, hDbEvent); + int rc = sqlite3_step(stmt); + logError(rc, __FILE__, __LINE__); + int rows = sqlite3_changes(m_db); + sqlite3_reset(stmt); + return (rows == 0) ? 2 : 0; +} + ///////////////////////////////////////////////////////////////////////////////////////// // Event cursors diff --git a/plugins/Dbx_sqlite/src/dbintf.h b/plugins/Dbx_sqlite/src/dbintf.h index fbeb18b493..e4c274fb3a 100644 --- a/plugins/Dbx_sqlite/src/dbintf.h +++ b/plugins/Dbx_sqlite/src/dbintf.h @@ -88,7 +88,8 @@ class CDbxSQLite : public MDatabaseCommon, public MIDatabaseChecker, public MZer void InitEvents(); void UninitEvents(); CQuery qEvCount, qEvAdd, qEvDel, qEvEdit, qEvBlobSize, qEvGet, qEvGetFlags, qEvSetFlags, qEvGetContact; - CQuery qEvFindFirst, qEvFindNext, qEvFindLast, qEvFindPrev, qEvFindUnread, qEvGetById, qEvAddSrt, qEvDelSrt, qEvMetaSplit, qEvMetaMerge; + CQuery qEvFindFirst, qEvFindNext, qEvFindLast, qEvFindPrev, qEvFindUnread, qEvAddSrt, qEvDelSrt, qEvMetaSplit, qEvMetaMerge; + CQuery qEvGetById, qEvUpdateId; int DeleteEventMain(MEVENT); int DeleteEventSrt(MEVENT); @@ -132,6 +133,7 @@ public: STDMETHODIMP_(MEVENT) FindPrevEvent(MCONTACT contactID, MEVENT hDbEvent) override; STDMETHODIMP_(MEVENT) GetEventById(LPCSTR szModule, LPCSTR szId) override; + STDMETHODIMP_(int) UpdateEventId(MEVENT hDbEvent, LPCSTR szId) override; STDMETHODIMP_(BOOL) EnumModuleNames(DBMODULEENUMPROC pFunc, void *pParam) override; diff --git a/plugins/Scriver/src/msgs.cpp b/plugins/Scriver/src/msgs.cpp index 1bba4511be..ffb08f4e3c 100644 --- a/plugins/Scriver/src/msgs.cpp +++ b/plugins/Scriver/src/msgs.cpp @@ -248,7 +248,6 @@ static void RestoreUnreadMessageAlerts(void) for (auto &hContact : Contacts()) {
for (MEVENT hDbEvent = db_event_firstUnread(hContact); hDbEvent; hDbEvent = db_event_next(hContact, hDbEvent)) {
DBEVENTINFO dbei = {};
- dbei.cbBlob = 0;
if (db_event_get(hDbEvent, &dbei))
continue;
if (dbei.markedRead() || !DbEventIsMessageOrCustom(&dbei) || !Proto_GetBaseAccountName(hContact))
|