![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
@proton/react-native-sdk
Advanced tools
yarn add @proton/react-native-sdk react-native-get-random-values @react-native-async-storage/async-storage
cd ios
pod install
import ProtonRNSDK, {
LinkSession,
ProtonLink,
} from '@proton/react-native-sdk';
class ProtonSDK {
chainId: string;
endpoints: string[];
requestAccount: string;
session: LinkSession;
link: ProtonLink;
constructor() {
this.chainId =
'71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd';
this.endpoints = ['https://testnet.protonchain.com']; // Multiple for fault tolerance
this.requestAccount = 'taskly'; // optional
this.session = null;
this.link = null;
}
Using the return value from the default call, call the login
method with the chainId
, endpoints
, the requestAccount
and the getReturnUrl
function. The getRetunUrl
function returns the url scheme of the app that the user will be redirected to after an interaction with the Proton App. Default call will return the user session (LinkSession
) and a link (ProtonLink
).
login = async () => {
const { session, link } = await ProtonRNSDK({
linkOptions: { chainId: this.chainId, endpoints: this.endpoints },
transportOptions: {
requestAccount: this.requestAccount,
getReturnUrl: () => 'taskly://main',
},
});
this.link = link;
this.session = session;
return { auth: session.auth };
};
This function can be used in code like this:
// Usage
const protonSDK = new ProtonSDK();
// usage login()
try {
const { auth } = await protonSDK.login();
rootStore.setActor(auth.actor);
rootStore.setPermission(auth.permission);
// do something like go to a subscription page
navigation.navigate('subscription');
} catch (ex) {
// login failed
Alert.alert('Error', ex.message);
}
Note that login will throw an exception if the user does not authorize the login.
To initiatize a transaction, use the transact
method of the session object:
sendTransaction = async (actions: Action) => {
return this.session.transact({ actions: actions }, { broadcast: true });
};
The following code shows a small example how to send 5 XUSDT to an account:
try {
const actions = [
{
account: 'xtokens',
name: 'transfer',
authorization: [
{
actor: rootStore.actor, // auth.actor that was saved before
permission: rootStore.permission, // auth.permission that was saved before
},
],
data: {
from: rootStore.actor, // auth.actor that was saved before
to: protonSDK.requestAccount, // the account the transaction is send to
quantity: '5.000000 XUSDT', // the amount of the transaction
memo: 'Taskly',
},
},
];
const tx = await protonSDK.sendTransaction(actions);
// navigate to the subscribed page
navigation.navigate('subscribed');
} catch (ex) {
// the transaction failed
Alert.alert('Error', ex.message);
}
Please note that if the user does not authorize the transaction, an exception will be thrown.
To logout call removeSession
on the link
object.
logout = async () => {
await this.link.removeSession(this.requestAccount, this.session.auth);
this.session = null;
this.link = null;
};
In the application you can use it like this:
// usage logout
protonSDK.logout();
navigation.navigate('welcome');
To restore a previous session, call the default function similar to login, but set the restoreSession
key as true
in linkOptions
.
restoreSession = async () => {
try {
const { link, session } = await ProtonRNSDK({
linkOptions: {
chainId: this.chainId,
endpoints: this.endpoints,
restoreSession: true,
},
transportOptions: {
requestAccount: this.requestAccount,
getReturnUrl: () => 'taskly://main',
},
});
this.link = link;
this.session = session;
console.log('session', this.session);
if (session) {
return {
auth: this.session.auth
};
} else {
return { auth: { actor: '', permission: '' } };
}
} catch (e) {
return e;
}
};
}
The code below shows how restoreSesssion
might be used:
try {
await protonSDK.restoreSession();
} catch (ex) {
console.warn(ex.message);
}
if (protonSDK.session !== null) {
console.log('session still exists');
} else {
console.log('session does not exits anymore');
}
FAQs
## Installation
We found that @proton/react-native-sdk demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.