mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-06-30 11:52:34 +00:00
refactor(core): cleanup homescreen params
- rename FirmwareUI::show_homescreen param name from `hold` to `lockable` because hold or hold_to_lock no longer covers all layouts - cleanup uPy notification params [no changelog]
This commit is contained in:
parent
5104872010
commit
2196a5f785
@ -361,6 +361,7 @@ static void _librust_qstrs(void) {
|
||||
MP_QSTR_language__title;
|
||||
MP_QSTR_lines;
|
||||
MP_QSTR_load_from_flash;
|
||||
MP_QSTR_lockable;
|
||||
MP_QSTR_lockscreen__tap_to_connect;
|
||||
MP_QSTR_lockscreen__tap_to_unlock;
|
||||
MP_QSTR_lockscreen__title_locked;
|
||||
|
@ -825,10 +825,10 @@ extern "C" fn new_show_homescreen(n_args: usize, args: *const Obj, kwargs: *mut
|
||||
let notification: Option<TString<'static>> =
|
||||
kwargs.get(Qstr::MP_QSTR_notification)?.try_into_option()?;
|
||||
let notification_level: u8 = kwargs.get_or(Qstr::MP_QSTR_notification_level, 0)?;
|
||||
let hold: bool = kwargs.get(Qstr::MP_QSTR_hold)?.try_into()?;
|
||||
let lockable: bool = kwargs.get(Qstr::MP_QSTR_lockable)?.try_into()?;
|
||||
let skip_first_paint: bool = kwargs.get(Qstr::MP_QSTR_skip_first_paint)?.try_into()?;
|
||||
|
||||
let layout = ModelUI::show_homescreen(label, hold, notification, notification_level)?;
|
||||
let layout = ModelUI::show_homescreen(label, notification, notification_level, lockable)?;
|
||||
let layout_obj = LayoutObj::new_root(layout)?;
|
||||
if skip_first_paint {
|
||||
layout_obj.skip_first_paint();
|
||||
@ -1662,9 +1662,9 @@ pub static mp_module_trezorui_api: Module = obj_module! {
|
||||
/// def show_homescreen(
|
||||
/// *,
|
||||
/// label: str | None,
|
||||
/// hold: bool,
|
||||
/// notification: str | None,
|
||||
/// notification_level: int = 0,
|
||||
/// lockable: bool,
|
||||
/// skip_first_paint: bool,
|
||||
/// ) -> LayoutObj[UiResult]:
|
||||
/// """Idle homescreen."""
|
||||
|
@ -869,12 +869,12 @@ impl FirmwareUI for UIBolt {
|
||||
|
||||
fn show_homescreen(
|
||||
label: TString<'static>,
|
||||
hold: bool,
|
||||
notification: Option<TString<'static>>,
|
||||
notification_level: u8,
|
||||
lockable: bool,
|
||||
) -> Result<impl LayoutMaybeTrace, Error> {
|
||||
let notification = notification.map(|w| (w, notification_level));
|
||||
let layout = RootComponent::new(Homescreen::new(label, notification, hold));
|
||||
let layout = RootComponent::new(Homescreen::new(label, notification, lockable));
|
||||
Ok(layout)
|
||||
}
|
||||
|
||||
|
@ -1059,12 +1059,12 @@ impl FirmwareUI for UICaesar {
|
||||
|
||||
fn show_homescreen(
|
||||
label: TString<'static>,
|
||||
hold: bool,
|
||||
notification: Option<TString<'static>>,
|
||||
notification_level: u8,
|
||||
lockable: bool,
|
||||
) -> Result<impl LayoutMaybeTrace, Error> {
|
||||
let notification = notification.map(|w| (w, notification_level));
|
||||
let loader_description = hold.then_some("Locking the device...".into());
|
||||
let loader_description = lockable.then_some("Locking the device...".into());
|
||||
let layout = RootComponent::new(Homescreen::new(label, notification, loader_description));
|
||||
Ok(layout)
|
||||
}
|
||||
|
@ -889,12 +889,12 @@ impl FirmwareUI for UIDelizia {
|
||||
|
||||
fn show_homescreen(
|
||||
label: TString<'static>,
|
||||
hold: bool,
|
||||
notification: Option<TString<'static>>,
|
||||
notification_level: u8,
|
||||
lockable: bool,
|
||||
) -> Result<impl LayoutMaybeTrace, Error> {
|
||||
let notification = notification.map(|w| (w, notification_level));
|
||||
let layout = RootComponent::new(Homescreen::new(label, notification, hold)?);
|
||||
let layout = RootComponent::new(Homescreen::new(label, notification, lockable)?);
|
||||
Ok(layout)
|
||||
}
|
||||
|
||||
|
@ -1016,9 +1016,9 @@ impl FirmwareUI for UIEckhart {
|
||||
|
||||
fn show_homescreen(
|
||||
label: TString<'static>,
|
||||
hold: bool,
|
||||
notification: Option<TString<'static>>,
|
||||
notification_level: u8,
|
||||
lockable: bool,
|
||||
) -> Result<impl LayoutMaybeTrace, Error> {
|
||||
let locked = false;
|
||||
let bootscreen = false;
|
||||
@ -1026,7 +1026,7 @@ impl FirmwareUI for UIEckhart {
|
||||
let notification = notification.map(|w| (w, notification_level));
|
||||
let layout = RootComponent::new(Homescreen::new(
|
||||
label,
|
||||
hold,
|
||||
lockable,
|
||||
locked,
|
||||
bootscreen,
|
||||
coinjoin_authorized,
|
||||
|
@ -308,9 +308,9 @@ pub trait FirmwareUI {
|
||||
|
||||
fn show_homescreen(
|
||||
label: TString<'static>,
|
||||
hold: bool,
|
||||
notification: Option<TString<'static>>,
|
||||
notification_level: u8,
|
||||
lockable: bool,
|
||||
) -> Result<impl LayoutMaybeTrace, Error>;
|
||||
|
||||
fn show_device_menu(
|
||||
|
@ -541,9 +541,9 @@ def show_group_share_success(
|
||||
def show_homescreen(
|
||||
*,
|
||||
label: str | None,
|
||||
hold: bool,
|
||||
notification: str | None,
|
||||
notification_level: int = 0,
|
||||
lockable: bool,
|
||||
skip_first_paint: bool,
|
||||
) -> LayoutObj[UiResult]:
|
||||
"""Idle homescreen."""
|
||||
|
@ -31,27 +31,31 @@ async def homescreen() -> None:
|
||||
# TODO: add notification that translations are out of date
|
||||
|
||||
notification = None
|
||||
notification_is_error = False
|
||||
notification_level = 1 # 0 = strong warning, 1 = warning, 2 = info, 3 = success
|
||||
if is_set_any_session(MessageType.AuthorizeCoinJoin):
|
||||
notification = TR.homescreen__title_coinjoin_authorized
|
||||
notification_level = 3
|
||||
elif storage.device.is_initialized() and storage.device.no_backup():
|
||||
notification = TR.homescreen__title_seedless
|
||||
notification_is_error = True
|
||||
notification_level = 0
|
||||
elif storage.device.is_initialized() and storage.device.unfinished_backup():
|
||||
notification = TR.homescreen__title_backup_failed
|
||||
notification_is_error = True
|
||||
notification_level = 0
|
||||
elif storage.device.is_initialized() and storage.device.needs_backup():
|
||||
notification = TR.homescreen__title_backup_needed
|
||||
notification_level = 1
|
||||
elif storage.device.is_initialized() and not config.has_pin():
|
||||
notification = TR.homescreen__title_pin_not_set
|
||||
notification_level = 1
|
||||
elif storage.device.get_experimental_features():
|
||||
notification = TR.homescreen__title_experimental_mode
|
||||
notification_level = 2
|
||||
|
||||
obj = Homescreen(
|
||||
label=label,
|
||||
notification=notification,
|
||||
notification_is_error=notification_is_error,
|
||||
hold_to_lock=config.has_pin(),
|
||||
notification_level=notification_level,
|
||||
lockable=config.has_pin(),
|
||||
)
|
||||
try:
|
||||
res = await obj.get_result()
|
||||
|
@ -67,28 +67,16 @@ class Homescreen(HomescreenBase):
|
||||
self,
|
||||
label: str | None,
|
||||
notification: str | None,
|
||||
notification_is_error: bool,
|
||||
hold_to_lock: bool,
|
||||
notification_level: int,
|
||||
lockable: bool,
|
||||
) -> None:
|
||||
level = 1
|
||||
if notification is not None:
|
||||
notification = notification.rstrip(
|
||||
"!"
|
||||
) # TODO handle TS5 that doesn't have it
|
||||
if notification == TR.homescreen__title_coinjoin_authorized:
|
||||
level = 3
|
||||
elif notification == TR.homescreen__title_experimental_mode:
|
||||
level = 2
|
||||
elif notification_is_error:
|
||||
level = 0
|
||||
|
||||
super().__init__(
|
||||
layout=_retry_with_gc(
|
||||
trezorui_api.show_homescreen,
|
||||
label=label,
|
||||
notification=notification,
|
||||
notification_level=level,
|
||||
hold=hold_to_lock,
|
||||
notification_level=notification_level,
|
||||
lockable=lockable,
|
||||
skip_first_paint=self._should_resume(),
|
||||
)
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user