Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F2755121
D13030.id43327.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
7 KB
Referenced Files
None
Subscribers
None
D13030.id43327.diff
View Options
diff --git a/native/cpp/CommonCpp/NativeModules/CommCoreModule.h b/native/cpp/CommonCpp/NativeModules/CommCoreModule.h
--- a/native/cpp/CommonCpp/NativeModules/CommCoreModule.h
+++ b/native/cpp/CommonCpp/NativeModules/CommCoreModule.h
@@ -255,6 +255,10 @@
jsi::Runtime &rt,
jsi::String messageID,
jsi::String deviceID) override;
+ virtual jsi::Value resetOutboundP2PMessagesForDevice(
+ jsi::Runtime &rt,
+ jsi::String deviceID) override;
+
virtual jsi::Value getSyncedDatabaseVersion(jsi::Runtime &rt) override;
virtual jsi::Value markPrekeysAsPublished(jsi::Runtime &rt) override;
virtual jsi::Value
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
@@ -2855,6 +2855,54 @@
});
}
+jsi::Value CommCoreModule::resetOutboundP2PMessagesForDevice(
+ jsi::Runtime &rt,
+ jsi::String deviceID) {
+ std::string deviceIDCpp{deviceID.utf8(rt)};
+
+ return createPromiseAsJSIValue(
+ rt, [=](jsi::Runtime &innerRt, std::shared_ptr<Promise> promise) {
+ taskType job = [=, &innerRt]() {
+ std::string error;
+ std::vector<std::string> messageIDs;
+
+ try {
+ DatabaseManager::getQueryExecutor().beginTransaction();
+ messageIDs = DatabaseManager::getQueryExecutor()
+ .resetOutboundP2PMessagesForDevice(deviceIDCpp);
+ DatabaseManager::getQueryExecutor().commitTransaction();
+ } catch (std::system_error &e) {
+ error = e.what();
+ DatabaseManager::getQueryExecutor().rollbackTransaction();
+ }
+
+ auto messageIDsPtr =
+ std::make_shared<std::vector<std::string>>(std::move(messageIDs));
+
+ this->jsInvoker_->invokeAsync(
+ [&innerRt, messageIDsPtr, error, promise]() {
+ if (error.size()) {
+ promise->reject(error);
+ return;
+ }
+
+ jsi::Array jsiMessageIDs =
+ jsi::Array(innerRt, messageIDsPtr->size());
+ size_t writeIdx = 0;
+ for (const std::string &id : *messageIDsPtr) {
+ jsi::String jsiString =
+ jsi::String::createFromUtf8(innerRt, id);
+ jsiMessageIDs.setValueAtIndex(innerRt, writeIdx++, jsiString);
+ }
+
+ promise->resolve(std::move(jsiMessageIDs));
+ });
+ };
+ GlobalDBSingleton::instance.scheduleOrRunCancellable(
+ job, promise, this->jsInvoker_);
+ });
+}
+
jsi::Value CommCoreModule::getSyncedDatabaseVersion(jsi::Runtime &rt) {
return createPromiseAsJSIValue(
rt, [=](jsi::Runtime &innerRt, std::shared_ptr<Promise> promise) {
diff --git a/native/cpp/CommonCpp/_generated/commJSI-generated.cpp b/native/cpp/CommonCpp/_generated/commJSI-generated.cpp
--- a/native/cpp/CommonCpp/_generated/commJSI-generated.cpp
+++ b/native/cpp/CommonCpp/_generated/commJSI-generated.cpp
@@ -220,6 +220,9 @@
static jsi::Value __hostFunction_CommCoreModuleSchemaCxxSpecJSI_removeOutboundP2PMessagesOlderThan(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
return static_cast<CommCoreModuleSchemaCxxSpecJSI *>(&turboModule)->removeOutboundP2PMessagesOlderThan(rt, args[0].asString(rt), args[1].asString(rt));
}
+static jsi::Value __hostFunction_CommCoreModuleSchemaCxxSpecJSI_resetOutboundP2PMessagesForDevice(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
+ return static_cast<CommCoreModuleSchemaCxxSpecJSI *>(&turboModule)->resetOutboundP2PMessagesForDevice(rt, args[0].asString(rt));
+}
static jsi::Value __hostFunction_CommCoreModuleSchemaCxxSpecJSI_getSyncedDatabaseVersion(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
return static_cast<CommCoreModuleSchemaCxxSpecJSI *>(&turboModule)->getSyncedDatabaseVersion(rt);
}
@@ -302,6 +305,7 @@
methodMap_["getAllOutboundP2PMessages"] = MethodMetadata {0, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_getAllOutboundP2PMessages};
methodMap_["markOutboundP2PMessageAsSent"] = MethodMetadata {2, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_markOutboundP2PMessageAsSent};
methodMap_["removeOutboundP2PMessagesOlderThan"] = MethodMetadata {2, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_removeOutboundP2PMessagesOlderThan};
+ methodMap_["resetOutboundP2PMessagesForDevice"] = MethodMetadata {1, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_resetOutboundP2PMessagesForDevice};
methodMap_["getSyncedDatabaseVersion"] = MethodMetadata {0, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_getSyncedDatabaseVersion};
methodMap_["markPrekeysAsPublished"] = MethodMetadata {0, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_markPrekeysAsPublished};
methodMap_["getRelatedMessages"] = MethodMetadata {1, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_getRelatedMessages};
diff --git a/native/cpp/CommonCpp/_generated/commJSI.h b/native/cpp/CommonCpp/_generated/commJSI.h
--- a/native/cpp/CommonCpp/_generated/commJSI.h
+++ b/native/cpp/CommonCpp/_generated/commJSI.h
@@ -87,6 +87,7 @@
virtual jsi::Value getAllOutboundP2PMessages(jsi::Runtime &rt) = 0;
virtual jsi::Value markOutboundP2PMessageAsSent(jsi::Runtime &rt, jsi::String messageID, jsi::String deviceID) = 0;
virtual jsi::Value removeOutboundP2PMessagesOlderThan(jsi::Runtime &rt, jsi::String messageID, jsi::String deviceID) = 0;
+ virtual jsi::Value resetOutboundP2PMessagesForDevice(jsi::Runtime &rt, jsi::String deviceID) = 0;
virtual jsi::Value getSyncedDatabaseVersion(jsi::Runtime &rt) = 0;
virtual jsi::Value markPrekeysAsPublished(jsi::Runtime &rt) = 0;
virtual jsi::Value getRelatedMessages(jsi::Runtime &rt, jsi::String messageID) = 0;
@@ -648,6 +649,14 @@
return bridging::callFromJs<jsi::Value>(
rt, &T::removeOutboundP2PMessagesOlderThan, jsInvoker_, instance_, std::move(messageID), std::move(deviceID));
}
+ jsi::Value resetOutboundP2PMessagesForDevice(jsi::Runtime &rt, jsi::String deviceID) override {
+ static_assert(
+ bridging::getParameterCount(&T::resetOutboundP2PMessagesForDevice) == 2,
+ "Expected resetOutboundP2PMessagesForDevice(...) to have 2 parameters");
+
+ return bridging::callFromJs<jsi::Value>(
+ rt, &T::resetOutboundP2PMessagesForDevice, jsInvoker_, instance_, std::move(deviceID));
+ }
jsi::Value getSyncedDatabaseVersion(jsi::Runtime &rt) override {
static_assert(
bridging::getParameterCount(&T::getSyncedDatabaseVersion) == 1,
diff --git a/native/schema/CommCoreModuleSchema.js b/native/schema/CommCoreModuleSchema.js
--- a/native/schema/CommCoreModuleSchema.js
+++ b/native/schema/CommCoreModuleSchema.js
@@ -184,6 +184,9 @@
messageID: string,
deviceID: string,
) => Promise<void>;
+ +resetOutboundP2PMessagesForDevice: (
+ deviceID: string,
+ ) => Promise<Array<string>>;
+getSyncedDatabaseVersion: () => Promise<string>;
+markPrekeysAsPublished: () => Promise<void>;
+getRelatedMessages: (
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Sep 19, 9:30 PM (10 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2142462
Default Alt Text
D13030.id43327.diff (7 KB)
Attached To
Mode
D13030: [native] introduce resetting Outbound P2P Messages to `CommCoreModule`
Attached
Detach File
Event Timeline
Log In to Comment