Page MenuHomePhorge

D7472.1768817018.diff
No OneTemporary

Size
7 KB
Referenced Files
None
Subscribers
None

D7472.1768817018.diff

diff --git a/lib/reducers/message-reducer.test.js b/lib/reducers/message-reducer.test.js
--- a/lib/reducers/message-reducer.test.js
+++ b/lib/reducers/message-reducer.test.js
@@ -288,6 +288,7 @@
threadStore: {
threadInfos: {},
},
+ messageStoreThreads: [],
messages: clientDBMessages,
},
},
diff --git a/lib/types/redux-types.js b/lib/types/redux-types.js
--- a/lib/types/redux-types.js
+++ b/lib/types/redux-types.js
@@ -48,6 +48,7 @@
LocallyComposedMessageInfo,
ClientDBMessageInfo,
SimpleMessagesPayload,
+ ClientDBThreadMessageInfo,
} from './message-types.js';
import type { RawReactionMessageInfo } from './messages/reaction.js';
import type { RawTextMessageInfo } from './messages/text.js';
@@ -595,6 +596,7 @@
+drafts: $ReadOnlyArray<ClientDBDraftInfo>,
+messages: $ReadOnlyArray<ClientDBMessageInfo>,
+threadStore: ThreadStore,
+ +messageStoreThreads: $ReadOnlyArray<ClientDBThreadMessageInfo>,
},
}
| {
diff --git a/lib/types/store-ops-types.js b/lib/types/store-ops-types.js
--- a/lib/types/store-ops-types.js
+++ b/lib/types/store-ops-types.js
@@ -9,6 +9,7 @@
ClientDBMessageInfo,
ClientDBMessageStoreOperation,
MessageStoreOperation,
+ ClientDBThreadMessageInfo,
} from './message-types.js';
import type {
ClientDBThreadInfo,
@@ -32,4 +33,5 @@
+messages: $ReadOnlyArray<ClientDBMessageInfo>,
+drafts: $ReadOnlyArray<ClientDBDraftInfo>,
+threads: $ReadOnlyArray<ClientDBThreadInfo>,
+ +messageStoreThreads: $ReadOnlyArray<ClientDBThreadMessageInfo>,
};
diff --git a/native/cpp/CommonCpp/DatabaseManagers/DatabaseQueryExecutor.h b/native/cpp/CommonCpp/DatabaseManagers/DatabaseQueryExecutor.h
--- a/native/cpp/CommonCpp/DatabaseManagers/DatabaseQueryExecutor.h
+++ b/native/cpp/CommonCpp/DatabaseManagers/DatabaseQueryExecutor.h
@@ -49,6 +49,7 @@
virtual void
removeMessageStoreThreads(const std::vector<std::string> &ids) const = 0;
virtual void removeAllMessageStoreThreads() const = 0;
+ virtual std::vector<MessageStoreThread> getAllMessageStoreThreads() const = 0;
virtual void
removeMediaForMessages(const std::vector<std::string> &msg_ids) const = 0;
virtual void removeMediaForMessage(std::string msg_id) const = 0;
diff --git a/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.h b/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.h
--- a/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.h
+++ b/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.h
@@ -46,6 +46,7 @@
void
removeMessageStoreThreads(const std::vector<std::string> &ids) const override;
void removeAllMessageStoreThreads() const override;
+ std::vector<MessageStoreThread> getAllMessageStoreThreads() const override;
void removeAllMedia() const override;
void removeMediaForMessages(
const std::vector<std::string> &msg_ids) const override;
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
@@ -1100,6 +1100,11 @@
where(in(&MessageStoreThread::id, ids)));
}
+std::vector<MessageStoreThread>
+SQLiteQueryExecutor::getAllMessageStoreThreads() const {
+ return SQLiteQueryExecutor::getStorage().get_all<MessageStoreThread>();
+}
+
std::vector<Thread> SQLiteQueryExecutor::getAllThreads() const {
return SQLiteQueryExecutor::getStorage().get_all<Thread>();
};
diff --git a/native/cpp/CommonCpp/NativeModules/CommCoreModule.cpp b/native/cpp/CommonCpp/NativeModules/CommCoreModule.cpp
--- a/native/cpp/CommonCpp/NativeModules/CommCoreModule.cpp
+++ b/native/cpp/CommonCpp/NativeModules/CommCoreModule.cpp
@@ -267,6 +267,28 @@
return jsiThreads;
}
+jsi::Array parseDBMessageStoreThreads(
+ jsi::Runtime &rt,
+ std::shared_ptr<std::vector<MessageStoreThread>> threadsVectorPtr) {
+ size_t numThreads = threadsVectorPtr->size();
+ jsi::Array jsiThreads = jsi::Array(rt, numThreads);
+ size_t writeIdx = 0;
+
+ for (const MessageStoreThread &thread : *threadsVectorPtr) {
+ jsi::Object jsiThread = jsi::Object(rt);
+ jsiThread.setProperty(rt, "id", thread.id);
+ jsiThread.setProperty(
+ rt, "start_reached", std::to_string(thread.start_reached));
+ jsiThread.setProperty(
+ rt, "last_navigated_to", std::to_string(thread.last_navigated_to));
+ jsiThread.setProperty(
+ rt, "last_pruned", std::to_string(thread.last_pruned));
+
+ jsiThreads.setValueAtIndex(rt, writeIdx++, jsiThread);
+ }
+ return jsiThreads;
+}
+
jsi::Value CommCoreModule::getClientDBStore(jsi::Runtime &rt) {
return createPromiseAsJSIValue(
rt, [=](jsi::Runtime &innerRt, std::shared_ptr<Promise> promise) {
@@ -275,11 +297,14 @@
std::vector<Draft> draftsVector;
std::vector<Thread> threadsVector;
std::vector<std::pair<Message, std::vector<Media>>> messagesVector;
+ std::vector<MessageStoreThread> messageStoreThreadsVector;
try {
draftsVector = DatabaseManager::getQueryExecutor().getAllDrafts();
messagesVector =
DatabaseManager::getQueryExecutor().getAllMessages();
threadsVector = DatabaseManager::getQueryExecutor().getAllThreads();
+ messageStoreThreadsVector =
+ DatabaseManager::getQueryExecutor().getAllMessageStoreThreads();
} catch (std::system_error &e) {
error = e.what();
}
@@ -290,10 +315,14 @@
std::move(messagesVector));
auto threadsVectorPtr =
std::make_shared<std::vector<Thread>>(std::move(threadsVector));
+ auto messageStoreThreadsVectorPtr =
+ std::make_shared<std::vector<MessageStoreThread>>(
+ std::move(messageStoreThreadsVector));
this->jsInvoker_->invokeAsync([&innerRt,
draftsVectorPtr,
messagesVectorPtr,
threadsVectorPtr,
+ messageStoreThreadsVectorPtr,
error,
promise]() {
if (error.size()) {
@@ -304,11 +333,15 @@
jsi::Array jsiMessages =
parseDBMessages(innerRt, messagesVectorPtr);
jsi::Array jsiThreads = parseDBThreads(innerRt, threadsVectorPtr);
+ jsi::Array jsiMessageStoreThreads = parseDBMessageStoreThreads(
+ innerRt, messageStoreThreadsVectorPtr);
auto jsiClientDBStore = jsi::Object(innerRt);
jsiClientDBStore.setProperty(innerRt, "messages", jsiMessages);
jsiClientDBStore.setProperty(innerRt, "threads", jsiThreads);
jsiClientDBStore.setProperty(innerRt, "drafts", jsiDrafts);
+ jsiClientDBStore.setProperty(
+ innerRt, "messageStoreThreads", jsiMessageStoreThreads);
promise->resolve(std::move(jsiClientDBStore));
});
diff --git a/web/database/worker/db-worker.js b/web/database/worker/db-worker.js
--- a/web/database/worker/db-worker.js
+++ b/web/database/worker/db-worker.js
@@ -129,6 +129,7 @@
drafts: getAllDrafts(sqliteDb),
messages: [],
threads: [],
+ messageStoreThreads: [],
};
}

File Metadata

Mime Type
text/plain
Expires
Mon, Jan 19, 10:03 AM (6 h, 28 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5955764
Default Alt Text
D7472.1768817018.diff (7 KB)

Event Timeline