Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

multi: Enable toggling passphrase on device. #3496

Merged
merged 1 commit into from
Jun 7, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions app/actions/TrezorActions.js
Original file line number Diff line number Diff line change
Expand Up @@ -590,13 +590,48 @@ export const togglePassPhraseProtection = () => async (dispatch, getState) => {
});
dispatch({
enablePassphraseProtection: enableProtection,
deviceLabel: features.label,
type: TRZ_TOGGLEPASSPHRASEPROTECTION_SUCCESS
});
} catch (error) {
dispatch({ error, type: TRZ_TOGGLEPASSPHRASEPROTECTION_FAILED });
}
};

export const TRZ_TOGGLEPASSPHRASEONDEVICE_ATTEMPT =
"TRZ_TOGGLEPASSPHRASEONDEVICE_ATTEMPT";
export const TRZ_TOGGLEPASSPHRASEONDEVICE_FAILED =
"TRZ_TOGGLEPASSPHRASEONDEVICE_FAILED";
export const TRZ_TOGGLEPASSPHRASEONDEVICE_SUCCESS =
"TRZ_TOGGLEPASSPHRASEONDEVICE_SUCCESS";

export const togglePassphraseOnDevice = () => async (dispatch, getState) => {
dispatch({ type: TRZ_TOGGLEPASSPHRASEONDEVICE_ATTEMPT });

const features = await getFeatures(dispatch, getState).catch((error) => {
dispatch({ error, type: TRZ_TOGGLEPASSPHRASEONDEVICE_FAILED });
return;
});

const enableOnDevice = !features.passphrase_always_on_device;

try {
await deviceRun(dispatch, getState, async () => {
const res = await session.applySettings({
passphrase_always_on_device: enableOnDevice
});
return res.payload;
});
dispatch({
enablePassphraseOnDevice: enableOnDevice,
deviceLabel: features.label,
type: TRZ_TOGGLEPASSPHRASEONDEVICE_SUCCESS
});
} catch (error) {
dispatch({ error, type: TRZ_TOGGLEPASSPHRASEONDEVICE_FAILED });
}
};

