@reown/appkit-siwe-react-native
Version:
#### 🔎 [Examples](https://github.com/reown-com/react-native-examples)
138 lines (137 loc) • 5.47 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ConnectingSiweView = ConnectingSiweView;
var _valtio = require("valtio");
var _appkitUiReactNative = require("@reown/appkit-ui-react-native");
var _appkitCoreReactNative = require("@reown/appkit-core-react-native");
var _react = require("react");
var _SIWEController = require("../../../controller/SIWEController");
var _styles = _interopRequireDefault(require("./styles"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function ConnectingSiweView() {
const {
metadata
} = (0, _valtio.useSnapshot)(_appkitCoreReactNative.OptionsController.state);
const {
connectedWalletImageUrl,
pressedWallet
} = (0, _valtio.useSnapshot)(_appkitCoreReactNative.ConnectionController.state);
const {
address,
profileImage
} = (0, _valtio.useSnapshot)(_appkitCoreReactNative.AccountController.state);
const [isSigning, setIsSigning] = (0, _react.useState)(false);
const [isDisconnecting, setIsDisconnecting] = (0, _react.useState)(false);
const dappName = metadata?.name || 'Dapp';
const dappIcon = metadata?.icons[0] || '';
const walletIcon = _appkitCoreReactNative.AssetUtil.getWalletImage(pressedWallet) || connectedWalletImageUrl;
const onSign = async () => {
setIsSigning(true);
_appkitCoreReactNative.EventsController.sendEvent({
event: 'CLICK_SIGN_SIWE_MESSAGE',
type: 'track',
properties: {
network: _appkitCoreReactNative.NetworkController.state.caipNetwork?.id || '',
isSmartAccount: _appkitCoreReactNative.AccountController.state.preferredAccountType === 'smartAccount'
}
});
try {
const session = await _SIWEController.SIWEController.signIn();
_appkitCoreReactNative.EventsController.sendEvent({
event: 'SIWE_AUTH_SUCCESS',
type: 'track',
properties: {
network: _appkitCoreReactNative.NetworkController.state.caipNetwork?.id || '',
isSmartAccount: _appkitCoreReactNative.AccountController.state.preferredAccountType === 'smartAccount'
}
});
return session;
} catch (error) {
_appkitCoreReactNative.SnackController.showError('Signature declined');
_SIWEController.SIWEController.setStatus('error');
return _appkitCoreReactNative.EventsController.sendEvent({
event: 'SIWE_AUTH_ERROR',
type: 'track',
properties: {
network: _appkitCoreReactNative.NetworkController.state.caipNetwork?.id || '',
isSmartAccount: _appkitCoreReactNative.AccountController.state.preferredAccountType === 'smartAccount'
}
});
} finally {
setIsSigning(false);
}
};
const onCancel = async () => {
const {
isConnected
} = _appkitCoreReactNative.AccountController.state;
if (isConnected) {
setIsDisconnecting(true);
await _appkitCoreReactNative.ConnectionController.disconnect();
_appkitCoreReactNative.ModalController.close();
setIsDisconnecting(false);
} else {
_appkitCoreReactNative.RouterController.push('Connect');
}
_appkitCoreReactNative.EventsController.sendEvent({
event: 'CLICK_CANCEL_SIWE',
type: 'track',
properties: {
network: _appkitCoreReactNative.NetworkController.state.caipNetwork?.id || '',
isSmartAccount: _appkitCoreReactNative.AccountController.state.preferredAccountType === 'smartAccount'
}
});
};
return /*#__PURE__*/React.createElement(_appkitUiReactNative.FlexView, {
padding: ['2xl', 's', '3xl', 's']
}, /*#__PURE__*/React.createElement(_appkitUiReactNative.IconLink, {
icon: "close",
size: "md",
onPress: onCancel,
testID: "header-close",
style: _styles.default.closeButton
}), /*#__PURE__*/React.createElement(_appkitUiReactNative.Text, {
variant: "paragraph-600",
numberOfLines: 1,
center: true
}, "Sign in"), /*#__PURE__*/React.createElement(_appkitUiReactNative.DoubleImageLoader, {
style: _styles.default.logoContainer,
leftImage: dappIcon,
rightImage: walletIcon,
renderRightPlaceholder: () => /*#__PURE__*/React.createElement(_appkitUiReactNative.Avatar, {
imageSrc: profileImage,
address: address,
size: 60,
borderWidth: 0
}),
rightItemStyle: !walletIcon && _styles.default.walletAvatar
}), /*#__PURE__*/React.createElement(_appkitUiReactNative.Text, {
center: true,
variant: "medium-600",
color: "fg-100",
style: _styles.default.title
}, dappName, " needs to connect to your wallet"), /*#__PURE__*/React.createElement(_appkitUiReactNative.Text, {
center: true,
variant: "small-400",
color: "fg-200",
style: _styles.default.subtitle
}, "Sign this message to prove you own this wallet and proceed. Cancelling will disconnect you"), /*#__PURE__*/React.createElement(_appkitUiReactNative.FlexView, {
flexDirection: "row",
justifyContent: "space-between",
margin: ['s', '0', '0', '0']
}, /*#__PURE__*/React.createElement(_appkitUiReactNative.Button, {
variant: "shade",
onPress: onCancel,
style: _styles.default.button,
loading: isDisconnecting
}, "Cancel"), /*#__PURE__*/React.createElement(_appkitUiReactNative.Button, {
variant: "fill",
loading: isSigning,
disabled: isDisconnecting,
onPress: onSign,
style: _styles.default.button
}, "Sign")));
}
//# sourceMappingURL=index.js.map