diff options
| author | Kyren223 <Kyren223@proton.me> | 2025-02-03 17:14:35 +0200 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2025-02-03 17:14:35 +0200 |
| commit | a6cb16570e8245c572d9f7800bc38f6f7384ac35 (patch) | |
| tree | afc69bc71b3306e1ffd2696f10fe7d8c7b1ef599 | |
| parent | e8a7f654d710230e35c0157e01ce295da9c9205a (diff) | |
Pings now have a matching backgground if the user is effected by them
| -rw-r--r-- | internal/client/ui/colors/colors.go | 6 | ||||
| -rw-r--r-- | internal/client/ui/core/chat/chat.go | 61 |
2 files changed, 52 insertions, 15 deletions
diff --git a/internal/client/ui/colors/colors.go b/internal/client/ui/colors/colors.go index bf467eb..138e390 100644 --- a/internal/client/ui/colors/colors.go +++ b/internal/client/ui/colors/colors.go @@ -20,13 +20,19 @@ var ( LightMidnightBlue = lipgloss.Color("#3c3c5d") Turquoise = lipgloss.Color("#54D7A9") Red = lipgloss.Color("#F16265") + MutedRed = lipgloss.Color("#443737") + DarkMutedRed = lipgloss.Color("#402d2d") White = lipgloss.Color("#FFFFFF") Black = lipgloss.Color("#000000") Green = lipgloss.Color("#46d46c") Purple = lipgloss.Color("#BB91F0") DarkPurple = lipgloss.Color("#87123d") + MutedPurple = lipgloss.Color("#403744") + DarkMutedPurple = lipgloss.Color("#382d40") Orange = lipgloss.Color("#F5A670") Gold = lipgloss.Color("#FFBF00") + MutedGold = lipgloss.Color("#444037") + DarkMutedGold = lipgloss.Color("#40382d") Background = MidnightBlue BackgroundHighlight = LightMidnightBlue diff --git a/internal/client/ui/core/chat/chat.go b/internal/client/ui/core/chat/chat.go index 7712435..4731005 100644 --- a/internal/client/ui/core/chat/chat.go +++ b/internal/client/ui/core/chat/chat.go @@ -1049,16 +1049,23 @@ func (m *Model) renderMessageGroup(group []data.Message, remaining *int, height for i := len(group) - 1; i >= 0; i-- { extra := "" messageStyle := messageStyle + backgroundStyle := BackgroundStyle if m.frequencyIndex != -1 && group[i].Ping != nil { members := state.State.Members[*state.NetworkId(m.networkIndex)] switch *group[i].Ping { case packet.PingEveryone: extra = PingedEveryone - messageStyle = pingedMessageStyle.BorderForeground(colors.Purple) + messageStyle = pingedMessageStyle. + BorderForeground(colors.Purple). + Background(colors.MutedPurple) + backgroundStyle = backgroundStyle.Background(colors.MutedPurple) case packet.PingAdmins: extra = PingedAdmins if members[*state.UserID].IsAdmin { - messageStyle = pingedMessageStyle.BorderForeground(colors.Red) + messageStyle = pingedMessageStyle. + BorderForeground(colors.Red). + Background(colors.MutedRed) + backgroundStyle = backgroundStyle.Background(colors.MutedRed) } default: name := "@Unknown " @@ -1067,12 +1074,15 @@ func (m *Model) renderMessageGroup(group []data.Message, remaining *int, height } extra = PingedUserStyle.Render(name) if *group[i].Ping == *state.UserID { - messageStyle = pingedMessageStyle.BorderForeground(colors.Gold) + messageStyle = pingedMessageStyle. + BorderForeground(colors.Gold). + Background(colors.MutedGold) + backgroundStyle = backgroundStyle.Background(colors.MutedGold) } } } - rawContent := extra + group[i].Content + rawContent := extra + backgroundStyle.Render(group[i].Content) content := messageStyle.Render(rawContent) heights[i] = lipgloss.Height(content) if group[i].Edited { @@ -1093,7 +1103,7 @@ func (m *Model) renderMessageGroup(group []data.Message, remaining *int, height // Gap between each message group if m.index == height-*remaining { - gap := SelectedGap.Width(m.width).String() + gap := SelectedBgStyle.Width(m.width).String() buf = append(buf, gap...) } buf = append(buf, '\n') @@ -1121,18 +1131,26 @@ func (m *Model) renderMessageGroup(group []data.Message, remaining *int, height selectedStyle := messageStyle.Background(colors.BackgroundDim) selectedPingedStyle := pingedMessageStyle.Background(colors.BackgroundDim) + selectedBackgroundStyle := SelectedBgStyle extra := "" if m.frequencyIndex != -1 && group[selectedIndex].Ping != nil { + members := state.State.Members[*state.NetworkId(m.networkIndex)] switch *group[selectedIndex].Ping { case packet.PingEveryone: extra = PingedEveryone - selectedStyle = selectedPingedStyle.BorderForeground(colors.Purple) + selectedStyle = selectedPingedStyle. + BorderForeground(colors.Purple). + Background(colors.DarkMutedPurple) + selectedBackgroundStyle = selectedBackgroundStyle.Background(colors.DarkMutedPurple) case packet.PingAdmins: extra = PingedAdmins if members[*state.UserID].IsAdmin { - selectedStyle = selectedPingedStyle.BorderForeground(colors.Red) + selectedStyle = selectedPingedStyle. + BorderForeground(colors.Red). + Background(colors.DarkMutedRed) + selectedBackgroundStyle = selectedBackgroundStyle.Background(colors.DarkMutedRed) } default: name := "@Unknown " @@ -1141,13 +1159,16 @@ func (m *Model) renderMessageGroup(group []data.Message, remaining *int, height } extra = PingedUserStyle.Render(name) if *group[selectedIndex].Ping == *state.UserID { - selectedStyle = selectedPingedStyle.BorderForeground(colors.Gold) + selectedStyle = selectedPingedStyle. + BorderForeground(colors.Gold). + Background(colors.DarkMutedGold) + selectedBackgroundStyle = selectedBackgroundStyle.Background(colors.DarkMutedGold) } } } rawContent := group[selectedIndex].Content - rawContent = lipgloss.NewStyle().Background(colors.BackgroundDim).Render(rawContent) + rawContent = selectedBackgroundStyle.Render(rawContent) rawContent = extra + rawContent content := selectedStyle.Render(rawContent) if group[selectedIndex].Edited { @@ -1158,25 +1179,32 @@ func (m *Model) renderMessageGroup(group []data.Message, remaining *int, height content = selectedStyle.Render(rawContent + SelectedEditedIndicatorNL) } } - content = lipgloss.NewStyle().Background(colors.BackgroundDim).Render(content) buf = append(buf, content...) buf = append(buf, '\n') // Redraw rest for i := selectedIndex - 1; i >= 0; i-- { - messageStyle := messageStyle extra := "" + messageStyle := messageStyle + backgroundStyle := BackgroundStyle if m.frequencyIndex != -1 && group[i].Ping != nil { + members := state.State.Members[*state.NetworkId(m.networkIndex)] switch *group[i].Ping { case packet.PingEveryone: extra = PingedEveryone - messageStyle = pingedMessageStyle.BorderForeground(colors.Purple) + messageStyle = pingedMessageStyle. + BorderForeground(colors.Purple). + Background(colors.MutedPurple) + backgroundStyle = backgroundStyle.Background(colors.MutedPurple) case packet.PingAdmins: extra = PingedAdmins if members[*state.UserID].IsAdmin { - messageStyle = pingedMessageStyle.BorderForeground(colors.Red) + messageStyle = pingedMessageStyle. + BorderForeground(colors.Red). + Background(colors.MutedRed) + backgroundStyle = backgroundStyle.Background(colors.MutedRed) } default: name := "@Unknown " @@ -1185,12 +1213,15 @@ func (m *Model) renderMessageGroup(group []data.Message, remaining *int, height } extra = PingedUserStyle.Render(name) if *group[i].Ping == *state.UserID { - messageStyle = pingedMessageStyle.BorderForeground(colors.Gold) + messageStyle = pingedMessageStyle. + BorderForeground(colors.Gold). + Background(colors.MutedGold) + backgroundStyle = backgroundStyle.Background(colors.MutedGold) } } } - rawContent := extra + group[i].Content + rawContent := extra + backgroundStyle.Render(group[i].Content) content := messageStyle.Render(rawContent) heights[i] = lipgloss.Height(content) if group[i].Edited { |
