summaryrefslogtreecommitdiff
path: root/internal/client/ui/core/chat/chat.go
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2025-01-22 17:23:18 +0200
committerKyren223 <Kyren223@proton.me>2025-01-22 17:23:18 +0200
commita6ea05146050a8b2ae5963d4ea96434dc3005f37 (patch)
tree09128a6f90a0aae8159e0575e11562409f525a1d /internal/client/ui/core/chat/chat.go
parent645247f4ef489c9084a7d8d30db89b083287f0c6 (diff)
Added the ability to trust/untrust users
Diffstat (limited to 'internal/client/ui/core/chat/chat.go')
-rw-r--r--internal/client/ui/core/chat/chat.go48
1 files changed, 41 insertions, 7 deletions
diff --git a/internal/client/ui/core/chat/chat.go b/internal/client/ui/core/chat/chat.go
index d1c9671..3b30c1b 100644
--- a/internal/client/ui/core/chat/chat.go
+++ b/internal/client/ui/core/chat/chat.go
@@ -1,6 +1,7 @@
package chat
import (
+ "bytes"
"log"
"strconv"
"strings"
@@ -330,6 +331,23 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
m.style = editStyle
}
+ case "T":
+ if m.selectedMessage == nil {
+ return m, nil
+ }
+ senderId := m.selectedMessage.SenderID
+
+ if senderId == *state.UserID {
+ return m, nil
+ }
+
+ _, isTrusting := state.State.Trusteds[senderId]
+
+ return m, gateway.Send(&packet.TrustUser{
+ User: senderId,
+ Trust: !isTrusting,
+ })
+
// Admin
case "K":
if m.selectedMessage == nil {
@@ -492,8 +510,6 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
Network: *state.NetworkId(m.networkIndex),
User: member.UserID,
})
- case "T":
- // TODO: transfer ownership
}
}
@@ -936,12 +952,30 @@ func (m *Model) renderHeader(message data.Message, selected bool) []byte {
members := state.State.Members[*networkId]
member := members[message.SenderID]
user := state.State.Users[message.SenderID]
+ trustedPublicKey, isTrusted := state.State.Trusteds[user.ID]
+ keysMatch := bytes.Equal(trustedPublicKey, user.PublicKey)
- senderStyle := ui.NormalMemberStyle
- if ownerId == member.UserID {
- senderStyle = ui.OwnerMemberStyle
- } else if member.IsAdmin {
- senderStyle = ui.AdminMemberStyle
+ if isTrusted && !keysMatch {
+ buf = append(buf, ui.UntrustedSymbol...)
+ }
+
+ senderStyle := lipgloss.NewStyle()
+ if isTrusted && keysMatch {
+ if ownerId == member.UserID {
+ senderStyle = ui.TrustedOwnerMemberStyle
+ } else if member.IsAdmin {
+ senderStyle = ui.TrustedAdminMemberStyle
+ } else {
+ senderStyle = ui.TrustedNormalMemberStyle
+ }
+ } else {
+ if ownerId == member.UserID {
+ senderStyle = ui.OwnerMemberStyle
+ } else if member.IsAdmin {
+ senderStyle = ui.AdminMemberStyle
+ } else {
+ senderStyle = ui.NormalMemberStyle
+ }
}
sender := senderStyle.Render(user.Name)