feat: add delete_file & session

Adds delete_file & session functions.
Adds examples to README.md & example app.
Fixes Android bindings.
Adds event listener functionality for future methods & features.
Bumps version to 0.9.0.
This commit is contained in:
coreyphillips
2024-10-07 09:47:52 -04:00
parent ca95ddaf8a
commit df9c8f7104
20 changed files with 1639 additions and 424 deletions

View File

@@ -1237,7 +1237,7 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- react-native-pubky (0.8.0):
- react-native-pubky (0.9.0):
- DoubleConversion
- glog
- hermes-engine
@@ -1757,7 +1757,7 @@ SPEC CHECKSUMS:
React-logger: 4072f39df335ca443932e0ccece41fbeb5ca8404
React-Mapbuffer: 714f2fae68edcabfc332b754e9fbaa8cfc68fdd4
React-microtasksnativemodule: 4943ad8f99be8ccf5a63329fa7d269816609df9e
react-native-pubky: 1da8f3324a665ecf4495652efe0e67820a22f3a2
react-native-pubky: 56f7277970ed798732a1268a6fac2fe4f8517c25
React-nativeconfig: 4a9543185905fe41014c06776bf126083795aed9
React-NativeModulesApple: 0506da59fc40d2e1e6e12a233db5e81c46face27
React-perflogger: 3bbb82f18e9ac29a1a6931568e99d6305ef4403b

View File

@@ -1,4 +1,5 @@
import { StyleSheet, View, Button } from 'react-native';
import { useEffect } from 'react';
import {
auth,
parseAuthUrl,
@@ -16,6 +17,10 @@ import {
getPublicKeyFromSecretKey,
decryptRecoveryFile,
createRecoveryFile,
setEventListener,
removeEventListener,
session,
deleteFile,
} from '@synonymdev/react-native-pubky';
const HOMESERVER = '8pinxxgqs41n4aididenw5apqp1urfmzdztr8jt4abrkdn435ewo';
@@ -24,6 +29,34 @@ const SECRET_KEY =
const PUBLIC_KEY = 'z4e8s17cou9qmuwen8p1556jzhf1wktmzo6ijsfnri9c4hnrdfty';
export default function App() {
useEffect(() => {
let cleanupListener: (() => void) | undefined;
const setupEventListener = async () => {
const result = await setEventListener((eventData) => {
console.log('Received event:', eventData);
});
if (result.isOk()) {
console.log('Event listener set up successfully');
} else {
console.error('Failed to set up event listener:', result.error);
}
cleanupListener = () => {
removeEventListener();
};
};
setupEventListener();
// Cleanup function
return () => {
if (cleanupListener) {
cleanupListener();
}
};
}, []);
return (
<View style={styles.container}>
<Button
@@ -237,6 +270,51 @@ export default function App() {
}
}}
/>
<Button
title={'deleteFile'}
onPress={async (): Promise<void> => {
try {
const listRes = await list(
`pubky://${PUBLIC_KEY}/pub/synonym.to` // URL
);
if (listRes.isErr()) {
console.log(listRes.error.message);
return;
}
if (!listRes.value.length || !listRes.value[0]) {
console.log('No files found');
return;
}
const res = await deleteFile(
listRes.value[0] // URL
);
if (res.isErr()) {
console.log(res.error.message);
return;
}
console.log(res.value);
} catch (e) {
console.log(e);
}
}}
/>
<Button
title={'session'}
onPress={async (): Promise<void> => {
try {
const res = await session(
PUBLIC_KEY // Public key
);
if (res.isErr()) {
console.log(res.error.message);
return;
}
console.log(res.value);
} catch (e) {
console.log(e);
}
}}
/>
<Button
title={'generateSecretKey'}
onPress={async (): Promise<void> => {