This package is a requirement for users integrating @notifi/notifi-react-card
with the Solana blockchain. It provides the bindings necessary for logging in with a Solana hardware wallet.
import {
NotifiContext,
NotifiInputFieldsText,
NotifiInputSeparators,
NotifiSubscriptionCard,
} from '@notifi-network/notifi-react-card';
import '@notifi-network/notifi-react-card/dist/index.css';
import { MemoProgramHardwareLoginPlugin } from '@notifi-network/notifi-solana-hw-login';
import { useConnection, useWallet } from '@solana/wallet-adapter-react';
import React from 'react';
import './NotifiCard.css';
export const NotifiCard: React.FC = () => {
const { connection } = useConnection();
const { wallet, sendTransaction, signMessage } = useWallet();
const adapter = wallet?.adapter;
const publicKey = adapter?.publicKey?.toBase58() ?? null;
const hwLoginPlugin = useMemo(() => {
return new MemoProgramHardwareLoginPlugin({
walletPublicKey: publicKey ?? '',
connection,
sendTransaction,
});
}, [publicKey, connection, sendTransaction]);
if (publicKey === null || signMessage === undefined) {
// publicKey is required
return null;
}
const inputLabels: NotifiInputFieldsText = {
label: {
email: 'Email',
sms: 'Text Message',
telegram: 'Telegram',
},
placeholderText: {
email: 'Email',
},
};
const inputSeparators: NotifiInputSeparators = {
smsSeparator: {
content: 'OR',
},
emailSeparator: {
content: 'OR',
},
telegramSeparator: {
content: 'OR',
},
};
return (
<div className="container">
<NotifiContext
dappAddress="<YOUR OWN DAPP ADDRESS HERE>"
walletBlockchain="SOLANA"
env="Development"
walletPublicKey={publicKey}
hardwareLoginPlugin={hwLoginPlugin}
signMessage={signMessage}
>
<NotifiSubscriptionCard
darkMode
inputLabels={inputLabels}
inputSeparators={inputSeparators}
cardId="<YOUR OWN CARD ID HERE>"
/>
</NotifiContext>
</div>
);
};