
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
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
The npm package proton-react-native-sdk receives a total of 0 weekly downloads. As such, proton-react-native-sdk popularity was classified as not popular.
We found that proton-react-native-sdk demonstrated a healthy version release cadence and project activity because the last version was released less than 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
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.