mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-08-06 20:26:12 +00:00
refactor(companion): dedup age formatting + reply-prefix parsing; drop dead code
Consolidation pass over the message/nearby UI, no functional change beyond one intentional display tweak: - Age tags: NearbyScreen::fmtAge, the nearby list's inline column, and QuickMsgScreen::fmtMsgAge each reimplemented the same s/m/h bucket ladder on top of geo::fmtAgeShort. All now delegate to it (fmtMsgAge removed). Visible effect: ages over 24h render as "Nd" instead of capped hours, matching the Locator target picker which already used fmtAgeShort. - Reply prefix: the "@[nick] " parse was duplicated in skipReplyPrefix() and FullscreenMsgView::render(). Extracted to one msgReplyBody() helper (body, plus optional addressee nick) — one place to handle its edge cases. - LiveTrack: the expiry predicate was duplicated in expire()/isActive(); extracted to a private expired() helper. - Removed a dead M_PI define (and unused <math.h>) in NearbyScreen.h, and a comment pointing at a CODE_REVIEW.md that doesn't exist. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
31d602c88a
commit
fe19d1b0a7
@@ -1,12 +1,7 @@
|
||||
#pragma once
|
||||
#include <math.h>
|
||||
#include "../GeoUtils.h"
|
||||
#include "NavView.h"
|
||||
|
||||
#ifndef M_PI
|
||||
#define M_PI 3.14159265358979323846
|
||||
#endif
|
||||
|
||||
// ── Nearby Nodes ──────────────────────────────────────────────────────────────
|
||||
// One list / detail / action-menu interaction path over two sources:
|
||||
// SRC_STORED — contacts known to the mesh (distance / bearing / last-heard)
|
||||
@@ -111,14 +106,13 @@ class NearbyScreen : public UIScreen {
|
||||
|
||||
bool useImperial() const { return _task && _task->useImperial(); }
|
||||
|
||||
// Full "X ago" form for the detail view, built on the shared short-age tag
|
||||
// so there's one bucket ladder (see geo::fmtAgeShort).
|
||||
static void fmtAge(char* buf, int n, uint32_t lastmod) {
|
||||
uint32_t now = rtc_clock.getCurrentTime();
|
||||
if (now < lastmod || lastmod == 0) { snprintf(buf, n, "unknown"); return; }
|
||||
uint32_t age = now - lastmod;
|
||||
if (age < 60) snprintf(buf, n, "%us ago", age);
|
||||
else if (age < 3600) snprintf(buf, n, "%um ago", age / 60);
|
||||
else if (age < 86400) snprintf(buf, n, "%uh ago", age / 3600);
|
||||
else snprintf(buf, n, ">1d ago");
|
||||
char s[8];
|
||||
geo::fmtAgeShort(s, sizeof(s), rtc_clock.getCurrentTime(), lastmod);
|
||||
if (!s[0]) { snprintf(buf, n, "unknown"); return; }
|
||||
snprintf(buf, n, "%s ago", s);
|
||||
}
|
||||
|
||||
static const char* typeName(uint8_t t) {
|
||||
@@ -715,14 +709,8 @@ public:
|
||||
if (_source == SRC_SCAN) {
|
||||
snprintf(right, sizeof(right), "%d", (int)e.rssi);
|
||||
} else if (_sort == SORT_TIME) {
|
||||
uint32_t now = rtc_clock.getCurrentTime();
|
||||
if (e.lastmod == 0 || now < e.lastmod) snprintf(right, sizeof(right), "?");
|
||||
else {
|
||||
uint32_t age = now - e.lastmod;
|
||||
if (age < 60) snprintf(right, sizeof(right), "%us", age);
|
||||
else if (age < 3600) snprintf(right, sizeof(right), "%um", age / 60);
|
||||
else snprintf(right, sizeof(right), "%uh", age / 3600);
|
||||
}
|
||||
geo::fmtAgeShort(right, sizeof(right), rtc_clock.getCurrentTime(), e.lastmod);
|
||||
if (!right[0]) snprintf(right, sizeof(right), "?"); // unknown / RTC not synced
|
||||
} else {
|
||||
if (e.dist_km >= 0.0f) geo::fmtDist(right, sizeof(right), e.dist_km, useImperial());
|
||||
else strncpy(right, "?GPS", sizeof(right));
|
||||
|
||||
Reference in New Issue
Block a user