mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-11-01 10:21:59 +00:00
fix(ui-new): one '#' on a hashtag channel's favourite tile and slot list
Hashtag channel names already start with '#'; the tiles added another
("##test"). chanctl::bareName() is now the one place that strips it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -19,6 +19,10 @@ namespace chanctl {
|
||||
|
||||
enum Result : uint8_t { OK, FULL, NO_NAME, NO_SECRET, BAD_SECRET, EXISTS, FAILED };
|
||||
|
||||
// A channel's name without the '#' a hashtag channel's starts with -- for a
|
||||
// label that puts its own '#' in front (as ui-new's tiles do), never "##test".
|
||||
static inline const char* bareName(const char* name) { return name[0] == '#' ? name + 1 : name; }
|
||||
|
||||
static const char* resultText(Result r) {
|
||||
switch (r) {
|
||||
case OK: return "Saved";
|
||||
|
||||
@@ -721,7 +721,7 @@ class MessagesScreen : public UIScreen {
|
||||
ChannelDetails ch;
|
||||
if (the_mesh.getChannel(pfx[0], ch) && ch.name[0]) {
|
||||
nm[0] = '#';
|
||||
DisplayDriver::translateUTF8Static(nm + 1, ch.name, sizeof(nm) - 1);
|
||||
DisplayDriver::translateUTF8Static(nm + 1, chanctl::bareName(ch.name), sizeof(nm) - 1);
|
||||
}
|
||||
} else {
|
||||
for (int idx = 0; ; idx++) {
|
||||
|
||||
@@ -463,7 +463,7 @@ class HomeScreen : public UIScreen {
|
||||
ChannelDetails cd;
|
||||
if (!the_mesh.getChannel(c[k].ch, cd) || !cd.name[0]) continue;
|
||||
r.ch = c[k].ch;
|
||||
snprintf(r.name, sizeof(r.name), "#%s", cd.name[0] == '#' ? cd.name + 1 : cd.name);
|
||||
snprintf(r.name, sizeof(r.name), "#%s", chanctl::bareName(cd.name));
|
||||
r.n = _task->getChannelUnread(r.ch);
|
||||
r.overflow = r.n > 0 && _task->getChannelUnreadOverflow(r.ch);
|
||||
} else {
|
||||
@@ -1645,7 +1645,7 @@ public:
|
||||
// '#' marks a channel apart from a contact tile — the two share the
|
||||
// grid and Enter does something different on each.
|
||||
name[0] = '#';
|
||||
display.translateUTF8ToBlocks(name + 1, ch.name, sizeof(name) - 1);
|
||||
display.translateUTF8ToBlocks(name + 1, chanctl::bareName(ch.name), sizeof(name) - 1);
|
||||
unread = _task->getChannelUnread(ch_idx);
|
||||
overflow = unread > 0 && _task->getChannelUnreadOverflow(ch_idx);
|
||||
resolved = true;
|
||||
|
||||
Reference in New Issue
Block a user