export const TRZ_CHANGEHOMESCREEN_ATTEMPT = "TRZ_CHANGEHOMESCREEN_ATTEMPT";
export const TRZ_CHANGEHOMESCREEN_FAILED = "TRZ_CHANGEHOMESCREEN_FAILED";
export const TRZ_CHANGEHOMESCREEN_SUCCESS = "TRZ_CHANGEHOMESCREEN_SUCCESS";
Expand Down
2 changes: 2 additions & 0 deletions app/components/views/TrezorPage/TrezorPageContent.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ const TrezorPageContent = () => {
connect,
togglePinProtection,
togglePassPhraseProtection,
togglePassphraseOnDevice,
changeToDecredHomeScreen,
changeLabel,
wipeDevice,
Expand All @@ -49,6 +50,7 @@ const TrezorPageContent = () => {
{...{
togglePinProtection,
togglePassPhraseProtection,
togglePassphraseOnDevice,
changeToDecredHomeScreen,
performingOperation
}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ const ConfigButtons = ({
performingOperation,
togglePinProtection,
togglePassPhraseProtection,
togglePassphraseOnDevice,
changeToDecredHomeScreen
}) => (
<TrezorPageAccordion
Expand All @@ -25,6 +26,15 @@ const ConfigButtons = ({
m="Toggle Passphrase Protection"
/>
</DangerButton>
<KeyBlueButton
onClick={togglePassphraseOnDevice}
loading={performingOperation}
disabled={performingOperation}>
<T
id="trezorPage.togglePassphraseOnDeviceBtn"
m="Toggle Passphrase on Device"
/>
</KeyBlueButton>
<KeyBlueButton
onClick={changeToDecredHomeScreen}
loading={performingOperation}
Expand Down
5 changes: 5 additions & 0 deletions app/components/views/TrezorPage/hooks.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ export function useTrezorPage() {
() => dispatch(trza.togglePassPhraseProtection()),
[dispatch]
);
const togglePassphraseOnDevice = useCallback(
() => dispatch(trza.togglePassphraseOnDevice()),
[dispatch]
);
const changeToDecredHomeScreen = useCallback(
() => dispatch(trza.changeToDecredHomeScreen()),
[dispatch]
Expand Down Expand Up @@ -50,6 +54,7 @@ export function useTrezorPage() {
connect,
togglePinProtection,
togglePassPhraseProtection,
togglePassphraseOnDevice,
changeToDecredHomeScreen,
changeLabel,
wipeDevice,
Expand Down
3 changes: 3 additions & 0 deletions app/i18n/translations/original.json
Original file line number Diff line number Diff line change
Expand Up @@ -1153,6 +1153,8 @@
"trezor.passphraseModal.title": "Enter Trezor Passphrase",
"trezor.passphraseProtectionSuccess.disabled": "Passphrase protection has been disabled in Trezor {label}",
"trezor.passphraseProtectionSuccess.enabled": "Passphrase protection has been enabled in Trezor {label}",
"trezor.passphraseOnDeviceSuccess.disabled": "Passphrase on device has been disabled in Trezor {label}",
"trezor.passphraseOnDeviceSuccess.enabled": "Passphrase on device has been enabled in Trezor {label}",
"trezor.pinModal.clear": "clear",
"trezor.pinModal.description": "Click button sequence that corresponds to your pin on Trezor {label}",
"trezor.pinModal.title": "Enter Pin",
Expand Down Expand Up @@ -1185,6 +1187,7 @@
"trezorPage.recoverDeviceBtn": "Recover Device",
"trezorPage.title": "Trezor",
"trezorPage.togglePassPhraseProtectionBtn": "Toggle Passphrase Protection",
"trezorPage.togglePassphraseOnDeviceBtn": "Toggle Passphrase on Device",
"trezorPage.togglePinProtectionBtn": "Toggle Pin Protection",
"trezorPage.updateFirmwareBtn": "Update Firmware",
"trezorPage.updateFirmwarePah": "Path to firmware file",
Expand Down
20 changes: 20 additions & 0 deletions app/reducers/snackbar.js
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ import {
TRZ_TOGGLEPINPROTECTION_FAILED,
TRZ_TOGGLEPASSPHRASEPROTECTION_SUCCESS,
TRZ_TOGGLEPASSPHRASEPROTECTION_FAILED,
TRZ_TOGGLEPASSPHRASEONDEVICE_SUCCESS,
TRZ_TOGGLEPASSPHRASEONDEVICE_FAILED,
TRZ_CHANGEHOMESCREEN_SUCCESS,
TRZ_CHANGEHOMESCREEN_FAILED,
TRZ_CHANGELABEL_SUCCESS,
Expand Down Expand Up @@ -380,6 +382,14 @@ const messages = defineMessages({
id: "trezor.passphraseProtectionSuccess.disabled",
defaultMessage: "Passphrase protection has been disabled in Trezor {label}"
},
TRZ_TOGGLEPASSPHRASEONDEVICE_SUCCESS_ENABLED: {
id: "trezor.passphraseOnDevice.enabled",
defaultMessage: "Passphrase on device has been enabled in Trezor {label}"
},
TRZ_TOGGLEPASSPHRASEONDEVICE_SUCCESS_DISABLED: {
id: "trezor.passphraseOnDevice.disabled",
defaultMessage: "Passphrase on device has been disabled in Trezor {label}"
},
TRZ_CHANGEHOMESCREEN_SUCCESS: {
id: "trezor.changeHomeScreen.success",
defaultMessage: "Trezor home screen successfully changed"
Expand Down Expand Up @@ -724,6 +734,7 @@ export default function snackbar(state = {}, action) {
case TRZ_INITDEVICE_SUCCESS:
case TRZ_UPDATEFIRMWARE_SUCCESS:
case TRZ_TOGGLEPASSPHRASEPROTECTION_SUCCESS:
case TRZ_TOGGLEPASSPHRASEONDEVICE_SUCCESS:
case TRZ_CHANGELABEL_SUCCESS:
case TRZ_TOGGLEPINPROTECTION_SUCCESS:
case TRZ_BACKUPDEVICE_SUCCESS:
Expand Down Expand Up @@ -783,6 +794,14 @@ export default function snackbar(state = {}, action) {
];
values = { label: action.deviceLabel };
break;
case TRZ_TOGGLEPASSPHRASEONDEVICE_SUCCESS:
message =
messages[
"TRZ_TOGGLEPASSPHRASEONDEVICE_SUCCESS_" +
(action.enablePassphraseOnDevice ? "ENABLED" : "DISABLED")
];
values = { label: action.deviceLabel };
break;
case TRZ_CHANGELABEL_SUCCESS:
values = { label: action.deviceLabel };
break;
Expand Down Expand Up @@ -831,6 +850,7 @@ export default function snackbar(state = {}, action) {
case STARTTICKETBUYERV2_FAILED:
case TRZ_TOGGLEPINPROTECTION_FAILED:
case TRZ_TOGGLEPASSPHRASEPROTECTION_FAILED:
case TRZ_TOGGLEPASSPHRASEONDEVICE_FAILED:
case TRZ_CHANGEHOMESCREEN_FAILED:
case TRZ_CHANGELABEL_FAILED:
case TRZ_WIPEDEVICE_FAILED:
Expand Down
13 changes: 13 additions & 0 deletions app/reducers/trezor.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ import {
TRZ_TOGGLEPASSPHRASEPROTECTION_FAILED,
TRZ_TOGGLEPASSPHRASEPROTECTION_SUCCESS,
TRZ_TOGGLEPASSPHRASEPROTECTION_CONFIRMED,
TRZ_TOGGLEPASSPHRASEONDEVICE_ATTEMPT,
TRZ_TOGGLEPASSPHRASEONDEVICE_FAILED,
TRZ_TOGGLEPASSPHRASEONDEVICE_SUCCESS,
TRZ_CHANGEHOMESCREEN_ATTEMPT,
TRZ_CHANGEHOMESCREEN_FAILED,
TRZ_CHANGEHOMESCREEN_SUCCESS,
Expand Down Expand Up @@ -187,6 +190,7 @@ export default function trezor(state = {}, action) {
case TRZ_TOGGLEPINPROTECTION_ATTEMPT:
case TRZ_BACKUPDEVICE_ATTEMPT:
case TRZ_TOGGLEPASSPHRASEPROTECTION_ATTEMPT:
case TRZ_TOGGLEPASSPHRASEONDEVICE_ATTEMPT:
case TRZ_CHANGEHOMESCREEN_ATTEMPT:
case TRZ_CHANGELABEL_ATTEMPT:
case TRZ_WIPEDEVICE_ATTEMPT:
Expand All @@ -209,6 +213,7 @@ export default function trezor(state = {}, action) {
return {
...state,
enablePassphraseProtection: action.enablePassphraseProtection,
deviceLabel: action.deviceLabel,
confirmingTogglePassphrase: true
};
case TRZ_TOGGLEPASSPHRASEPROTECTION_CONFIRMED:
Expand All @@ -217,11 +222,19 @@ export default function trezor(state = {}, action) {
performingOperation: false,
confirmingTogglePassphrase: false
};
case TRZ_TOGGLEPASSPHRASEONDEVICE_SUCCESS:
return {
...state,
enablePassphraseOnDevice: action.enablePassphraseOnDevice,
performingOperation: false,
deviceLabel: action.deviceLabel
};
case SIGNTX_FAILED:
case SIGNTX_SUCCESS:
case TRZ_TOGGLEPINPROTECTION_FAILED:
case TRZ_TOGGLEPINPROTECTION_SUCCESS:
case TRZ_TOGGLEPASSPHRASEPROTECTION_FAILED:
case TRZ_TOGGLEPASSPHRASEONDEVICE_FAILED:
case TRZ_CHANGEHOMESCREEN_FAILED:
case TRZ_CHANGEHOMESCREEN_SUCCESS:
case TRZ_CHANGELABEL_FAILED:
Expand Down