diff --git a/android/src/main/java/com/wakureactnative/ReactNativeModule.kt b/android/src/main/java/com/wakureactnative/ReactNativeModule.kt index 3ffb718..acdff73 100644 --- a/android/src/main/java/com/wakureactnative/ReactNativeModule.kt +++ b/android/src/main/java/com/wakureactnative/ReactNativeModule.kt @@ -64,6 +64,11 @@ class ReactNativeModule(reactContext: ReactApplicationContext) : ReactContextBas promise.resolve(Gowaku.stop()) } + @ReactMethod + fun isStarted(promise: Promise) { + promise.resolve(Gowaku.isStarted()) + } + @ReactMethod fun peerID(promise: Promise) { promise.resolve(Gowaku.peerID()) diff --git a/ios/ReactNative.m b/ios/ReactNative.m index 6c0a1a3..ad2f03e 100644 --- a/ios/ReactNative.m +++ b/ios/ReactNative.m @@ -21,6 +21,10 @@ RCT_EXTERN_METHOD(stop: (RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject) +RCT_EXTERN_METHOD(isStarted: + (RCTPromiseResolveBlock)resolve + withRejecter:(RCTPromiseRejectBlock)reject) + RCT_EXTERN_METHOD(peerID: (RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject) @@ -125,4 +129,10 @@ RCT_EXTERN_METHOD(decodeAsymmetric:(NSString *)msg withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject) +RCT_EXTERN_METHOD(storeQuery:(NSString *)query + withPeerID:(NSString *)peerID + withMs:(nonnull NSNumber *)ms + withResolver:(RCTPromiseResolveBlock)resolve + withRejecter:(RCTPromiseRejectBlock)reject) + @end diff --git a/ios/ReactNative.swift b/ios/ReactNative.swift index fdaaf6d..2d2b814 100644 --- a/ios/ReactNative.swift +++ b/ios/ReactNative.swift @@ -62,6 +62,11 @@ class ReactNative: RCTEventEmitter { resolve(GowakuStop()) } + @objc(isStarted:withRejecter:) + func stop(_ resolve:RCTPromiseResolveBlock, withRejecter reject:RCTPromiseRejectBlock) -> Void { + resolve(GowakuIsStarted()) + } + @objc(peerID:withRejecter:) func peerID(_ resolve:RCTPromiseResolveBlock, withRejecter reject:RCTPromiseRejectBlock) -> Void { resolve(GowakuPeerID()) @@ -157,4 +162,9 @@ class ReactNative: RCTEventEmitter { resolve(GowakuDecodeAsymmetric(msg, privateKey)) } + @objc(storeQuery:withPeerID:withMs:withResolver:withRejecter:) + func storeQuery(queryJSON: String, peerID: String, ms: Int, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void { + resolve(GowakuStoreQuery(queryJSON, peerID, ms)) + } + } diff --git a/src/index.tsx b/src/index.tsx index b846653..52a2e70 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -93,6 +93,17 @@ export function stop(): Promise { }); } +export function isStarted(): Promise { + return new Promise(async (resolve, reject) => { + let response = JSON.parse(await ReactNative.isStarted()); + if(response.error){ + reject(response.error); + } else { + resolve(response.result); + } + }); +} + export function peerID(): Promise { return new Promise(async (resolve, reject) => { let response = JSON.parse(await ReactNative.peerID()); @@ -295,11 +306,6 @@ export function relayUnsubscribe(topic: String = ""): Promise { }); } - - - - - export function lightpushPublish(msg: WakuMessage, topic: String = "", peerID: String = "", ms: Number = 0): Promise { return new Promise(async (resolve, reject) => { let messageJSON = JSON.stringify(msg) @@ -361,4 +367,37 @@ export function peers(): Promise> { }) } -// TODO: storeQuery +export class Index { + digest: Uint8Array = new Uint8Array(); + receiverTime: Number = 0 + senderTime: Number = 0 + pubsubTopic: String = "" +} +export class PagingOptions { + pageSize: Number = 0 + cursor: Index | null = null + forward: Boolean = false +} +export class StoreQuery { + pubsubTopic: String = "" + contentFilters: Array = Array() + startTime: Number = 0 + endTime: Number = 0 + pagingOptions: PagingOptions | null = null +} + +export function storeQuery(query: StoreQuery, peerID: String = "", ms: Number = 0): Promise { + return new Promise(async (resolve, reject) => { + let queryJSON = JSON.stringify(query) + let response = JSON.parse(await ReactNative.storeQuery(queryJSON, peerID, ms)); + + console.log("STORE RESPONSE:") + console.log(response) + + if(response.error){ + reject(response.error); + } else { + resolve(response.result); + } + }); +} \ No newline at end of file