diff --git a/contact/ui/contact_ui.py b/contact/ui/contact_ui.py index 4627cee..cfbbbef 100644 --- a/contact/ui/contact_ui.py +++ b/contact/ui/contact_ui.py @@ -964,7 +964,9 @@ def handle_backtick(stdscr: curses.window) -> None: settings_menu( stdscr, interface, - node=interface.getNode(remote_node_num), + # Settings requests configs explicitly; avoid getNode's + # implicit channel request racing that setup. + node=interface.getNode(remote_node_num, False), remote=True, status_callback=lambda message: update_remote_admin_wait(wait_win, message), ) diff --git a/contact/ui/control_ui.py b/contact/ui/control_ui.py index 7684a89..bcd7a4f 100644 --- a/contact/ui/control_ui.py +++ b/contact/ui/control_ui.py @@ -326,7 +326,10 @@ def settings_menu( _request_remote_with_timeout(node.requestConfig, config_type) if status_callback: status_callback("Requesting channels…") - _request_remote_with_timeout(node.requestChannels) + node.requestChannels() + if status_callback: + status_callback("Waiting for channel list…") + _request_remote_with_timeout(node.waitForConfig, "channels") menu = generate_menu_from_protobuf(interface, node=node, include_app_settings=not remote) menu_state.current_menu = menu["Main Menu"]