Changeset View
Changeset View
Standalone View
Standalone View
native/cpp/CommonCpp/NativeModules/CommCoreModule.cpp
Show First 20 Lines • Show All 284 Lines • ▼ Show 20 Lines | for (const MessageStoreThread &thread : *threadsVectorPtr) { | ||||
jsiThread.setProperty( | jsiThread.setProperty( | ||||
rt, "last_pruned", std::to_string(thread.last_pruned)); | rt, "last_pruned", std::to_string(thread.last_pruned)); | ||||
jsiThreads.setValueAtIndex(rt, writeIdx++, jsiThread); | jsiThreads.setValueAtIndex(rt, writeIdx++, jsiThread); | ||||
} | } | ||||
return jsiThreads; | return jsiThreads; | ||||
} | } | ||||
jsi::Array parseDBReportStore( | |||||
jsi::Runtime &rt, | |||||
std::shared_ptr<std::vector<Report>> reportStoreVectorPtr) { | |||||
size_t numReports = reportStoreVectorPtr->size(); | |||||
jsi::Array jsiReports = jsi::Array(rt, numReports); | |||||
size_t writeIdx = 0; | |||||
for (const Report &report : *reportStoreVectorPtr) { | |||||
jsi::Object jsiReport = jsi::Object(rt); | |||||
jsiReport.setProperty(rt, "id", report.id); | |||||
jsiReport.setProperty(rt, "report", report.report); | |||||
jsiReports.setValueAtIndex(rt, writeIdx++, jsiReport); | |||||
} | |||||
return jsiReports; | |||||
} | |||||
jsi::Value CommCoreModule::getClientDBStore(jsi::Runtime &rt) { | jsi::Value CommCoreModule::getClientDBStore(jsi::Runtime &rt) { | ||||
return createPromiseAsJSIValue( | return createPromiseAsJSIValue( | ||||
rt, [=](jsi::Runtime &innerRt, std::shared_ptr<Promise> promise) { | rt, [=](jsi::Runtime &innerRt, std::shared_ptr<Promise> promise) { | ||||
taskType job = [=, &innerRt]() { | taskType job = [=, &innerRt]() { | ||||
std::string error; | std::string error; | ||||
std::vector<Draft> draftsVector; | std::vector<Draft> draftsVector; | ||||
std::vector<Thread> threadsVector; | std::vector<Thread> threadsVector; | ||||
std::vector<std::pair<Message, std::vector<Media>>> messagesVector; | std::vector<std::pair<Message, std::vector<Media>>> messagesVector; | ||||
std::vector<MessageStoreThread> messageStoreThreadsVector; | std::vector<MessageStoreThread> messageStoreThreadsVector; | ||||
std::vector<Report> reportStoreVector; | |||||
try { | try { | ||||
draftsVector = DatabaseManager::getQueryExecutor().getAllDrafts(); | draftsVector = DatabaseManager::getQueryExecutor().getAllDrafts(); | ||||
messagesVector = | messagesVector = | ||||
DatabaseManager::getQueryExecutor().getAllMessages(); | DatabaseManager::getQueryExecutor().getAllMessages(); | ||||
threadsVector = DatabaseManager::getQueryExecutor().getAllThreads(); | threadsVector = DatabaseManager::getQueryExecutor().getAllThreads(); | ||||
messageStoreThreadsVector = | messageStoreThreadsVector = | ||||
DatabaseManager::getQueryExecutor().getAllMessageStoreThreads(); | DatabaseManager::getQueryExecutor().getAllMessageStoreThreads(); | ||||
reportStoreVector = | |||||
DatabaseManager::getQueryExecutor().getAllReports(); | |||||
} catch (std::system_error &e) { | } catch (std::system_error &e) { | ||||
error = e.what(); | error = e.what(); | ||||
} | } | ||||
auto draftsVectorPtr = | auto draftsVectorPtr = | ||||
std::make_shared<std::vector<Draft>>(std::move(draftsVector)); | std::make_shared<std::vector<Draft>>(std::move(draftsVector)); | ||||
auto messagesVectorPtr = std::make_shared< | auto messagesVectorPtr = std::make_shared< | ||||
std::vector<std::pair<Message, std::vector<Media>>>>( | std::vector<std::pair<Message, std::vector<Media>>>>( | ||||
std::move(messagesVector)); | std::move(messagesVector)); | ||||
auto threadsVectorPtr = | auto threadsVectorPtr = | ||||
std::make_shared<std::vector<Thread>>(std::move(threadsVector)); | std::make_shared<std::vector<Thread>>(std::move(threadsVector)); | ||||
auto messageStoreThreadsVectorPtr = | auto messageStoreThreadsVectorPtr = | ||||
std::make_shared<std::vector<MessageStoreThread>>( | std::make_shared<std::vector<MessageStoreThread>>( | ||||
std::move(messageStoreThreadsVector)); | std::move(messageStoreThreadsVector)); | ||||
auto reportStoreVectorPtr = std::make_shared<std::vector<Report>>( | |||||
std::move(reportStoreVector)); | |||||
this->jsInvoker_->invokeAsync([&innerRt, | this->jsInvoker_->invokeAsync([&innerRt, | ||||
draftsVectorPtr, | draftsVectorPtr, | ||||
messagesVectorPtr, | messagesVectorPtr, | ||||
threadsVectorPtr, | threadsVectorPtr, | ||||
messageStoreThreadsVectorPtr, | messageStoreThreadsVectorPtr, | ||||
reportStoreVectorPtr, | |||||
error, | error, | ||||
promise]() { | promise]() { | ||||
if (error.size()) { | if (error.size()) { | ||||
promise->reject(error); | promise->reject(error); | ||||
return; | return; | ||||
} | } | ||||
jsi::Array jsiDrafts = parseDBDrafts(innerRt, draftsVectorPtr); | jsi::Array jsiDrafts = parseDBDrafts(innerRt, draftsVectorPtr); | ||||
jsi::Array jsiMessages = | jsi::Array jsiMessages = | ||||
parseDBMessages(innerRt, messagesVectorPtr); | parseDBMessages(innerRt, messagesVectorPtr); | ||||
jsi::Array jsiThreads = parseDBThreads(innerRt, threadsVectorPtr); | jsi::Array jsiThreads = parseDBThreads(innerRt, threadsVectorPtr); | ||||
jsi::Array jsiMessageStoreThreads = parseDBMessageStoreThreads( | jsi::Array jsiMessageStoreThreads = parseDBMessageStoreThreads( | ||||
innerRt, messageStoreThreadsVectorPtr); | innerRt, messageStoreThreadsVectorPtr); | ||||
jsi::Array jsiReportStore = | |||||
parseDBReportStore(innerRt, reportStoreVectorPtr); | |||||
auto jsiClientDBStore = jsi::Object(innerRt); | auto jsiClientDBStore = jsi::Object(innerRt); | ||||
jsiClientDBStore.setProperty(innerRt, "messages", jsiMessages); | jsiClientDBStore.setProperty(innerRt, "messages", jsiMessages); | ||||
jsiClientDBStore.setProperty(innerRt, "threads", jsiThreads); | jsiClientDBStore.setProperty(innerRt, "threads", jsiThreads); | ||||
jsiClientDBStore.setProperty(innerRt, "drafts", jsiDrafts); | jsiClientDBStore.setProperty(innerRt, "drafts", jsiDrafts); | ||||
jsiClientDBStore.setProperty( | jsiClientDBStore.setProperty( | ||||
innerRt, "messageStoreThreads", jsiMessageStoreThreads); | innerRt, "messageStoreThreads", jsiMessageStoreThreads); | ||||
jsiClientDBStore.setProperty(innerRt, "reports", jsiReportStore); | |||||
promise->resolve(std::move(jsiClientDBStore)); | promise->resolve(std::move(jsiClientDBStore)); | ||||
}); | }); | ||||
}; | }; | ||||
GlobalDBSingleton::instance.scheduleOrRunCancellable( | GlobalDBSingleton::instance.scheduleOrRunCancellable( | ||||
job, promise, this->jsInvoker_); | job, promise, this->jsInvoker_); | ||||
}); | }); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,072 Lines • Show Last 20 Lines |