diff --git a/web/cashtab/src/components/Common/Ticker.js b/web/cashtab/src/components/Common/Ticker.js --- a/web/cashtab/src/components/Common/Ticker.js +++ b/web/cashtab/src/components/Common/Ticker.js @@ -26,7 +26,11 @@ tokenDbUrl: 'https://tokendb.kingbch.com', txHistoryCount: 10, xecApiBatchSize: 20, - defaultSettings: { fiatCurrency: 'usd', sendModal: false }, + defaultSettings: { + fiatCurrency: 'usd', + sendModal: false, + autoCameraOff: false, + }, notificationDurationShort: 3, notificationDurationLong: 5, localStorageMaxCharacters: 24, @@ -73,6 +77,7 @@ 'chf', ], sendModal: [true, false], + autoCameraOff: [true, false], }, fiatCurrencies: { usd: { name: 'US Dollar', symbol: '$', slug: 'usd' }, diff --git a/web/cashtab/src/components/Configure/Configure.js b/web/cashtab/src/components/Configure/Configure.js --- a/web/cashtab/src/components/Configure/Configure.js +++ b/web/cashtab/src/components/Configure/Configure.js @@ -455,6 +455,9 @@ .SendConfirm { color: ${props => props.theme.lightWhite}; } + .autoCameraOff { + color: ${props => props.theme.lightWhite}; + } `; const Configure = () => { @@ -933,6 +936,10 @@ changeCashtabSettings('sendModal', checkedState); }; + const handleCameraOverride = checkedState => { + changeCashtabSettings('autoCameraOff', checkedState); + }; + const getContactNameByAddress = contactAddress => { if (!contactAddress) { return; @@ -1844,6 +1851,22 @@ onChange={handleSendModalToggle} /> + +
+ Hide QR scanner +
+ } + unCheckedChildren={} + checked={ + cashtabSettings + ? cashtabSettings.autoCameraOff + : false + } + onChange={handleCameraOverride} + /> +
[
+
+
+ + + + Hide QR scanner +
+ +
@@ -835,7 +898,7 @@ General Settings
+
+
+ + + + Hide QR scanner +
+ +
diff --git a/web/cashtab/src/components/Send/Send.js b/web/cashtab/src/components/Send/Send.js --- a/web/cashtab/src/components/Send/Send.js +++ b/web/cashtab/src/components/Send/Send.js @@ -142,7 +142,12 @@ // If this is less than 769, the page will open with QR scanner open const { width } = useWindowDimensions(); // Load with QR code open if device is mobile and NOT iOS + anything but safari - const scannerSupported = width < 769 && isMobile && !(isIOS && !isSafari); + const scannerSupported = + cashtabSettings && + cashtabSettings.autoCameraOff === false && + width < 769 && + isMobile && + !(isIOS && !isSafari); const [formData, setFormData] = useState({ value: '', diff --git a/web/cashtab/src/components/Send/SendToken.js b/web/cashtab/src/components/Send/SendToken.js --- a/web/cashtab/src/components/Send/SendToken.js +++ b/web/cashtab/src/components/Send/SendToken.js @@ -113,7 +113,12 @@ // If this is less than 769, the page will open with QR scanner open const { width } = useWindowDimensions(); // Load with QR code open if device is mobile and NOT iOS + anything but safari - const scannerSupported = width < 769 && isMobile && !(isIOS && !isSafari); + const scannerSupported = + cashtabSettings && + cashtabSettings.autoCameraOff === false && + width < 769 && + isMobile && + !(isIOS && !isSafari); const [isModalVisible, setIsModalVisible] = useState(false); const [formData, setFormData] = useState({ diff --git a/web/cashtab/src/utils/__tests__/validation.test.js b/web/cashtab/src/utils/__tests__/validation.test.js --- a/web/cashtab/src/utils/__tests__/validation.test.js +++ b/web/cashtab/src/utils/__tests__/validation.test.js @@ -263,7 +263,11 @@ }); it(`Recognizes a valid cashtab settings object`, () => { expect( - isValidCashtabSettings({ fiatCurrency: 'usd', sendModal: false }), + isValidCashtabSettings({ + fiatCurrency: 'usd', + sendModal: false, + autoCameraOff: false, + }), ).toBe(true); }); it(`Rejects a cashtab settings object for an unsupported currency`, () => {