mirror of
https://github.com/aljazceru/react-native-pubky.git
synced 2025-12-17 14:44:26 +01:00
64a4cc511333cb2d59bb0eddeb946e6e29eaba6d
Updates async functions in lib.rs. Updates example app. Update examples in README.md. Add sign-up/in/out examples to README.md. Bumps version to 0.7.1
react-native-pubky
React Native implementation of pubky
Installation
npm install @synonymdev/react-native-pubky
Implementation Status
Implemented Methods
- auth: Authentication functionality.
- parseAuthUrl: Method to decode an authUrl.
- publish: Functionality to publish content.
- resolve: Functionality to resolve content.
- publishHttps: Publish HTTPS records.
- resolveHttps: Resolve HTTPS records.
- signUp: Sign-up to a homeserver and update Pkarr accordingly.
- signIn: Sign-in to a homeserver.
- signOut: Sign-out from a homeserver.
- put: Upload a small payload to a given path.
- get: Download a small payload from a given path relative to a pubky author.
- list: Returns a list of Pubky URLs of the files in the path of the
urlprovided. - generateSecretKey: Generate a secret key.
- getPublicKeyFromSecretKey: Get the public key string and uri from a secret key.
Methods to be Implemented
- getProfile: Retrieve the profile of a user.
- editProfile: Submit changes to the specified profile.
Usage
Auth
import { auth } from '@synonymdev/react-native-pubky';
const authRes = await auth(
'pubkyauth:///?caps=/pub/pubky.app/:rw,/pub/foo.bar/file:r&secret=U55XnoH6vsMCpx1pxHtt8fReVg4Brvu9C0gUBuw-Jkw&relay=http://167.86.102.121:4173/',
'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
);
if (authRes.isErr()) {
console.log(authRes.error.message);
return;
}
console.log(authRes.value);
parseAuthUrl
import { parseAuthUrl } from '@synonymdev/react-native-pubky';
const pubkyAuthUrl = 'pubkyauth:///?relay=https://demo.httprelay.io/link&capabilities=/pub/pubky.app:rw,/pub/example.com/nested:rw&secret=FyzJ3gJ1W7boyFZC1Do9fYrRmDNgCLNRwEu_gaBgPUA';
const parseRes = await parseAuthUrl(pubkyAuthUrl);
if (parseRes.isErr()) {
console.log(parseRes.error.message);
return;
}
console.log(parseRes.value);
publish
import { publish } from '@synonymdev/react-native-pubky';
const publishRes = await publish(
'recordnametest',
'recordcontenttest',
'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
);
if (publishRes.isErr()) {
console.log(publishRes.error.message);
return;
}
console.log(publishRes.value);
resolve
import { resolve } from '@synonymdev/react-native-pubky';
const resolveRes = await resolve(
'z4e8s17cou9qmuwen8p1556jzhf1wktmzo6ijsfnri9c4hnrdfty'
);
if (resolveRes.isErr()) {
console.log(resolveRes.error.message);
return;
}
console.log(resolveRes.value);
publishHttps
import { publishHttps } from '@synonymdev/react-native-pubky';
const publishHttpsRes = await publishHttps(
'example.com', // Record Name
'target.example.com', // Target
'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' // Secret Key
);
if (publishHttpsRes.isErr()) {
console.log(publishHttpsRes.error.message);
return;
}
console.log(publishHttpsRes.value);
resolveHttps
import { resolveHttps } from '@synonymdev/react-native-pubky';
const resolveHttpsRes = await resolveHttps(
'z4e8s17cou9qmuwen8p1556jzhf1wktmzo6ijsfnri9c4hnrdfty' // Public key
);
if (resolveHttpsRes.isErr()) {
console.log(resolveHttpsRes.error.message);
return;
}
console.log(resolveHttpsRes.value);
put
import { put } from '@synonymdev/react-native-pubky';
const putRes = await put(
'pubky://z4e8s17cou9qmuwen8p1556jzhf1wktmzo6ijsfnri9c4hnrdfty/pub/synonym.to', // URL
{ data: 'test content' }, // Content
);
if (putRes.isErr()) {
console.log(putRes.error.message);
return;
}
console.log(putRes.value);
get
import { get } from '@synonymdev/react-native-pubky';
const getRes = await get(
'pubky://z4e8s17cou9qmuwen8p1556jzhf1wktmzo6ijsfnri9c4hnrdfty/pub/synonym.to' // URL
);
if (getRes.isErr()) {
console.log(getRes.error.message);
return;
}
console.log(getRes.value);
list
import { list } from '@synonymdev/react-native-pubky';
const listRes = await list(
'pubky://z4e8s17cou9qmuwen8p1556jzhf1wktmzo6ijsfnri9c4hnrdfty/pub/' // URL
);
if (listRes.isErr()) {
console.log(listRes.error.message);
return;
}
console.log(listRes.value);
generateSecretKey
import { generateSecretKey } from '@synonymdev/react-native-pubky';
const generateSecretKeyRes = await generateSecretKey();
if (generateSecretKeyRes.isErr()) {
console.log(generateSecretKeyRes.error.message);
return;
}
console.log(generateSecretKeyRes.value);
getPublicKeyFromSecretKey
import { getPublicKeyFromSecretKey } from '@synonymdev/react-native-pubky';
const getPublicKeyFromSecretKeyRes = await getPublicKeyFromSecretKey('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855');
if (getPublicKeyFromSecretKeyRes.isErr()) {
console.log(getPublicKeyFromSecretKeyRes.error.message);
return;
}
console.log(getPublicKeyFromSecretKeyRes.value);
signUp
import { signUp } from '@synonymdev/react-native-pubky';
const signUpRes = await signUp(
'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', // Secret
'pubky://8pinxxgqs41n4aididenw5apqp1urfmzdztr8jt4abrkdn435ewo', // Homeserver
);
if (signUpRes.isErr()) {
console.log(signUpRes.error.message);
return;
}
console.log(signUpRes.value);
signIn
import { signIn } from '@synonymdev/react-native-pubky';
const signInRes = await signIn(
'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' // Secret Key
);
if (signInRes.isErr()) {
console.log(signInRes.error.message);
return;
}
console.log(signInRes.value);
signIn
import { signOut } from '@synonymdev/react-native-pubky';
const signOutRes = await signOut(
'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' // Secret Key
);
if (signOutRes.isErr()) {
console.log(signOutRes.error.message);
return;
}
console.log(signOutRes.value);
Local Installation
- Clone & npm install:
git clone git@github.com:pubky/react-native-pubky.git && cd react-native-pubky && npm i
- Delete the
rust/pubkydirectory to prevent a memory error (This step will be removed once pubky is public). - Yarn add it to your project:
yarn add path/to/react-native-pubky
Update Bindings
After making changes to any of the Rust files, the bindings will need to be updated. To do this, run the following command:
npm run update-bindings
Finally, ensure that PubkyModule.kt, Pubky.swift, Pubky.mm & src/index.tsx are updated accordingly based on the changes made to the Rust files.
License
MIT
Resources
Languages
Kotlin
38.3%
Swift
23%
C
12.7%
TypeScript
10.7%
JavaScript
9.5%
Other
5.8%