Trunk fixes

This commit is contained in:
HarukiToreda
2025-10-12 16:34:59 -04:00
parent 50a65a1393
commit 551086324b
3 changed files with 20 additions and 16 deletions

View File

@@ -269,8 +269,7 @@ void MessageStore::clearAllMessages()
} }
// Internal helper: erase first or last message matching a predicate // Internal helper: erase first or last message matching a predicate
template <typename Predicate> template <typename Predicate> static void eraseIf(std::deque<StoredMessage> &deque, Predicate pred, bool fromBack = false)
static void eraseIf(std::deque<StoredMessage> &deque, Predicate pred, bool fromBack = false)
{ {
if (fromBack) { if (fromBack) {
// Iterate from the back and erase the first match from the end // Iterate from the back and erase the first match from the end
@@ -299,9 +298,7 @@ void MessageStore::dismissOldestMessage()
// Dismiss oldest message in a specific channel // Dismiss oldest message in a specific channel
void MessageStore::dismissOldestMessageInChannel(uint8_t channel) void MessageStore::dismissOldestMessageInChannel(uint8_t channel)
{ {
auto pred = [channel](const StoredMessage &m) { auto pred = [channel](const StoredMessage &m) { return m.type == MessageType::BROADCAST && m.channelIndex == channel; };
return m.type == MessageType::BROADCAST && m.channelIndex == channel;
};
eraseIf(liveMessages, pred); eraseIf(liveMessages, pred);
eraseIf(messages, pred); eraseIf(messages, pred);
saveToFlash(); saveToFlash();
@@ -325,8 +322,10 @@ void MessageStore::dismissOldestMessageWithPeer(uint32_t peer)
// Dismiss newest message (RAM + persisted queue) // Dismiss newest message (RAM + persisted queue)
void MessageStore::dismissNewestMessage() void MessageStore::dismissNewestMessage()
{ {
eraseIf(liveMessages, [](StoredMessage &) { return true; }, true); eraseIf(
eraseIf(messages, [](StoredMessage &) { return true; }, true); liveMessages, [](StoredMessage &) { return true; }, true);
eraseIf(
messages, [](StoredMessage &) { return true; }, true);
saveToFlash(); saveToFlash();
} }

View File

@@ -36,10 +36,10 @@ enum class AckStatus : uint8_t {
}; };
struct StoredMessage { struct StoredMessage {
uint32_t timestamp; // When message was created (secs since boot/RTC) uint32_t timestamp; // When message was created (secs since boot/RTC)
uint32_t sender; // NodeNum of sender uint32_t sender; // NodeNum of sender
uint8_t channelIndex; // Channel index used uint8_t channelIndex; // Channel index used
char text[MAX_MESSAGE_SIZE]; // UTF-8 text payload char text[MAX_MESSAGE_SIZE]; // UTF-8 text payload
// Destination node. // Destination node.
// 0xffffffff (NODENUM_BROADCAST) means broadcast, // 0xffffffff (NODENUM_BROADCAST) means broadcast,

View File

@@ -36,10 +36,14 @@ static std::vector<std::string> cachedLines;
static std::vector<int> cachedHeights; static std::vector<int> cachedHeights;
// UTF-8 skip helper // UTF-8 skip helper
inline size_t utf8CharLen(uint8_t c) { inline size_t utf8CharLen(uint8_t c)
if ((c & 0xE0) == 0xC0) return 2; {
if ((c & 0xF0) == 0xE0) return 3; if ((c & 0xE0) == 0xC0)
if ((c & 0xF8) == 0xF0) return 4; return 2;
if ((c & 0xF0) == 0xE0)
return 3;
if ((c & 0xF8) == 0xF0)
return 4;
return 1; return 1;
} }
@@ -229,7 +233,8 @@ const std::vector<uint32_t> &getSeenPeers()
return seenPeers; return seenPeers;
} }
inline int centerYForRow(int y, int size) { inline int centerYForRow(int y, int size)
{
int midY = y + (FONT_HEIGHT_SMALL / 2); int midY = y + (FONT_HEIGHT_SMALL / 2);
return midY - (size / 2); return midY - (size / 2);
} }