Commit graph

81 commits

Author SHA1 Message Date
James Rich
a28dc377ae
fix: Handle node public key mismatch and show warning (#1720)
* Handle node public key mismatch and show warning

- Add a mismatchKey flag to Node and MessageTopBar to indicate a public key mismatch.
- Set the public key to a default error value (all zeros) when a node's public key changes.
- Display a warning in the MessageTopBar when a key mismatch is detected in PKC.
- Only clear all nodes when a different mynode number is present.

* feat: Add key mismatch detection to NodeInfoDao

This commit introduces a new feature to the `NodeInfoDao` that detects and handles public key mismatches for existing nodes.

-   A new function `upsertCheckKeyMatch` is added to `NodeInfoDao` that checks for public key changes when upserting a node. If a mismatch is detected, the public key is set to `ERROR_BYTE_STRING`, and a warning is logged.
- The function `upsertCheckKeyMatch` is used instead of `upsert` in `NodeRepository` and in `putAll` inside of `NodeInfoDao`.
-   A new test `testPkcMismatch` is added to `NodeInfoDaoTest` to verify the key mismatch detection.
- Changed `testNodes` to have unique public keys.
- Added `mismatchKey` state to the node model.

* detekt spacing

* Refactor: Correctly handle different node installations in NodeRepository

The logic for detecting different node installations in `NodeRepository.kt` was inverted, this commit fixes the logic to use `!=` instead of `==` to detect if the node number has changed.
2025-03-27 15:58:43 -05:00
todd2982
0a7d0ff4be
feat: Allow sorting by favorite nodes (#1700) 2025-03-21 16:16:54 -05:00
James Rich
8e5accd518
fix #1484: Filter out ignored nodes from map (#1676)
* fix #1484: Filter out ignored nodes from map

- Created a new `filteredNodeList` `StateFlow` in `UIState.kt` that filters out nodes marked as ignored.
- Updated `MapFragment.kt` to use `filteredNodeList` instead of `nodeList`, ensuring that ignored nodes are not displayed on the map.

* Refactor: Remove ExperimentalCoroutinesApi opt-in and add it to compiler args

- Removes the `@OptIn(ExperimentalCoroutinesApi::class)` annotation from multiple files.
- Adds `-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi` to the `freeCompilerArgs` in the `build.gradle` file, enabling the use of Experimental Coroutines API project-wide without the need for per-file opt-ins.
- The coroutine api is now applied globally.

Signed-off-by: James Rich <james.a.rich@gmail.com>

* detekt

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>

---------

Signed-off-by: James Rich <james.a.rich@gmail.com>
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-03-17 11:40:08 -05:00
andrekir
13b615a470 chore: update license header 2025-01-02 07:00:51 -03:00
Andre K
60e7e18116
feat(config): implement excluded modules validation (#1460)
* feat(config): implement excluded modules validation

* feat: hide excluded configs from metadata

* refactor: save local metadata from WantConfig

* refactor: delete metadata from deleted nodes

* fix: always request metadata for admin routes

* feat: show node firmware when metadata is available

* refactor: rename filter function

* feat: add `ServiceAction` request metadata
2025-01-02 06:38:33 -03:00
andrekir
1ea55b2209 refactor: move ignore node to is_ignored field in NodeInfo 2024-12-07 08:18:18 -03:00
andrekir
4a1319a645 refactor: replace user with node in Message model 2024-12-05 19:50:15 -03:00
James Rich
2234f5a713
feat: add emoji reactions to message bubbles (#1421)
* Add tapback emojis to message bubbles

Added TapBackEmojiItem composable to display tapback emojis.
Included it in MessageItem composable for incoming messages.
Added a FlowRow to show tapback emojis below the message bubble.

* feat: Add EmojiPicker View

* feat: show emojis for local messages

* feat: Add emoji tapbacks to messages

This commit introduces the ability to send and receive emoji tapbacks for messages.

- Adds emoji and replyId fields to DataPacket.
- Adds emoji tapback support to the MeshService
- Modifies UIState to handle emojis in message lists.

* feat: store tapbacks in database

Store tapbacks in the database and display them in the message list.
- Add a new table to the database to store tapbacks.
- Add a new DAO method to insert and retrieve tapbacks.
- Update the message list UI to display tapbacks.

* refactor: relation db and other changes

---------

Co-authored-by: Andre K <andrekir@pm.me>
2024-12-03 08:57:35 -03:00
andrekir
174a4d0771 refactor: ensure node database flows on IO thread 2024-11-26 09:57:23 -03:00
andrekir
1219d3037e chore: add GPL-3.0 license headers to source files 2024-11-26 08:54:18 -03:00
andrekir
e33cf85df6 refactor: migrate DebugPanel to Compose 2024-11-19 17:07:51 -03:00
Andre K
475e9fc22c
refactor: migrate QuickChat to Compose (#1419) 2024-11-19 11:59:28 -03:00
andrekir
02af81aeb0 fix: nodelist sort by viaMqtt 2024-11-15 06:49:40 -03:00
Robert-0410
013e3de792
refactor: Conducting time filter at the component lvl to avoid metric nav cards from being disabled when we don't have recent data (#1402) 2024-11-13 07:24:40 -03:00
Robert-0410
7e54ad950c
feat: Metrics time selection (#1396) 2024-11-11 17:54:26 -03:00
andrekir
adbe5952fc feat: position logs 2024-11-02 17:22:54 -03:00
andrekir
cfb38e9951 feat: add option to delete traceroute log 2024-10-26 05:57:18 -03:00
Andre K
a557bff3d7
feat: traceroute log (#1348) 2024-10-25 08:14:32 -03:00
andrekir
a3b4b70db9 fix(metrics): replace telemetry times with receive time 2024-10-25 07:55:47 -03:00
andrekir
eb80d419eb refactor(logs): add optional portNum parameter to getMeshPacketsFrom 2024-10-23 18:10:08 -03:00
Robert-0410
bb345e7437
feat: Signal Metrics (#1340) 2024-10-23 17:31:31 -03:00
andrekir
c98a5c7caf feat: add info cards for environment and power metrics 2024-10-19 13:28:16 -03:00
andrekir
eacf3a87a0 feat: create NodeEntity.isUnknownUser property 2024-10-14 17:20:06 -03:00
andrekir
fe56d257f5 chore: add detekt formatting rule set
https://detekt.dev/docs/next/rules/formatting/
2024-10-14 07:56:29 -03:00
andrekir
b503c10789 refactor: finish transition from NodeInfo to NodeEntity 2024-10-12 07:14:59 -03:00
James Rich
cf2315cb66
Sort nodes with unknown hops last (#1302)
Nodes with -1 hops (unknown) are now sorted last when sorting by hops_away. This ensures a more intuitive ordering
 in the UI.
2024-10-11 07:54:06 -03:00
James Rich
ebe0aeec14
Adds support for known 0 hopsAway (#1295) 2024-10-09 17:04:05 -03:00
andrekir
16e91c0ebf refactor: sync isOnline status with firmware (2 hours) 2024-10-02 17:03:36 -03:00
Andre K
c30ee2f55f
refactor: replace MyNodeInfo with MyNodeEntity (#1277) 2024-10-02 06:18:30 -03:00
andrekir
cca06784fc feat: add PowerMetrics data to nodes telemetry
closes #994
2024-10-01 19:50:03 -03:00
andrekir
717c932ae2 refactor(MeshLog): add fields for query optimization
- Adds `from_num` and `port_num` fields as indices to the `MeshLog` entity to improve query performance.
- Sets default values for new columns for auto-migration and backward compatibility.
2024-09-26 05:55:38 -03:00
andrekir
a075dfbd3a feat: add dialog for message status information 2024-09-24 22:06:15 -03:00
andrekir
22b1cf0f16 feat: add encryption status icon and dialog to node list items 2024-09-23 10:13:27 -03:00
andrekir
587c6c91f4 refactor: ensure backward compatibility for PKC encryption 2024-09-22 23:01:33 -03:00
andrekir
83dc389d6d refactor(NodeItem): replace NodeInfo with NodeEntity 2024-09-21 16:47:20 -03:00
Andre K
396195a1b8
refactor: introduce NodeEntity protobuf-based database entity (#1250) 2024-09-16 17:57:30 -03:00
Robert-0410
0c52bef43b
Mesh Packet Limit (#1245)
* Separated the device and environment metrics into their own files.

* Place a limit to the amount of MeshPackets we retrieve from the logs table.

* Making detekt happy with the naming.
2024-09-14 18:48:05 -03:00
andrekir
84939a74d2 refactor: replace nodeDBbyID with getUser() function 2024-09-11 20:01:16 -03:00
Andre K
9d5cf47762
refactor: migrate MessagesFragment RecyclerView to Compose (#1133) 2024-09-09 06:15:27 -03:00
andrekir
300904d337 chore(detekt): enable UnusedImports rule 2024-08-31 09:00:15 -03:00
andrekir
7e0cfff67b feat: add methods to retrieve MeshPackets and Telemetry from specific nodes 2024-08-18 06:58:44 -03:00
James Rich
2109426243
feat: Add role to NodeInfo (#1174) 2024-08-10 08:17:51 -03:00
andrekir
d7013e1386 feat: add unread message count 2024-06-15 12:42:55 -03:00
Andre K
5b3c78316b
feat: support for switching between devices (#1078) 2024-06-08 10:25:47 -03:00
andrekir
4a9be026e2 chore: prepare new strings for translation 2024-06-03 10:40:49 -03:00
andrekir
88a6bcc09d feat: add hops_away sort option 2024-06-03 08:57:29 -03:00
andrekir
4ceb4c5199 feat: add nodelist sort options 2024-06-02 09:24:22 -03:00
Andre K
ecaf35d7f3
feat: add ActionMenu option to mute contacts (#1003) 2024-04-28 16:18:16 -03:00
Dayle Drinkwater
47b2ecc8aa
Hops Away implementation (#966)
* Initial Hops Away feature

* Generate our own hopsAway, comparing hopStart to hopLimit

* Remove import of hopsAway from device nodeInfo, as this only shows 0 when hopStart isn't included on packets (with this info, we can't differentiate between a node which is Hops Away but on old firmware, or nodes which are on new firmware but direct. Both are 0)

Check if hopStart is 0 but hopLimit is not 0, if true set hopsAway to -1.

Show nodes with hopsAway with -1 with a (!) appended to the RSSI details, to show this probably isn't true. (eg they are using old firmware)

Change the default of hopsAway to -1, until we know it is direct (0) or hops away (1+)

* tidy up: move from nested if else to when

* Revert Project_Default.xml

* Move hopsAway when block in to updateNodeInfo() block above it.

Move hopsAway var to end of NodeInfo Class.

Schema update due to change above.

* hopsAway now follows firmware implementation.
hopsAway now imported from radio (installNodeInfo)

* reformat

---------

Co-authored-by: andrekir <andrekir@pm.me>
2024-04-21 08:14:35 -03:00
Jonathan Bennett
828696aca7
Add option to delete single node from nodeDB (#958) 2024-04-09 07:18:38 -03:00