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

@@ -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> => {