mirror of
https://github.com/BlueWallet/BlueWallet.git
synced 2025-03-04 04:13:49 +01:00
Merge pull request #3310 from BlueWallet/accessbility
ADD: Accessibility button trait to TouchableOpacity
This commit is contained in:
commit
17d48debff
39 changed files with 154 additions and 63 deletions
|
@ -80,6 +80,7 @@ export const BlueButton = props => {
|
|||
alignItems: 'center',
|
||||
paddingHorizontal: 16,
|
||||
}}
|
||||
accessibilityRole="button"
|
||||
{...props}
|
||||
>
|
||||
<View style={{ flexDirection: 'row', justifyContent: 'center', alignItems: 'center' }}>
|
||||
|
@ -101,6 +102,7 @@ export const SecondButton = forwardRef((props, ref) => {
|
|||
|
||||
return (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={{
|
||||
flex: 1,
|
||||
borderWidth: 0.7,
|
||||
|
@ -127,7 +129,7 @@ export const SecondButton = forwardRef((props, ref) => {
|
|||
export const BitcoinButton = props => {
|
||||
const { colors } = useTheme();
|
||||
return (
|
||||
<TouchableOpacity testID={props.testID} onPress={props.onPress}>
|
||||
<TouchableOpacity accessibilityRole="button" testID={props.testID} onPress={props.onPress}>
|
||||
<View
|
||||
style={{
|
||||
borderColor: (props.active && colors.newBlue) || colors.buttonDisabledBackgroundColor,
|
||||
|
@ -169,7 +171,7 @@ export const BitcoinButton = props => {
|
|||
export const VaultButton = props => {
|
||||
const { colors } = useTheme();
|
||||
return (
|
||||
<TouchableOpacity testID={props.testID} onPress={props.onPress}>
|
||||
<TouchableOpacity accessibilityRole="button" testID={props.testID} onPress={props.onPress}>
|
||||
<View
|
||||
style={{
|
||||
borderColor: (props.active && colors.foregroundColor) || colors.buttonDisabledBackgroundColor,
|
||||
|
@ -217,7 +219,7 @@ export const VaultButton = props => {
|
|||
export const LightningButton = props => {
|
||||
const { colors } = useTheme();
|
||||
return (
|
||||
<TouchableOpacity onPress={props.onPress}>
|
||||
<TouchableOpacity accessibilityRole="button" onPress={props.onPress}>
|
||||
<View
|
||||
style={{
|
||||
borderColor: (props.active && colors.lnborderColor) || colors.buttonDisabledBackgroundColor,
|
||||
|
@ -423,6 +425,7 @@ export class BlueWalletNavigationHeader extends Component {
|
|||
}
|
||||
/>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={styles.balance}
|
||||
onPress={this.changeWalletBalanceUnit}
|
||||
ref={this.walletBalanceText}
|
||||
|
@ -449,7 +452,7 @@ export class BlueWalletNavigationHeader extends Component {
|
|||
)}
|
||||
</TouchableOpacity>
|
||||
{this.state.wallet.type === LightningCustodianWallet.type && this.state.allowOnchainAddress && (
|
||||
<TouchableOpacity onPress={this.manageFundsPressed}>
|
||||
<TouchableOpacity accessibilityRole="button" onPress={this.manageFundsPressed}>
|
||||
<View
|
||||
style={{
|
||||
marginTop: 14,
|
||||
|
@ -477,7 +480,7 @@ export class BlueWalletNavigationHeader extends Component {
|
|||
</TouchableOpacity>
|
||||
)}
|
||||
{this.state.wallet.type === MultisigHDWallet.type && (
|
||||
<TouchableOpacity onPress={this.manageFundsPressed}>
|
||||
<TouchableOpacity accessibilityRole="button" onPress={this.manageFundsPressed}>
|
||||
<View
|
||||
style={{
|
||||
marginTop: 14,
|
||||
|
@ -513,6 +516,7 @@ export const BlueButtonLink = forwardRef((props, ref) => {
|
|||
const { colors } = useTheme();
|
||||
return (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={{
|
||||
minHeight: 60,
|
||||
minWidth: 100,
|
||||
|
@ -557,7 +561,7 @@ export const BluePrivateBalance = () => {
|
|||
|
||||
export const BlueCopyToClipboardButton = ({ stringToCopy, displayText = false }) => {
|
||||
return (
|
||||
<TouchableOpacity onPress={() => Clipboard.setString(stringToCopy)}>
|
||||
<TouchableOpacity accessibilityRole="button" onPress={() => Clipboard.setString(stringToCopy)}>
|
||||
<Text style={{ fontSize: 13, fontWeight: '400', color: '#68bbe1' }}>{displayText || loc.transactions.details_copy}</Text>
|
||||
</TouchableOpacity>
|
||||
);
|
||||
|
@ -599,7 +603,12 @@ export class BlueCopyTextToClipboard extends Component {
|
|||
render() {
|
||||
return (
|
||||
<View style={{ justifyContent: 'center', alignItems: 'center', paddingHorizontal: 16 }}>
|
||||
<TouchableOpacity onPress={this.copyToClipboard} disabled={this.state.hasTappedText} testID="BlueCopyTextToClipboard">
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
onPress={this.copyToClipboard}
|
||||
disabled={this.state.hasTappedText}
|
||||
testID="BlueCopyTextToClipboard"
|
||||
>
|
||||
<Animated.Text style={styleCopyTextToClipboard.address} numberOfLines={0}>
|
||||
{this.state.address}
|
||||
</Animated.Text>
|
||||
|
@ -1193,7 +1202,7 @@ export const BlueReceiveButtonIcon = props => {
|
|||
const { colors } = useTheme();
|
||||
|
||||
return (
|
||||
<TouchableOpacity {...props} style={{ flex: 1 }}>
|
||||
<TouchableOpacity accessibilityRole="button" {...props} style={{ flex: 1 }}>
|
||||
<View
|
||||
style={{
|
||||
flex: 1,
|
||||
|
@ -1628,6 +1637,7 @@ export class BlueReplaceFeeSuggestions extends Component {
|
|||
},
|
||||
].map(({ label, type, time, rate, active }, index) => (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
key={label}
|
||||
onPress={() => this.onFeeSelected(type)}
|
||||
style={[
|
||||
|
@ -1654,6 +1664,7 @@ export class BlueReplaceFeeSuggestions extends Component {
|
|||
</TouchableOpacity>
|
||||
))}
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
onPress={() => this.customTextInput.focus()}
|
||||
style={[
|
||||
{ paddingHorizontal: 16, paddingVertical: 8, marginBottom: 10 },
|
||||
|
@ -1752,6 +1763,7 @@ export const BlueTabs = ({ active, onSwitch, tabs }) => (
|
|||
{tabs.map((Tab, i) => (
|
||||
<TouchableOpacity
|
||||
key={i}
|
||||
accessibilityRole="button"
|
||||
onPress={() => onSwitch(i)}
|
||||
style={[
|
||||
tabsStyles.tabRoot,
|
||||
|
@ -1859,18 +1871,21 @@ export class DynamicQRCode extends Component {
|
|||
<BlueSpacing20 />
|
||||
<View style={animatedQRCodeStyle.controller}>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={[animatedQRCodeStyle.button, { width: '25%', alignItems: 'flex-start' }]}
|
||||
onPress={this.moveToPreviousFragment}
|
||||
>
|
||||
<Text style={animatedQRCodeStyle.text}>{loc.send.dynamic_prev}</Text>
|
||||
</TouchableOpacity>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={[animatedQRCodeStyle.button, { width: '50%' }]}
|
||||
onPress={this.state.intervalHandler ? this.stopAutoMove : this.startAutoMove}
|
||||
>
|
||||
<Text style={animatedQRCodeStyle.text}>{this.state.intervalHandler ? loc.send.dynamic_stop : loc.send.dynamic_start}</Text>
|
||||
</TouchableOpacity>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={[animatedQRCodeStyle.button, { width: '25%', alignItems: 'flex-end' }]}
|
||||
onPress={this.moveToNextFragment}
|
||||
>
|
||||
|
|
|
@ -97,13 +97,13 @@ const UnlockWith = () => {
|
|||
const color = colorScheme === 'dark' ? '#FFFFFF' : '#000000';
|
||||
if ((biometricType === Biometric.TouchID || biometricType === Biometric.Biometrics) && !isStorageEncryptedEnabled) {
|
||||
return (
|
||||
<TouchableOpacity disabled={isAuthenticating} onPress={unlockWithBiometrics}>
|
||||
<TouchableOpacity accessibilityRole="button" disabled={isAuthenticating} onPress={unlockWithBiometrics}>
|
||||
<Icon name="fingerprint" size={64} type="font-awesome5" color={color} />
|
||||
</TouchableOpacity>
|
||||
);
|
||||
} else if (biometricType === Biometric.FaceID && !isStorageEncryptedEnabled) {
|
||||
return (
|
||||
<TouchableOpacity disabled={isAuthenticating} onPress={unlockWithBiometrics}>
|
||||
<TouchableOpacity accessibilityRole="button" disabled={isAuthenticating} onPress={unlockWithBiometrics}>
|
||||
<Image
|
||||
source={colorScheme === 'dark' ? require('./img/faceid-default.png') : require('./img/faceid-dark.png')}
|
||||
style={styles.icon}
|
||||
|
@ -112,7 +112,7 @@ const UnlockWith = () => {
|
|||
);
|
||||
} else if (isStorageEncryptedEnabled) {
|
||||
return (
|
||||
<TouchableOpacity disabled={isAuthenticating} onPress={unlockWithKey}>
|
||||
<TouchableOpacity accessibilityRole="button" disabled={isAuthenticating} onPress={unlockWithKey}>
|
||||
<Icon name="lock" size={64} type="font-awesome5" color={color} />
|
||||
</TouchableOpacity>
|
||||
);
|
||||
|
|
|
@ -66,10 +66,15 @@ const AddressInput = ({
|
|||
});
|
||||
}
|
||||
}}
|
||||
accessibilityRole="button"
|
||||
style={[styles.scan, stylesHook.scan]}
|
||||
accessibilityLabel={loc.send.details_scan}
|
||||
accessibilityHint={loc.send.details_scan_hint}
|
||||
>
|
||||
<Image source={require('../img/scan-white.png')} />
|
||||
<Text style={[styles.scanText, stylesHook.scanText]}>{loc.send.details_scan}</Text>
|
||||
<Image source={require('../img/scan-white.png')} accessible={false} />
|
||||
<Text style={[styles.scanText, stylesHook.scanText]} accessible={false}>
|
||||
{loc.send.details_scan}
|
||||
</Text>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
);
|
||||
|
|
|
@ -240,7 +240,12 @@ class AmountInput extends Component {
|
|||
</View>
|
||||
</View>
|
||||
{!disabled && amount !== BitcoinUnit.MAX && (
|
||||
<TouchableOpacity testID="changeAmountUnitButton" style={styles.changeAmountUnit} onPress={this.changeAmountUnit}>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
testID="changeAmountUnitButton"
|
||||
style={styles.changeAmountUnit}
|
||||
onPress={this.changeAmountUnit}
|
||||
>
|
||||
<Image source={require('../img/round-compare-arrows-24-px.png')} />
|
||||
</TouchableOpacity>
|
||||
)}
|
||||
|
|
|
@ -35,11 +35,11 @@ const styles = StyleSheet.create({
|
|||
});
|
||||
|
||||
const CoinsSelected = ({ number, onContainerPress, onClose }) => (
|
||||
<TouchableOpacity style={styles.root} onPress={onContainerPress}>
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.root} onPress={onContainerPress}>
|
||||
<View style={styles.labelContainer}>
|
||||
<Text style={styles.labelText}>{loc.formatString(loc.cc.coins_selected, { number })}</Text>
|
||||
</View>
|
||||
<TouchableOpacity style={styles.buttonContainer} onPress={onClose}>
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.buttonContainer} onPress={onClose}>
|
||||
<Avatar rounded containerStyle={[styles.ball]} icon={{ name: 'close', size: 22, type: 'ionicons', color: 'white' }} />
|
||||
</TouchableOpacity>
|
||||
</TouchableOpacity>
|
||||
|
|
|
@ -105,6 +105,7 @@ export class DynamicQRCode extends Component {
|
|||
return (
|
||||
<View style={animatedQRCodeStyle.container}>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
testID="DynamicCode"
|
||||
style={animatedQRCodeStyle.qrcodeContainer}
|
||||
onPress={() => {
|
||||
|
@ -136,18 +137,21 @@ export class DynamicQRCode extends Component {
|
|||
<BlueSpacing20 />
|
||||
<View style={animatedQRCodeStyle.controller}>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={[animatedQRCodeStyle.button, { width: '25%', alignItems: 'flex-start' }]}
|
||||
onPress={this.moveToPreviousFragment}
|
||||
>
|
||||
<Text style={animatedQRCodeStyle.text}>{loc.send.dynamic_prev}</Text>
|
||||
</TouchableOpacity>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={[animatedQRCodeStyle.button, { width: '50%' }]}
|
||||
onPress={this.state.intervalHandler ? this.stopAutoMove : this.startAutoMove}
|
||||
>
|
||||
<Text style={animatedQRCodeStyle.text}>{this.state.intervalHandler ? loc.send.dynamic_stop : loc.send.dynamic_start}</Text>
|
||||
</TouchableOpacity>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={[animatedQRCodeStyle.button, { width: '25%', alignItems: 'flex-end' }]}
|
||||
onPress={this.moveToNextFragment}
|
||||
>
|
||||
|
|
|
@ -119,7 +119,7 @@ export const FButton = ({ text, icon, width, first, last, ...props }) => {
|
|||
}
|
||||
|
||||
return (
|
||||
<TouchableOpacity style={[bStyles.root, bStylesHook.root, style]} {...props}>
|
||||
<TouchableOpacity accessibilityRole="button" style={[bStyles.root, bStylesHook.root, style]} {...props}>
|
||||
<View style={bStyles.icon}>{icon}</View>
|
||||
<Text numberOfLines={1} style={[bStyles.text, props.disabled ? bStylesHook.textDisabled : bStylesHook.text]}>
|
||||
{text}
|
||||
|
|
|
@ -139,6 +139,7 @@ const MultipleStepsListItem = props => {
|
|||
{props.button.buttonType === undefined ||
|
||||
(props.button.buttonType === MultipleStepsListItemButtohType.full && (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
disabled={props.button.disabled}
|
||||
style={[styles.provideKeyButton, stylesHook.provideKeyButton, buttonOpacity]}
|
||||
onPress={props.button.onPress}
|
||||
|
@ -152,6 +153,7 @@ const MultipleStepsListItem = props => {
|
|||
{props.button.leftText}
|
||||
</Text>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
disabled={props.button.disabled}
|
||||
style={[styles.rowPartialRightButton, stylesHook.provideKeyButton, rightButtonOpacity]}
|
||||
onPress={props.button.onPress}
|
||||
|
@ -166,7 +168,12 @@ const MultipleStepsListItem = props => {
|
|||
)}
|
||||
{!showActivityIndicator && props.rightButton && checked && (
|
||||
<View style={styles.rightButtonContainer} accessibilityComponentType>
|
||||
<TouchableOpacity disabled={props.rightButton.disabled} style={styles.rightButton} onPress={props.rightButton.onPress}>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
disabled={props.rightButton.disabled}
|
||||
style={styles.rightButton}
|
||||
onPress={props.rightButton.onPress}
|
||||
>
|
||||
<Text style={[styles.provideKeyButtonText, stylesHook.provideKeyButtonText]}>{props.rightButton.text}</Text>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
|
|
|
@ -29,6 +29,7 @@ export const SquareButton = forwardRef((props, ref) => {
|
|||
}}
|
||||
{...props}
|
||||
ref={ref}
|
||||
accessibilityRole="button"
|
||||
>
|
||||
<View style={{ flexDirection: 'row', justifyContent: 'center', alignItems: 'center' }}>
|
||||
{props.icon && <Icon name={props.icon.name} type={props.icon.type} color={props.icon.color} />}
|
||||
|
|
|
@ -35,7 +35,11 @@ const SquareEnumeratedWords = props => {
|
|||
);
|
||||
} else {
|
||||
component.push(
|
||||
<TouchableOpacity style={[styles.entryTextContainer, stylesHook.entryTextContainer]} key={`${secret}${index}`}>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={[styles.entryTextContainer, stylesHook.entryTextContainer]}
|
||||
key={`${secret}${index}`}
|
||||
>
|
||||
<Text textBreakStrategy="simple" style={[styles.entryText, stylesHook.entryText]}>
|
||||
{secret}
|
||||
</Text>
|
||||
|
|
|
@ -60,7 +60,7 @@ const nStyles = StyleSheet.create({
|
|||
const NewWalletPanel = ({ onPress }) => {
|
||||
const { colors } = useTheme();
|
||||
return (
|
||||
<TouchableOpacity testID="CreateAWallet" onPress={onPress} style={nStyles.root}>
|
||||
<TouchableOpacity accessibilityRole="button" testID="CreateAWallet" onPress={onPress} style={nStyles.root}>
|
||||
<View style={[nStyles.container, { backgroundColor: WalletGradient.createWallet() }]}>
|
||||
<Text style={[nStyles.addAWAllet, { color: colors.foregroundColor }]}>{loc.wallets.list_create_a_wallet}</Text>
|
||||
<Text style={[nStyles.addLine, { color: colors.alternativeTextColor }]}>{loc.wallets.list_create_a_wallet_text}</Text>
|
||||
|
@ -290,8 +290,7 @@ const cStyles = StyleSheet.create({
|
|||
content: {
|
||||
left: 16,
|
||||
flexDirection: I18nManager.isRTL && Platform.OS === 'android' ? 'row-reverse' : 'row',
|
||||
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const WalletsCarousel = forwardRef((props, ref) => {
|
||||
|
@ -348,7 +347,6 @@ const WalletsCarousel = forwardRef((props, ref) => {
|
|||
inactiveSlideOpacity={I18nManager.isRTL && Platform.OS === 'android' ? 1.0 : 0.7}
|
||||
activeSlideAlignment="start"
|
||||
contentContainerCustomStyle={cStyles.content}
|
||||
|
||||
initialNumToRender={10}
|
||||
onLayout={onLayout}
|
||||
{...props}
|
||||
|
|
|
@ -21,7 +21,7 @@ const navigationStyle = ({ closeButton = false, closeButtonFunc, ...opts }, form
|
|||
navigation.goBack(null);
|
||||
};
|
||||
headerRight = () => (
|
||||
<TouchableOpacity style={styles.button} onPress={handleClose} testID="NavigationCloseButton">
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.button} onPress={handleClose} testID="NavigationCloseButton">
|
||||
<Image source={theme.closeImage} />
|
||||
</TouchableOpacity>
|
||||
);
|
||||
|
@ -71,6 +71,7 @@ export const navigationStyleTx = (opts, formatter) => {
|
|||
headerTintColor: theme.colors.foregroundColor,
|
||||
headerLeft: () => (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={styles.button}
|
||||
onPress={() => {
|
||||
Keyboard.dismiss();
|
||||
|
|
|
@ -186,6 +186,7 @@
|
|||
"details_no_signed_tx": "The selected file doesn’t contain a transaction that can be imported.",
|
||||
"details_note_placeholder": "Note to Self",
|
||||
"details_scan": "Scan",
|
||||
"details_scan_hint": "Double tap to scan or import a destination",
|
||||
"details_total_exceeds_balance": "The sending amount exceeds the available balance.",
|
||||
"details_unrecognized_file_format": "Unrecognized file format",
|
||||
"details_wallet_before_tx": "Before creating a transaction, you must first add a Bitcoin wallet.",
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
"e2e:debug": "(test -f android/app/build/outputs/apk/debug/app-debug.apk && test -f android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk) || npm run e2e:debug-build; npm run e2e:debug-test",
|
||||
"e2e:release-build": "detox build -c android.emu.release",
|
||||
"e2e:release-test": "detox test -c android.emu.release --record-videos all --take-screenshots all --headless --loglevel trace",
|
||||
"lint": "eslint *.js screen/**/*.js blue_modules/*.js class/**/*.js models/ loc/ tests/**/*.js components/**/*.js",
|
||||
"lint": "eslint *.js screen/**/*.js blue_modules/*.js class/**/*.js models/ loc/ tests/**/*.js components/**/*.js components/*.js",
|
||||
"lint:fix": "npm run lint -- --fix",
|
||||
"lint:quickfix": "git status --porcelain | grep -v '\\.json' | grep '\\.js' --color=never | awk '{print $2}' | xargs eslint --fix; exit 0",
|
||||
"unit": "jest tests/unit/*"
|
||||
|
|
|
@ -483,6 +483,7 @@ export default class Browser extends Component {
|
|||
<View style={styles.safeURLHome}>
|
||||
{Platform.OS !== 'ios' && ( // on iOS lappbrowser opens blank page, thus, no HOME button
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
onPress={() => {
|
||||
processedInvoices = {};
|
||||
this.setState({ url: 'https://bluewallet.io/marketplace/' });
|
||||
|
@ -497,6 +498,7 @@ export default class Browser extends Component {
|
|||
)}
|
||||
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
onPress={() => {
|
||||
this.webView.current?.reload();
|
||||
}}
|
||||
|
|
|
@ -304,7 +304,14 @@ const LNDCreateInvoice = () => {
|
|||
|
||||
const renderScanClickable = () => {
|
||||
return (
|
||||
<TouchableOpacity disabled={isLoading} onPress={navigateToScanQRCode} style={[styles.scanRoot, styleHooks.scanRoot]}>
|
||||
<TouchableOpacity
|
||||
disabled={isLoading}
|
||||
onPress={navigateToScanQRCode}
|
||||
style={[styles.scanRoot, styleHooks.scanRoot]}
|
||||
accessibilityRole="button"
|
||||
accessibilityLabel={loc.send.details_scan}
|
||||
accessibilityHint={loc.send.details_scan_hint}
|
||||
>
|
||||
<Image style={{}} source={require('../../img/scan-white.png')} />
|
||||
<Text style={[styles.scanClick, styleHooks.scanClick]}>{loc.send.details_scan}</Text>
|
||||
</TouchableOpacity>
|
||||
|
@ -320,13 +327,13 @@ const LNDCreateInvoice = () => {
|
|||
return (
|
||||
<View style={styles.walletRoot}>
|
||||
{!isLoading && (
|
||||
<TouchableOpacity style={styles.walletChooseWrap} onPress={navigateToSelectWallet}>
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.walletChooseWrap} onPress={navigateToSelectWallet}>
|
||||
<Text style={styles.walletChooseText}>{loc.wallets.select_wallet.toLowerCase()}</Text>
|
||||
<Icon name={I18nManager.isRTL ? 'angle-left' : 'angle-right'} size={18} type="font-awesome" color="#9aa0aa" />
|
||||
</TouchableOpacity>
|
||||
)}
|
||||
<View style={styles.walletNameWrap}>
|
||||
<TouchableOpacity style={styles.walletNameTouch} onPress={navigateToSelectWallet}>
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.walletNameTouch} onPress={navigateToSelectWallet}>
|
||||
<Text style={[styles.walletNameText, styleHooks.walletNameText]}>{wallet.current.getLabel()}</Text>
|
||||
<Text style={[styles.walletNameBalance, styleHooks.walletNameBalance]}>
|
||||
{formatBalanceWithoutSuffix(wallet.current.getBalance(), BitcoinUnit.SATS, false)}
|
||||
|
|
|
@ -214,7 +214,7 @@ const LNDViewInvoice = () => {
|
|||
/>
|
||||
<View style={styles.detailsRoot}>
|
||||
{invoice.payment_preimage && typeof invoice.payment_preimage === 'string' ? (
|
||||
<TouchableOpacity style={styles.detailsTouch} onPress={navigateToPreImageScreen}>
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.detailsTouch} onPress={navigateToPreImageScreen}>
|
||||
<Text style={[styles.detailsText, stylesHook.detailsText]}>{loc.send.create_details}</Text>
|
||||
<Icon
|
||||
name={I18nManager.isRTL ? 'angle-left' : 'angle-right'}
|
||||
|
|
|
@ -128,6 +128,7 @@ export default class LnurlPay extends Component {
|
|||
<View style={styles.walletSelectRoot}>
|
||||
{!this.state.isLoading && (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={styles.walletSelectTouch}
|
||||
onPress={() =>
|
||||
this.props.navigation.navigate('SelectWallet', { onWalletSelect: this.onWalletSelect, chainType: Chain.OFFCHAIN })
|
||||
|
@ -139,6 +140,7 @@ export default class LnurlPay extends Component {
|
|||
)}
|
||||
<View style={styles.walletWrap}>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={styles.walletWrapTouch}
|
||||
onPress={() =>
|
||||
this.props.navigation.navigate('SelectWallet', { onWalletSelect: this.onWalletSelect, chainType: Chain.OFFCHAIN })
|
||||
|
|
|
@ -247,13 +247,13 @@ const ScanLndInvoice = () => {
|
|||
return (
|
||||
<View style={styles.walletSelectRoot}>
|
||||
{!isLoading && (
|
||||
<TouchableOpacity style={styles.walletSelectTouch} onPress={naviageToSelectWallet}>
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.walletSelectTouch} onPress={naviageToSelectWallet}>
|
||||
<Text style={styles.walletSelectText}>{loc.wallets.select_wallet.toLowerCase()}</Text>
|
||||
<Icon name={I18nManager.isRTL ? 'angle-left' : 'angle-right'} size={18} type="font-awesome" color="#9aa0aa" />
|
||||
</TouchableOpacity>
|
||||
)}
|
||||
<View style={styles.walletWrap}>
|
||||
<TouchableOpacity style={styles.walletWrapTouch} onPress={naviageToSelectWallet}>
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.walletWrapTouch} onPress={naviageToSelectWallet}>
|
||||
<Text style={[styles.walletWrapLabel, stylesHook.walletWrapLabel]}>{walletLabel}</Text>
|
||||
<Text style={[styles.walletWrapBalance, stylesHook.walletWrapBalance]}>
|
||||
{formatBalanceWithoutSuffix(wallet.getBalance(), BitcoinUnit.SATS, false)}
|
||||
|
|
|
@ -112,6 +112,7 @@ export default class AztecoRedeem extends Component {
|
|||
<View style={styles.selectWallet1}>
|
||||
{!this.state.isLoading && (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={styles.selectTouch}
|
||||
onPress={() =>
|
||||
this.props.navigation.navigate('SelectWallet', {
|
||||
|
@ -126,6 +127,7 @@ export default class AztecoRedeem extends Component {
|
|||
)}
|
||||
<View style={styles.selectWallet2}>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={styles.selectTouch}
|
||||
onPress={() =>
|
||||
this.props.navigation.navigate('SelectWallet', {
|
||||
|
|
|
@ -221,6 +221,7 @@ export default class Confirm extends Component {
|
|||
</Text>
|
||||
{this.state.isLoading ? <ActivityIndicator /> : <BlueButton onPress={() => this.send()} title={loc.send.confirm_sendNow} />}
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
testID="TransactionDetailsButton"
|
||||
style={styles.txDetails}
|
||||
onPress={async () => {
|
||||
|
|
|
@ -144,10 +144,14 @@ export default class SendCreate extends Component {
|
|||
<BlueText style={styles.cardText}>{loc.send.create_this_is_hex}</BlueText>
|
||||
<TextInput testID="TxhexInput" style={styles.cardTx} height={72} multiline editable value={this.state.tx} />
|
||||
|
||||
<TouchableOpacity style={styles.actionTouch} onPress={() => Clipboard.setString(this.state.tx)}>
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.actionTouch} onPress={() => Clipboard.setString(this.state.tx)}>
|
||||
<Text style={styles.actionText}>{loc.send.create_copy}</Text>
|
||||
</TouchableOpacity>
|
||||
<TouchableOpacity style={styles.actionTouch} onPress={() => Linking.openURL('https://coinb.in/?verify=' + this.state.tx)}>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={styles.actionTouch}
|
||||
onPress={() => Linking.openURL('https://coinb.in/?verify=' + this.state.tx)}
|
||||
>
|
||||
<Text style={styles.actionText}>{loc.send.create_verify}</Text>
|
||||
</TouchableOpacity>
|
||||
</BlueCard>
|
||||
|
@ -258,7 +262,7 @@ SendCreate.navigationOptions = navigationStyle({}, (options, { theme, navigation
|
|||
let headerRight;
|
||||
if (route.params.exportTXN) {
|
||||
headerRight = () => (
|
||||
<TouchableOpacity style={styles.export} onPress={route.params.exportTXN}>
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.export} onPress={route.params.exportTXN}>
|
||||
<Icon size={22} name="share-alternative" type="entypo" color={BlueCurrentTheme.colors.foregroundColor} />
|
||||
</TouchableOpacity>
|
||||
);
|
||||
|
|
|
@ -930,6 +930,7 @@ const SendDetails = () => {
|
|||
<View style={[styles.modalContent, stylesHook.modalContent]}>
|
||||
{options.map(({ label, time, fee, rate, active }, index) => (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
key={label}
|
||||
onPress={() => {
|
||||
setFeePrecalc(fp => ({ ...fp, current: fee }));
|
||||
|
@ -954,6 +955,7 @@ const SendDetails = () => {
|
|||
))}
|
||||
<TouchableOpacity
|
||||
testID="feeCustom"
|
||||
accessibilityRole="button"
|
||||
style={styles.feeModalCustom}
|
||||
onPress={async () => {
|
||||
let error = loc.send.fee_satbyte;
|
||||
|
@ -1102,6 +1104,7 @@ const SendDetails = () => {
|
|||
<View style={styles.select}>
|
||||
{!isLoading && (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={styles.selectTouch}
|
||||
onPress={() => navigation.navigate('SelectWallet', { onWalletSelect, chainType: Chain.ONCHAIN })}
|
||||
>
|
||||
|
@ -1111,6 +1114,7 @@ const SendDetails = () => {
|
|||
)}
|
||||
<View style={styles.selectWrap}>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={styles.selectTouch}
|
||||
onPress={() => navigation.navigate('SelectWallet', { onWalletSelect, chainType: Chain.ONCHAIN })}
|
||||
>
|
||||
|
@ -1251,6 +1255,7 @@ const SendDetails = () => {
|
|||
</View>
|
||||
<TouchableOpacity
|
||||
testID="chooseFee"
|
||||
accessibilityRole="button"
|
||||
onPress={() => setIsFeeSelectionModalVisible(true)}
|
||||
disabled={isLoading}
|
||||
style={styles.fee}
|
||||
|
@ -1428,6 +1433,7 @@ SendDetails.navigationOptions = navigationStyleTx({}, (options, { theme, navigat
|
|||
...options,
|
||||
headerRight: () => (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={styles.advancedOptions}
|
||||
onPress={route.params.advancedOptionsMenuButtonAction}
|
||||
testID="advancedOptionsMenuButton"
|
||||
|
|
|
@ -117,6 +117,7 @@ const PsbtMultisig = () => {
|
|||
{renderProvideSignature && (
|
||||
<View>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
testID="ProvideSignature"
|
||||
style={[styles.provideSignatureButton, stylesHook.provideSignatureButton]}
|
||||
onPress={navigateToPSBTMultisigQRCode}
|
||||
|
@ -283,6 +284,7 @@ const PsbtMultisig = () => {
|
|||
{isConfirmEnabled() && (
|
||||
<View style={styles.height80}>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
testID="ExportSignedPsbt"
|
||||
style={[styles.provideSignatureButton, stylesHook.provideSignatureButton]}
|
||||
onPress={navigateToPSBTMultisigQRCode}
|
||||
|
|
|
@ -168,10 +168,10 @@ const PsbtWithHardwareWallet = () => {
|
|||
<BlueText style={[styles.hexLabel, stylesHook.hexLabel]}>{loc.send.create_this_is_hex}</BlueText>
|
||||
<TextInput style={[styles.hexInput, stylesHook.hexInput]} height={112} multiline editable value={txHex} />
|
||||
|
||||
<TouchableOpacity style={styles.hexTouch} onPress={copyHexToClipboard}>
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.hexTouch} onPress={copyHexToClipboard}>
|
||||
<Text style={[styles.hexText, stylesHook.hexText]}>{loc.send.create_copy}</Text>
|
||||
</TouchableOpacity>
|
||||
<TouchableOpacity style={styles.hexTouch} onPress={handleOnVerifyPressed}>
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.hexTouch} onPress={handleOnVerifyPressed}>
|
||||
<Text style={[styles.hexText, stylesHook.hexText]}>{loc.send.create_verify}</Text>
|
||||
</TouchableOpacity>
|
||||
<BlueSpacing20 />
|
||||
|
|
|
@ -161,7 +161,7 @@ const About = () => {
|
|||
<BlueTextCentered>Electrum server</BlueTextCentered>
|
||||
<BlueSpacing20 />
|
||||
|
||||
<TouchableOpacity onPress={handleOnGithubPress} style={styles.buttonLink}>
|
||||
<TouchableOpacity accessibilityRole="button" onPress={handleOnGithubPress} style={styles.buttonLink}>
|
||||
<Icon size={22} name="github" type="font-awesome-5" color={colors.foregroundColor} />
|
||||
<Text style={styles.textLink}>{loc.settings.about_sm_github}</Text>
|
||||
</TouchableOpacity>
|
||||
|
@ -211,6 +211,7 @@ const About = () => {
|
|||
<BlueTextCentered>Unique ID: {getUniqueId()}</BlueTextCentered>
|
||||
<View style={styles.copyToClipboard}>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
onPress={() => {
|
||||
const stringToCopy = 'user.id:' + getUniqueId();
|
||||
Sentry.captureMessage('copied unique id');
|
||||
|
|
|
@ -236,7 +236,7 @@ export default class ElectrumSettings extends Component {
|
|||
<View key={i} style={styles.serverHistoryItem}>
|
||||
<Text style={styles.serverRow} numberOfLines={1} ellipsizeMode="middle">{`${server.host}:${server.port || server.sslPort}`}</Text>
|
||||
|
||||
<TouchableOpacity style={styles.selectButton} onPress={() => this.selectServer(server)}>
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.selectButton} onPress={() => this.selectServer(server)}>
|
||||
<BlueText>{loc.settings.electrum_select}</BlueText>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
|
@ -328,7 +328,7 @@ export default class ElectrumSettings extends Component {
|
|||
|
||||
<View style={styles.serverAddTitle}>
|
||||
<BlueText style={styles.explain}>{loc.settings.electrum_settings_explain}</BlueText>
|
||||
<TouchableOpacity testID="ResetToDefault" onPress={() => this.resetToDefault()}>
|
||||
<TouchableOpacity accessibilityRole="button" testID="ResetToDefault" onPress={() => this.resetToDefault()}>
|
||||
<BlueText>{loc.settings.electrum_reset}</BlueText>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
|
@ -371,7 +371,7 @@ export default class ElectrumSettings extends Component {
|
|||
<BlueCard>
|
||||
<View style={styles.serverHistoryTitle}>
|
||||
<BlueText style={styles.explain}>{loc.settings.electrum_history}</BlueText>
|
||||
<TouchableOpacity onPress={() => this.clearHistoryAlert()}>
|
||||
<TouchableOpacity accessibilityRole="button" onPress={() => this.clearHistoryAlert()}>
|
||||
<BlueText>{loc.settings.electrum_clear}</BlueText>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
|
|
|
@ -198,10 +198,14 @@ export default class CPFP extends Component {
|
|||
<BlueText style={styles.hex}>{loc.send.create_this_is_hex}</BlueText>
|
||||
<TextInput style={styles.hexInput} height={112} multiline editable value={this.state.txhex} />
|
||||
|
||||
<TouchableOpacity style={styles.action} onPress={() => Clipboard.setString(this.state.txhex)}>
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.action} onPress={() => Clipboard.setString(this.state.txhex)}>
|
||||
<Text style={styles.actionText}>{loc.send.create_copy}</Text>
|
||||
</TouchableOpacity>
|
||||
<TouchableOpacity style={styles.action} onPress={() => Linking.openURL('https://coinb.in/?verify=' + this.state.txhex)}>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={styles.action}
|
||||
onPress={() => Linking.openURL('https://coinb.in/?verify=' + this.state.txhex)}
|
||||
>
|
||||
<Text style={styles.actionText}>{loc.send.create_verify}</Text>
|
||||
</TouchableOpacity>
|
||||
<BlueButton onPress={() => this.broadcast()} title={loc.send.confirm_sendNow} />
|
||||
|
|
|
@ -66,7 +66,7 @@ const TransactionsDetails = () => {
|
|||
useEffect(() => {
|
||||
setOptions({
|
||||
headerRight: () => (
|
||||
<TouchableOpacity disabled={isLoading} style={styles.save} onPress={handleOnSaveButtonTapped}>
|
||||
<TouchableOpacity accessibilityRole="button" disabled={isLoading} style={styles.save} onPress={handleOnSaveButtonTapped}>
|
||||
<Text style={stylesHooks.saveText}>{loc.wallets.details_save}</Text>
|
||||
</TouchableOpacity>
|
||||
),
|
||||
|
@ -242,6 +242,7 @@ const TransactionsDetails = () => {
|
|||
]}
|
||||
/>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
ref={openTransactionOnBlockExplorerRef}
|
||||
onPress={handleOnOpenTransactionOnBlockExporerTapped}
|
||||
onLongPress={showToolTipMenu}
|
||||
|
|
|
@ -226,7 +226,7 @@ const TransactionsStatus = () => {
|
|||
} else if (isRBFCancelPossible === buttonStatus.possible) {
|
||||
return (
|
||||
<>
|
||||
<TouchableOpacity style={styles.cancel}>
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.cancel}>
|
||||
<Text onPress={navigateToRBFCancel} style={styles.cancelText}>
|
||||
{loc.transactions.status_cancel}
|
||||
</Text>
|
||||
|
@ -348,7 +348,7 @@ const TransactionsStatus = () => {
|
|||
{renderCPFP()}
|
||||
{renderRBFBumpFee()}
|
||||
{renderRBFCancel()}
|
||||
<TouchableOpacity style={styles.details} onPress={navigateToTransactionDetials}>
|
||||
<TouchableOpacity accessibilityRole="button" style={styles.details} onPress={navigateToTransactionDetials}>
|
||||
<Text style={styles.detailsText}>{loc.send.create_details.toLowerCase()}</Text>
|
||||
<Icon name={I18nManager.isRTL ? 'angle-left' : 'angle-right'} size={18} type="font-awesome" color="#9aa0aa" />
|
||||
</TouchableOpacity>
|
||||
|
|
|
@ -108,7 +108,7 @@ const WalletsAddMultisig = () => {
|
|||
<Text style={[styles.textSubtitle, stylesHook.textSubtitle]}>{loc.multisig.required_keys_out_of_total}</Text>
|
||||
<View style={styles.rowCenter}>
|
||||
<View style={styles.column}>
|
||||
<TouchableOpacity onPress={increaseM} disabled={n === m || m === 7} style={styles.chevron}>
|
||||
<TouchableOpacity accessibilityRole="button" onPress={increaseM} disabled={n === m || m === 7} style={styles.chevron}>
|
||||
<Icon
|
||||
name="chevron-up"
|
||||
size={22}
|
||||
|
@ -117,7 +117,7 @@ const WalletsAddMultisig = () => {
|
|||
/>
|
||||
</TouchableOpacity>
|
||||
<Text style={[styles.textM, stylesHook.textHeader]}>{m}</Text>
|
||||
<TouchableOpacity onPress={decreaseM} disabled={m === 2} style={styles.chevron}>
|
||||
<TouchableOpacity accessibilityRole="button" onPress={decreaseM} disabled={m === 2} style={styles.chevron}>
|
||||
<Icon name="chevron-down" size={22} type="octicon" color={m === 2 ? colors.buttonDisabledTextColor : '#007AFF'} />
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
|
@ -127,11 +127,11 @@ const WalletsAddMultisig = () => {
|
|||
</View>
|
||||
|
||||
<View style={styles.column}>
|
||||
<TouchableOpacity disabled={n === 7} onPress={increaseN} style={styles.chevron}>
|
||||
<TouchableOpacity accessibilityRole="button" disabled={n === 7} onPress={increaseN} style={styles.chevron}>
|
||||
<Icon name="chevron-up" size={22} type="octicon" color={n === 7 ? colors.buttonDisabledTextColor : '#007AFF'} />
|
||||
</TouchableOpacity>
|
||||
<Text style={[styles.textM, stylesHook.textHeader]}>{n}</Text>
|
||||
<TouchableOpacity onPress={decreaseN} disabled={n === m} style={styles.chevron}>
|
||||
<TouchableOpacity accessibilityRole="button" onPress={decreaseN} disabled={n === m} style={styles.chevron}>
|
||||
<Icon name="chevron-down" size={22} type="octicon" color={n === m ? colors.buttonDisabledTextColor : '#007AFF'} />
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
|
|
|
@ -643,7 +643,7 @@ const WalletsAddMultisigStep2 = () => {
|
|||
const renderHelp = () => {
|
||||
return (
|
||||
<View style={styles.helpButtonWrapper}>
|
||||
<TouchableOpacity style={[styles.helpButton, stylesHook.helpButton]} onPress={handleOnHelpPress}>
|
||||
<TouchableOpacity accessibilityRole="button" style={[styles.helpButton, stylesHook.helpButton]} onPress={handleOnHelpPress}>
|
||||
<Icon size={20} name="help" type="octaicon" color={colors.foregroundColor} />
|
||||
<Text style={[styles.helpButtonText, stylesHook.helpButtonText]}>{loc.multisig.ms_help}</Text>
|
||||
</TouchableOpacity>
|
||||
|
|
|
@ -179,7 +179,7 @@ const WalletDetails = () => {
|
|||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
setOptions({
|
||||
headerRight: () => (
|
||||
<TouchableOpacity testID="Save" disabled={isLoading} style={styles.save} onPress={setLabel}>
|
||||
<TouchableOpacity accessibilityRole="button" testID="Save" disabled={isLoading} style={styles.save} onPress={setLabel}>
|
||||
<Text style={stylesHook.saveText}>{loc.wallets.details_save}</Text>
|
||||
</TouchableOpacity>
|
||||
),
|
||||
|
@ -599,7 +599,7 @@ const WalletDetails = () => {
|
|||
)}
|
||||
<BlueSpacing20 />
|
||||
<BlueSpacing20 />
|
||||
<TouchableOpacity onPress={handleDeleteButtonTapped} testID="DeleteButton">
|
||||
<TouchableOpacity accessibilityRole="button" onPress={handleDeleteButtonTapped} testID="DeleteButton">
|
||||
<Text textBreakStrategy="simple" style={styles.delete}>{`${loc.wallets.details_delete}${' '}`}</Text>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
|
|
|
@ -714,11 +714,12 @@ export default class HodlHodl extends Component {
|
|||
{this.state.isLoading ? (
|
||||
<ActivityIndicator />
|
||||
) : (
|
||||
<TouchableOpacity onPress={() => this.setState({ isChooseCountryModalVisible: true })}>
|
||||
<TouchableOpacity accessibilityRole="button" onPress={() => this.setState({ isChooseCountryModalVisible: true })}>
|
||||
<Text style={styles.locationText}>{this.getNativeCountryName()}</Text>
|
||||
</TouchableOpacity>
|
||||
)}
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={styles.blueTextContainer}
|
||||
onPress={() => {
|
||||
this.setState({ isFiltersModalVisible: true });
|
||||
|
|
|
@ -443,6 +443,7 @@ HodlHodlMyContracts.navigationOptions = navigationStyle(
|
|||
},
|
||||
headerRight: () => (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
style={styles.marginRight}
|
||||
onPress={() => {
|
||||
Alert.alert(
|
||||
|
|
|
@ -129,13 +129,13 @@ const WalletsList = () => {
|
|||
},
|
||||
headerRight: () =>
|
||||
I18nManager.isRTL ? null : (
|
||||
<TouchableOpacity testID="SettingsButton" style={styles.headerTouch} onPress={navigateToSettings}>
|
||||
<TouchableOpacity accessibilityRole="button" testID="SettingsButton" style={styles.headerTouch} onPress={navigateToSettings}>
|
||||
<Icon size={22} name="kebab-horizontal" type="octicon" color={colors.foregroundColor} />
|
||||
</TouchableOpacity>
|
||||
),
|
||||
headerLeft: () =>
|
||||
I18nManager.isRTL ? (
|
||||
<TouchableOpacity testID="SettingsButton" style={styles.headerTouch} onPress={navigateToSettings}>
|
||||
<TouchableOpacity accessibilityRole="button" testID="SettingsButton" style={styles.headerTouch} onPress={navigateToSettings}>
|
||||
<Icon size={22} name="kebab-horizontal" type="octicon" color={colors.foregroundColor} />
|
||||
</TouchableOpacity>
|
||||
) : null,
|
||||
|
@ -218,7 +218,7 @@ const WalletsList = () => {
|
|||
{`${loc.transactions.list_title}${' '}`}
|
||||
</Text>
|
||||
{isDesktop && (
|
||||
<TouchableOpacity style={style} onPress={() => refreshTransactions(true)} disabled={isLoading}>
|
||||
<TouchableOpacity accessibilityRole="button" style={style} onPress={() => refreshTransactions(true)} disabled={isLoading}>
|
||||
<Icon name="refresh" type="font-awesome" color={colors.feeText} />
|
||||
</TouchableOpacity>
|
||||
)}
|
||||
|
@ -247,6 +247,7 @@ const WalletsList = () => {
|
|||
if (carouselData.length > 0 && !carouselData.some(wallet => wallet.type === PlaceholderWallet.type)) {
|
||||
const button = (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
onPress={() => {
|
||||
navigate('HodlHodl', { screen: 'HodlHodl' });
|
||||
}}
|
||||
|
|
|
@ -103,10 +103,10 @@ export const convertToBuffer = ({ entropy, bits }) => {
|
|||
|
||||
const Coin = ({ push }) => (
|
||||
<View style={styles.coinRoot}>
|
||||
<TouchableOpacity onPress={() => push(getEntropy(0, 2))} style={styles.coinBody}>
|
||||
<TouchableOpacity accessibilityRole="button" onPress={() => push(getEntropy(0, 2))} style={styles.coinBody}>
|
||||
<Image style={styles.coinImage} source={require('../../img/coin1.png')} />
|
||||
</TouchableOpacity>
|
||||
<TouchableOpacity onPress={() => push(getEntropy(1, 2))} style={styles.coinBody}>
|
||||
<TouchableOpacity accessibilityRole="button" onPress={() => push(getEntropy(1, 2))} style={styles.coinBody}>
|
||||
<Image style={styles.coinImage} source={require('../../img/coin2.png')} />
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
|
@ -151,7 +151,7 @@ const Dice = ({ push, sides }) => {
|
|||
return (
|
||||
<ScrollView contentContainerStyle={[styles.diceContainer, stylesHook.diceContainer]}>
|
||||
{[...Array(sides)].map((_, i) => (
|
||||
<TouchableOpacity key={i} onPress={() => push(getEntropy(i, sides))}>
|
||||
<TouchableOpacity accessibilityRole="button" key={i} onPress={() => push(getEntropy(i, sides))}>
|
||||
<View style={[styles.diceRoot, { width: diceWidth }]}>
|
||||
{sides === 6 ? (
|
||||
<Icon style={styles.diceIcon} name={diceIcon(i + 1)} size={70} color="grey" type="font-awesome-5" />
|
||||
|
@ -240,7 +240,7 @@ const Entropy = () => {
|
|||
return (
|
||||
<SafeBlueArea>
|
||||
<BlueSpacing20 />
|
||||
<TouchableOpacity onPress={() => setShow(!show)}>
|
||||
<TouchableOpacity accessibilityRole="button" onPress={() => setShow(!show)}>
|
||||
<View style={[styles.entropy, stylesHook.entropy]}>
|
||||
<Text style={[styles.entropyText, stylesHook.entropyText]}>{show ? hex : `${bits} of 256 bits`}</Text>
|
||||
</View>
|
||||
|
|
|
@ -105,6 +105,7 @@ const SelectWallet = () => {
|
|||
ReactNativeHapticFeedback.trigger('selection', { ignoreAndroidSystemSettings: false });
|
||||
onWalletSelect(item);
|
||||
}}
|
||||
accessibilityRole="button"
|
||||
>
|
||||
<View shadowOpacity={40 / 100} shadowOffset={{ width: 0, height: 0 }} shadowRadius={5} style={styles.itemRoot}>
|
||||
<LinearGradient shadowColor="#000000" colors={WalletGradient.gradientsFor(item.type)} style={styles.gradient}>
|
||||
|
|
|
@ -259,7 +259,13 @@ const WalletTransactions = () => {
|
|||
</View>
|
||||
<View style={[styles.listHeaderTextRow, stylesHook.listHeaderTextRow]}>
|
||||
<Text style={[styles.listHeaderText, stylesHook.listHeaderText]}>{loc.transactions.list_title}</Text>
|
||||
<TouchableOpacity testID="refreshTransactions" style={style} onPress={refreshTransactions} disabled={isLoading}>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
testID="refreshTransactions"
|
||||
style={style}
|
||||
onPress={refreshTransactions}
|
||||
disabled={isLoading}
|
||||
>
|
||||
<Icon name="refresh" type="font-awesome" color={colors.feeText} />
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
|
@ -340,6 +346,7 @@ const WalletTransactions = () => {
|
|||
return Platform.select({
|
||||
android: (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
onPress={() => {
|
||||
if (wallet.type === LightningCustodianWallet.type) {
|
||||
navigate('LappBrowserRoot', {
|
||||
|
@ -358,6 +365,7 @@ const WalletTransactions = () => {
|
|||
ios:
|
||||
wallet.getBalance() > 0 ? (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
onPress={async () => {
|
||||
Linking.openURL('https://bluewallet.io/marketplace/');
|
||||
}}
|
||||
|
@ -373,6 +381,7 @@ const WalletTransactions = () => {
|
|||
const renderLappBrowserButton = () => {
|
||||
return (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
onPress={() => {
|
||||
navigate('LappBrowserRoot', {
|
||||
screen: 'LappBrowser',
|
||||
|
@ -391,7 +400,11 @@ const WalletTransactions = () => {
|
|||
|
||||
const renderSellFiat = () => {
|
||||
return (
|
||||
<TouchableOpacity onPress={navigateToBuyBitcoin} style={[styles.marketplaceButton2, stylesHook.marketplaceButton2]}>
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
onPress={navigateToBuyBitcoin}
|
||||
style={[styles.marketplaceButton2, stylesHook.marketplaceButton2]}
|
||||
>
|
||||
<Text style={[styles.marketpalceText1, stylesHook.marketpalceText1]}>{loc.wallets.list_tap_here_to_buy}</Text>
|
||||
</TouchableOpacity>
|
||||
);
|
||||
|
@ -654,7 +667,7 @@ const WalletTransactions = () => {
|
|||
{isLightning() && <Text style={styles.emptyTxsLightning}>{loc.wallets.list_empty_txs2_lightning}</Text>}
|
||||
|
||||
{!isLightning() && (
|
||||
<TouchableOpacity onPress={navigateToBuyBitcoin} style={styles.buyBitcoin}>
|
||||
<TouchableOpacity onPress={navigateToBuyBitcoin} style={styles.buyBitcoin} accessibilityRole="button">
|
||||
<Text testID="NoTxBuyBitcoin" style={styles.buyBitcoinText}>
|
||||
{loc.wallets.list_tap_here_to_buy}
|
||||
</Text>
|
||||
|
@ -716,6 +729,7 @@ WalletTransactions.navigationOptions = navigationStyle({}, (options, { theme, na
|
|||
return {
|
||||
headerRight: () => (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
testID="WalletDetails"
|
||||
disabled={route.params.isLoading === true}
|
||||
style={styles.walletDetails}
|
||||
|
|
Loading…
Add table
Reference in a new issue