Security News
38% of CISOs Fear Theyβre Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
@notifi-network/notifi-frontend-client
Advanced tools
@notifi/notifi-frontend-client
In this README, we'll cover the simple use case of one user authenticating through an Aptos wallet and creating an alert.
npm i @notifi-network/notifi-frontend-client
Load the Notifi Frontend Client SDK into your component.
Instantiate and configure the Notifi Client for your dApp and environment. If your user has not connected their wallet, they will need to do so in order to instantiate the client.
const accountAddress = '<The-wallet-public-account-address>';
const walletPublicKey = "<The wallet's public key>";
const tenantId = '<Tenant ID received through the Notifi Config Tool>';
const blockchainEnv = 'Development';
const client = newFrontendClient({
account: {
address: accountAddress, // string
publicKey: walletPublicKey, // string
},
tenantId,
env: blockchainEnv,
walletBlockchain: 'APTOS',
});
const newUserState = await client.initialize();
For a user to opt-in for notifications, they will need to provide their signature. This signature will then be used to authorize the user's connected wallet address with Notifi and create the account with Notifi.
Using the wallet adapter of your choice, prompt the user to sign and use the signed message in the logIn()
hook.
const signMessage: AptosSignMessageFunction = async (message, nonce) => {
if (!wallet) {
// the wallet object will be differ based on the wallet adapter you use
throw new Error('Wallet not connected');
}
// You will need to use the 'signMessage' method of your wallet adapter to sign the message.
const signature = await wallet.signMessage({
message,
});
return signature; // string (if the signature is not string format, you will need to convert it to string)
};
const logIn = async () => {
const userState: UserState = client.userState;
if (userState.status === 'authenticated') {
return 'User is already logged in';
}
const loginResult = await client.logIn({
walletBlockchain: 'APTOS',
signMessage,
} as SignMessageParams);
// client should be authenticated now
console.log('loginResult', loginResult);
return loginResult;
};
Once your user enters their contact information and options for their first alert, use the ensureTargetGroup()
to create a "target group" of their contact information and a "source group" of their desired alert options.
In order to create a target group, ensureTargetGroup()
must pass in least one email address, phone number, telegramId, or webhook url. Dapp admins can update pass in a webhook url to receive all of the notifications instead of a user email address, phone number, or telegramId.
The following example shows how to create a target group with an email address (user sign up with email).
const targetGroup = client.ensureTargetGroup({
name: 'Default',
emailAddress: 'user-email',
});
Then, use the ensureAlert()
to create the first alert when your user tends to subscribe an alert.
Scenario#1: This example shows how to create (user subscribe) a Broadcast message alert.
// Given that you have one Broadcast Topic in Notifi Admin Panel.
const subscribeAlert = () => {
const subscriptionCardConfig = await client.fetchSubscriptionCard();
const broadcastEventType: EventTypeItem = subscriptionCardConfig.eventTypes[0];
await client.ensureAlert({
eventType: broadcastEventType,
inputs: {},
});
}
The inputs
object is not required for a broadcast message alert, but it might be required for some cases if the topic requires some additional information.
Scenario#2: The following example shows how to subscribe a fusion health check alert with additional information (inputs
).
const name = `Health check Alerts: ${thresholdDirection} ${threshold}`;
const eventType = {
...
name,
...
};
const result = client.ensureAlert({
eventType,
inputs: {
...
[`${name}__healthRatio`]: healthRatio,
[`${name}__healthThresholdDirection`]: thresholdDirection,
},
});
If a user wants to update their alert by changing the email address notifications are sent to, or to add a phone number for SMS notifications, you can repeat the process above by calling ensureTargetGroup()
and ensureAlert()
again.
To delete an alert, use deleteAlert()
, which simply [takes the id
of the alert] to be deleted. In our use case where the user only has 1 alert in their account:
const handleDeleteAlert = async () => {
try {
const alerts = await getAlert();
const response = await deleteAlert({
alertId: alerts?.[0]?.id,
});
return response;
} catch (e) {
if (e instanceof GqlError) {
// handle the Notifi GqlError
}
}
};
To get notification history, use the getNotificationHistory()
const getNotificationHistory = async (first?: number, after?: string) => {
// Fetch `first` items after the `after` cursor (leave undefined for first page)
const { nodes, pageInfo } = await client.getNotificationHistory({
first,
after,
});
nodes.forEach((item) => {
if (item.detail?.__typename === 'BroadcastMessageEventDetails') {
console.log(
'I have a broadcast message',
item.detail?.subject,
item.detail?.message,
);
}
});
console.log('pageInfo', pageInfo.hasNextPage, pageInfo.endCursor);
return {
nodes,
pageInfo,
};
};
For more example in different blockchain, please visit notifi-react-example
You can also clone the example and run it locally.
FAQs
The frontend client for Notifi
The npm package @notifi-network/notifi-frontend-client receives a total of 401 weekly downloads. As such, @notifi-network/notifi-frontend-client popularity was classified as not popular.
We found that @notifi-network/notifi-frontend-client demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.Β It has 8 open source maintainers 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
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.