Conditionally delete favourited nodes on reset

This commit is contained in:
ford-jones 2025-10-10 21:44:18 +13:00
parent fe2e2753aa
commit 5d0113ce0c
2 changed files with 19 additions and 1 deletions

View File

@ -402,6 +402,11 @@ NodeDB::NodeDB()
config.position.gps_mode = meshtastic_Config_PositionConfig_GpsMode_ENABLED;
config.position.gps_enabled = 0;
}
if (config.device.role == meshtastic_Config_DeviceConfig_Role_CLIENT_BASE ||
config.device.role == meshtastic_Config_DeviceConfig_Role_ROUTER ||
config.device.role == meshtastic_Config_DeviceConfig_Role_ROUTER_LATE) {
saveFavourites == true;
}
#ifdef USERPREFS_FIRMWARE_EDITION
myNodeInfo.firmware_edition = USERPREFS_FIRMWARE_EDITION;
#endif
@ -983,7 +988,18 @@ void NodeDB::resetNodes()
if (!config.position.fixed_position)
clearLocalPosition();
numMeshNodes = 1;
if (saveFavourites) {
for (size_t i = 0; i < nodeDatabase.nodes.size(); i++) {
meshtastic_NodeInfoLite &node = nodeDatabase.nodes[i];
if (i > 0 && !node.is_favorite) {
node = meshtastic_NodeInfoLite();
} else {
numMeshNodes += 1;
}
};
} else {
std::fill(nodeDatabase.nodes.begin() + 1, nodeDatabase.nodes.end(), meshtastic_NodeInfoLite());
}
devicestate.has_rx_text_message = false;
devicestate.has_rx_waypoint = false;
saveNodeDatabaseToDisk();

View File

@ -144,6 +144,8 @@ class NodeDB
bool keyIsLowEntropy = false;
bool hasWarned = false;
bool saveFavourites = false;
/// don't do mesh based algorithm for node id assignment (initially)
/// instead just store in flash - possibly even in the initial alpha release do this hack
NodeDB();