diff --git a/contact/ui/curses_ui.py b/contact/ui/curses_ui.py index 379a7f3..189f048 100644 --- a/contact/ui/curses_ui.py +++ b/contact/ui/curses_ui.py @@ -459,7 +459,12 @@ def draw_node_list(): node = globals.interface.nodesByNum[node_num] secure = 'user' in node and 'publicKey' in node['user'] and node['user']['publicKey'] node_str = f"{'🔐' if secure else '🔓'} {get_name_from_database(node_num, 'long')}".ljust(box_width - 2)[:box_width - 2] - nodes_pad.addstr(i, 1, node_str, get_color("node_list", reverse=globals.selected_node == i and globals.current_window == 2)) + color = "node_list" + if 'isFavorite' in node and node['isFavorite']: + color = "node_favorite" + if 'isIgnored' in node and node['isIgnored']: + color = "node_ignored" + nodes_pad.addstr(i, 1, node_str, get_color(color, reverse=globals.selected_node == i and globals.current_window == 2)) nodes_win.attrset(get_color("window_frame_selected") if globals.current_window == 2 else get_color("window_frame")) nodes_win.box() @@ -720,9 +725,18 @@ def refresh_pad(window): def highlight_line(highlight, window, line): pad = nodes_pad + color = get_color("node_list") select_len = nodes_win.getmaxyx()[1] - 2 + if window == 2: + node_num = globals.node_list[line] + node = globals.interface.nodesByNum[node_num] + if 'isFavorite' in node and node['isFavorite']: + color = get_color("node_favorite") + if 'isIgnored' in node and node['isIgnored']: + color = get_color("node_ignored") + if(window == 0): pad = channel_pad color = get_color("channel_selected" if (line == globals.selected_channel and highlight == False) else "channel_list") diff --git a/contact/ui/default_config.py b/contact/ui/default_config.py index 4b5d331..370f5f5 100644 --- a/contact/ui/default_config.py +++ b/contact/ui/default_config.py @@ -65,7 +65,9 @@ def initialize_config(): "settings_save": ["green", "black"], "settings_breadcrumbs": ["white", "black"], "settings_warning": ["red", "black"], - "settings_note": ["green", "black"] + "settings_note": ["green", "black"], + "node_favorite": ["green", "black"], + "node_ignored": ["red", "black"] } COLOR_CONFIG_LIGHT = { "default": ["black", "white"], @@ -89,7 +91,9 @@ def initialize_config(): "settings_save": ["green", "white"], "settings_breadcrumbs": ["black", "white"], "settings_warning": ["red", "white"], - "settings_note": ["green", "white"] + "settings_note": ["green", "white"], + "node_favorite": ["green", "white"], + "node_ignored": ["red", "white"] } COLOR_CONFIG_GREEN = { "default": ["green", "black"], @@ -115,7 +119,9 @@ def initialize_config(): "settings_save": ["green", "black"], "settings_breadcrumbs": ["green", "black"], "settings_warning": ["green", "black"], - "settings_note": ["green", "black"] + "settings_note": ["green", "black"], + "node_favorite": ["cyan", "white"], + "node_ignored": ["red", "white"] } default_config_variables = { "db_file_path": db_file_path, diff --git a/contact/utilities/utils.py b/contact/utilities/utils.py index ea8d4a4..1af8f35 100644 --- a/contact/utilities/utils.py +++ b/contact/utilities/utils.py @@ -47,8 +47,15 @@ def get_node_list(): return node['hopsAway'] if 'hopsAway' in node else 100 else: return node + sorted_nodes = sorted(globals.interface.nodes.values(), key = node_sort) + + # Move favorite nodes to the beginning sorted_nodes = sorted(sorted_nodes, key = lambda node: node['isFavorite'] if 'isFavorite' in node else False, reverse = True) + + # Move ignored nodes to the end + sorted_nodes = sorted(sorted_nodes, key = lambda node: node['isIgnored'] if 'isIgnored' in node else False) + node_list = [node['num'] for node in sorted_nodes if node['num'] != my_node_num] return [my_node_num] + node_list # Ensuring your node is always first return []