diff --git a/.gitignore b/.gitignore index 053b691..583f589 100644 --- a/.gitignore +++ b/.gitignore @@ -67,6 +67,6 @@ android/keystores/debug.keystore lib/ tmp/ -android/libs/gowaku-sources.jar -android/libs/gowaku.aar +gowaku-sources.jar +gowaku.aar ios/Gowaku.xcframework \ No newline at end of file diff --git a/README.md b/README.md index 2c4339c..8dba856 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,12 @@ Waku React Native npm install @waku/react-native ``` +Edit `settings.gradle` from your app and add: +``` +include ':gowaku' +project(':gowaku').projectDir = new File(rootProject.projectDir, './../node_modules/@waku/react-native/android/gowaku') +``` + ## Usage ```js diff --git a/android/build.gradle b/android/build.gradle index 168c509..4584d5d 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -133,8 +133,8 @@ dependencies { //noinspection GradleDynamicVersion implementation "com.facebook.react:react-native:+" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation files('libs/gowaku.aar') -// From node_modules + implementation project(":gowaku") + // From node_modules } if (isNewArchitectureEnabled()) { diff --git a/android/gowaku/build.gradle b/android/gowaku/build.gradle new file mode 100644 index 0000000..bcca9bf --- /dev/null +++ b/android/gowaku/build.gradle @@ -0,0 +1,2 @@ +configurations.maybeCreate("default") +artifacts.add("default", file('gowaku.aar')) diff --git a/android/libs/.gitkeep b/android/libs/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..0aeb5e3 --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1 @@ +include ':gowaku' diff --git a/download-gowaku.sh b/download-gowaku.sh index 5c89f51..dc16e76 100755 --- a/download-gowaku.sh +++ b/download-gowaku.sh @@ -41,8 +41,8 @@ if [ "$DOWNLOAD_ANDROID" = true ]; then exit 1 fi - rm -f ../android/libs/gowaku* - tar xvfz ${ANDROID_TAR} -C ../android/libs + rm -f ../android/gowaku/gowaku* + tar xvfz ${ANDROID_TAR} -C ../android/gowaku fi if [ "$DOWNLOAD_IOS" = true ]; then diff --git a/example/App.js b/example/App.js index e127996..d438bba 100644 --- a/example/App.js +++ b/example/App.js @@ -39,7 +39,7 @@ export default function App() { } console.log('The node ID:', await peerID()); - await relaySubscribe(); + await relaySubscribe(); onMessage((event) => { setResult( @@ -92,7 +92,7 @@ export default function App() { // TO RETRIEVE HISTORIC MESSAGES: console.log('Retrieving messages from store node'); const query = new StoreQuery(); - query.contentFilters.push(new ContentFilter('test-rramos')); + query.contentFilters.push(new ContentFilter('ABC')); const queryResult = await storeQuery( query, '16Uiu2HAkvWiyFsgRhuJEb9JfjYxEkoHLgnUQmr1N5mKWnYjxYRVm' diff --git a/example/android/settings.gradle b/example/android/settings.gradle index efe70e5..a092687 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -15,3 +15,6 @@ if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") include(":ReactAndroid:hermes-engine") project(":ReactAndroid:hermes-engine").projectDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), "../ReactAndroid/hermes-engine"); } + +include ':gowaku' +project(':gowaku').projectDir = new File(rootProject.projectDir, './../node_modules/@waku/react-native/android/gowaku') \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 70f5a5e..941d780 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@waku/react-native", - "version": "0.0.12", + "version": "0.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@waku/react-native", - "version": "0.0.12", + "version": "0.1.0", "license": "MIT", "dependencies": { "base-64": "^1.0.0", diff --git a/package.json b/package.json index 472b71f..a7d1afe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@waku/react-native", - "version": "0.0.12", + "version": "0.1.0", "description": "Waku React Native", "author": "Status Research & Development GMBH", "authors": [ diff --git a/src/index.tsx b/src/index.tsx index 93037ec..02fa32a 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -19,7 +19,7 @@ const ReactNative = NativeModules.ReactNative } ); -const OneMillion = bigInt(1_000_000); +const OneMillion = bigInt(1000000); export class WakuMessage { payload: Uint8Array = new Uint8Array(); @@ -51,7 +51,10 @@ export function onMessage(cb: (arg0: any) => void) { let signal = JSON.parse(event.signal); let msg = signal.event.wakuMessage; signal.event.wakuMessage = new WakuMessage(); - signal.event.wakuMessage.timestamp = msg.timestamp; + signal.event.wakuMessage.timestamp = + msg.timestamp != 0 + ? new Date(bigInt(msg.timestamp).divide(OneMillion).toJSNumber()) + : undefined; signal.event.wakuMessage.version = msg.version || 0; signal.event.wakuMessage.contentTopic = msg.contentTopic; signal.event.wakuMessage.payload = new Uint8Array( @@ -734,9 +737,18 @@ export function storeQuery( if (response.error) { reject(response.error); } else { - if(response.result.messages){ - for(let i = 0; i < response.result.messages.length; i++){ - response.result.messages[i].payload = new Uint8Array(decode(response.result.messages[i].payload ?? []).split('').map(c => c.charCodeAt(0))); + if (response.result.messages) { + for (let i = 0; i < response.result.messages.length; i++) { + const t = response.result.messages[i].timestamp; + response.result.messages[i].timestamp = + t != 0 + ? new Date(bigInt(t).divide(OneMillion).toJSNumber()) + : undefined; + response.result.messages[i].payload = new Uint8Array( + decode(response.result.messages[i].payload ?? []) + .split('') + .map((c) => c.charCodeAt(0)) + ); } } resolve(response.result);