Page MenuHomePhorge

D12068.1765145828.diff
No OneTemporary

Size
8 KB
Referenced Files
None
Subscribers
None

D12068.1765145828.diff

diff --git a/lib/types/sqlite-types.js b/lib/types/sqlite-types.js
--- a/lib/types/sqlite-types.js
+++ b/lib/types/sqlite-types.js
@@ -16,6 +16,7 @@
+timestamp: string,
+plaintext: string,
+ciphertext: string,
+ +status: string,
};
export type SQLiteAPI = {
diff --git a/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.cpp b/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.cpp
--- a/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.cpp
+++ b/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.cpp
@@ -42,7 +42,7 @@
"olm_persist_account",
"olm_persist_sessions",
"metadata",
- "messages_to_device",
+ "outbound_p2p_messages",
"integrity_store",
"persist_storage",
"keyservers",
@@ -640,6 +640,26 @@
return create_table(db, query, "received_messages_to_device");
}
+bool recreate_outbound_p2p_messages_table(sqlite3 *db) {
+ std::string query =
+ "DROP TABLE IF EXISTS messages_to_device;"
+ "CREATE TABLE IF NOT EXISTS outbound_p2p_messages ("
+ " message_id TEXT NOT NULL,"
+ " device_id TEXT NOT NULL,"
+ " user_id TEXT NOT NULL,"
+ " timestamp BIGINT NOT NULL,"
+ " plaintext TEXT NOT NULL,"
+ " ciphertext TEXT NOT NULL,"
+ " status TEXT NOT NULL,"
+ " PRIMARY KEY (message_id, device_id)"
+ ");"
+
+ "CREATE INDEX IF NOT EXISTS outbound_p2p_messages_idx_id_timestamp"
+ " ON outbound_p2p_messages (device_id, timestamp);";
+
+ return create_table(db, query, "outbound_p2p_messages");
+}
+
bool create_schema(sqlite3 *db) {
char *error;
sqlite3_exec(
@@ -739,13 +759,14 @@
" community_info TEXT NOT NULL"
");"
- "CREATE TABLE IF NOT EXISTS messages_to_device ("
+ "CREATE TABLE IF NOT EXISTS outbound_p2p_messages ("
" message_id TEXT NOT NULL,"
" device_id TEXT NOT NULL,"
" user_id TEXT NOT NULL,"
" timestamp BIGINT NOT NULL,"
" plaintext TEXT NOT NULL,"
" ciphertext TEXT NOT NULL,"
+ " status TEXT NOT NULL,"
" PRIMARY KEY (message_id, device_id)"
");"
@@ -783,8 +804,8 @@
"CREATE INDEX IF NOT EXISTS messages_idx_thread_time"
" ON messages (thread, time);"
- "CREATE INDEX IF NOT EXISTS messages_to_device_idx_id_timestamp"
- " ON messages_to_device (device_id, timestamp);",
+ "CREATE INDEX IF NOT EXISTS outbound_p2p_messages_idx_id_timestamp"
+ " ON outbound_p2p_messages (device_id, timestamp);",
nullptr,
nullptr,
@@ -1030,7 +1051,8 @@
{41, {create_aux_user_table, true}},
{42, {add_version_column_to_olm_persist_sessions_table, true}},
{43, {create_thread_activity_table, true}},
- {44, {create_received_messages_to_device, true}}}};
+ {44, {create_received_messages_to_device, true}},
+ {45, {recreate_outbound_p2p_messages_table, true}}}};
enum class MigrationResult { SUCCESS, FAILURE, NOT_APPLIED };
@@ -2080,9 +2102,10 @@
void SQLiteQueryExecutor::addOutboundP2PMessages(
const std::vector<OutboundP2PMessage> &messages) const {
static std::string addMessage =
- "REPLACE INTO messages_to_device ("
- " message_id, device_id, user_id, timestamp, plaintext, ciphertext) "
- "VALUES (?, ?, ?, ?, ?, ?);";
+ "REPLACE INTO outbound_p2p_messages ("
+ " message_id, device_id, user_id, timestamp,"
+ " plaintext, ciphertext, status) "
+ "VALUES (?, ?, ?, ?, ?, ?, ?);";
for (const OutboundP2PMessage &clientMessage : messages) {
SQLiteOutboundP2PMessage message =
@@ -2095,7 +2118,7 @@
std::vector<OutboundP2PMessage> SQLiteQueryExecutor::getAllOutboundP2PMessages(
const std::string &deviceID) const {
std::string query =
- "SELECT * FROM messages_to_device "
+ "SELECT * FROM outbound_p2p_messages "
"WHERE device_id = ? "
"ORDER BY timestamp;";
@@ -2119,7 +2142,7 @@
void SQLiteQueryExecutor::removeOutboundP2PMessagesOlderThan(
const OutboundP2PMessage &lastConfirmedMessageClient) const {
static std::string query =
- "DELETE FROM messages_to_device "
+ "DELETE FROM outbound_p2p_messages "
"WHERE timestamp <= ? AND device_id IN (?);";
SQLiteOutboundP2PMessage lastConfirmedMessage =
@@ -2149,7 +2172,7 @@
void SQLiteQueryExecutor::removeAllOutboundP2PMessages(
const std::string &deviceID) const {
static std::string removeMessagesSQL =
- "DELETE FROM messages_to_device "
+ "DELETE FROM outbound_p2p_messages "
"WHERE device_id IN (?);";
std::vector<std::string> keys = {deviceID};
removeEntitiesByKeys(
diff --git a/native/cpp/CommonCpp/DatabaseManagers/entities/OutboundP2PMessage.h b/native/cpp/CommonCpp/DatabaseManagers/entities/OutboundP2PMessage.h
--- a/native/cpp/CommonCpp/DatabaseManagers/entities/OutboundP2PMessage.h
+++ b/native/cpp/CommonCpp/DatabaseManagers/entities/OutboundP2PMessage.h
@@ -15,6 +15,7 @@
int64_t timestamp;
std::string plaintext;
std::string ciphertext;
+ std::string status;
static SQLiteOutboundP2PMessage fromSQLResult(sqlite3_stmt *sqlRow, int idx) {
return SQLiteOutboundP2PMessage{
@@ -24,6 +25,7 @@
getInt64FromSQLRow(sqlRow, idx + 3),
getStringFromSQLRow(sqlRow, idx + 4),
getStringFromSQLRow(sqlRow, idx + 5),
+ getStringFromSQLRow(sqlRow, idx + 6),
};
}
@@ -33,7 +35,8 @@
bindStringToSQL(user_id, sql, idx + 2);
bindInt64ToSQL(timestamp, sql, idx + 3);
bindStringToSQL(plaintext, sql, idx + 4);
- return bindStringToSQL(ciphertext, sql, idx + 5);
+ bindStringToSQL(ciphertext, sql, idx + 5);
+ return bindStringToSQL(status, sql, idx + 6);
}
};
@@ -44,6 +47,7 @@
std::string timestamp;
std::string plaintext;
std::string ciphertext;
+ std::string status;
OutboundP2PMessage() = default;
@@ -54,6 +58,7 @@
timestamp = std::to_string(msg.timestamp);
plaintext = msg.plaintext;
ciphertext = msg.ciphertext;
+ status = msg.status;
}
SQLiteOutboundP2PMessage toSQLiteOutboundP2PMessage() const {
@@ -64,6 +69,7 @@
msg.timestamp = std::stoll(timestamp);
msg.plaintext = plaintext;
msg.ciphertext = ciphertext;
+ msg.status = status;
return msg;
}
};
diff --git a/web/cpp/SQLiteQueryExecutorBindings.cpp b/web/cpp/SQLiteQueryExecutorBindings.cpp
--- a/web/cpp/SQLiteQueryExecutorBindings.cpp
+++ b/web/cpp/SQLiteQueryExecutorBindings.cpp
@@ -120,7 +120,8 @@
.field("userID", &OutboundP2PMessage::user_id)
.field("timestamp", &OutboundP2PMessage::timestamp)
.field("plaintext", &OutboundP2PMessage::plaintext)
- .field("ciphertext", &OutboundP2PMessage::ciphertext);
+ .field("ciphertext", &OutboundP2PMessage::ciphertext)
+ .field("status", &OutboundP2PMessage::status);
value_object<InboundP2PMessage>("InboundP2PMessage")
.field("messageID", &InboundP2PMessage::message_id)
diff --git a/web/shared-worker/_generated/comm_query_executor.wasm b/web/shared-worker/_generated/comm_query_executor.wasm
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 0
Hc$@<O00001
diff --git a/web/shared-worker/queries/outbound-p2p-message-queries.test.js b/web/shared-worker/queries/outbound-p2p-message-queries.test.js
--- a/web/shared-worker/queries/outbound-p2p-message-queries.test.js
+++ b/web/shared-worker/queries/outbound-p2p-message-queries.test.js
@@ -24,6 +24,7 @@
timestamp: timestamp2,
plaintext: 'decrypted-1',
ciphertext: 'encrypted-1',
+ status: 'encrypted',
};
const TEST_MSG_2: OutboundP2PMessage = {
messageID: 'id-2',
@@ -32,6 +33,7 @@
timestamp: timestamp3,
plaintext: 'decrypted-2',
ciphertext: 'encrypted-2',
+ status: 'encrypted',
};
const TEST_MSG_3: OutboundP2PMessage = {
@@ -41,6 +43,7 @@
timestamp: timestamp1,
plaintext: 'decrypted-3',
ciphertext: 'encrypted-3',
+ status: 'encrypted',
};
const TEST_MSG_4: OutboundP2PMessage = {
@@ -50,6 +53,7 @@
timestamp: timestamp4,
plaintext: 'decrypted-4',
ciphertext: 'encrypted-4',
+ status: 'encrypted',
};
const device1MessagesOrdered = [TEST_MSG_3, TEST_MSG_1, TEST_MSG_4];

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 7, 10:17 PM (13 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5846189
Default Alt Text
D12068.1765145828.diff (8 KB)

Event Timeline