summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/client/ui/core/banlist/banlist.go2
-rw-r--r--internal/client/ui/core/chat/chat.go8
-rw-r--r--internal/client/ui/core/memberlist/memberlist.go4
-rw-r--r--internal/client/ui/core/signallist/signallist.go4
-rw-r--r--internal/client/ui/core/state/state.go22
-rw-r--r--internal/packet/packet.go8
-rw-r--r--internal/packet/types.go24
-rw-r--r--internal/server/api/api.go20
-rw-r--r--query/trusted_and_blocked_users.sql15
9 files changed, 73 insertions, 34 deletions
diff --git a/internal/client/ui/core/banlist/banlist.go b/internal/client/ui/core/banlist/banlist.go
index 4924f40..286d453 100644
--- a/internal/client/ui/core/banlist/banlist.go
+++ b/internal/client/ui/core/banlist/banlist.go
@@ -82,7 +82,7 @@ func (m Model) View() string {
}
user := state.State.Users[member.UserID]
- trustedPublicKey, isTrusted := state.State.Trusteds[user.ID]
+ trustedPublicKey, isTrusted := state.State.TrustedUsers[user.ID]
keysMatch := bytes.Equal(trustedPublicKey, user.PublicKey)
var userStyle lipgloss.Style
diff --git a/internal/client/ui/core/chat/chat.go b/internal/client/ui/core/chat/chat.go
index 8b1f4fe..09b3872 100644
--- a/internal/client/ui/core/chat/chat.go
+++ b/internal/client/ui/core/chat/chat.go
@@ -439,7 +439,7 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
return m, nil
}
- _, isTrusting := state.State.Trusteds[senderId]
+ _, isTrusting := state.State.TrustedUsers[senderId]
return m, gateway.Send(&packet.TrustUser{
User: senderId,
@@ -1339,7 +1339,7 @@ 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]
+ trustedPublicKey, isTrusted := state.State.TrustedUsers[user.ID]
keysMatch := bytes.Equal(trustedPublicKey, user.PublicKey)
if isTrusted && !keysMatch {
@@ -1374,7 +1374,7 @@ func (m *Model) renderHeader(message data.Message, selected bool) []byte {
} else if m.receiverIndex != -1 {
user := state.State.Users[message.SenderID]
- trustedPublicKey, isTrusted := state.State.Trusteds[user.ID]
+ trustedPublicKey, isTrusted := state.State.TrustedUsers[user.ID]
keysMatch := bytes.Equal(trustedPublicKey, user.PublicKey)
if isTrusted && !keysMatch {
@@ -1505,7 +1505,7 @@ func (m *Model) renderFrequencyName() string {
} else if m.receiverIndex != -1 {
signal := state.Data.Signals[m.receiverIndex]
user := state.State.Users[signal]
- trustedPublicKey, isTrusted := state.State.Trusteds[user.ID]
+ trustedPublicKey, isTrusted := state.State.TrustedUsers[user.ID]
keysMatch := bytes.Equal(trustedPublicKey, user.PublicKey)
color = colors.Purple
diff --git a/internal/client/ui/core/memberlist/memberlist.go b/internal/client/ui/core/memberlist/memberlist.go
index 1ed8c5e..1978e29 100644
--- a/internal/client/ui/core/memberlist/memberlist.go
+++ b/internal/client/ui/core/memberlist/memberlist.go
@@ -92,7 +92,7 @@ func (m Model) View() string {
}
user := state.State.Users[member.UserID]
- trustedPublicKey, isTrusted := state.State.Trusteds[user.ID]
+ trustedPublicKey, isTrusted := state.State.TrustedUsers[user.ID]
keysMatch := bytes.Equal(trustedPublicKey, user.PublicKey)
var userStyle lipgloss.Style
@@ -210,7 +210,7 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
return m, nil
}
- _, isTrusting := state.State.Trusteds[member.UserID]
+ _, isTrusting := state.State.TrustedUsers[member.UserID]
return m, gateway.Send(&packet.TrustUser{
User: member.UserID,
diff --git a/internal/client/ui/core/signallist/signallist.go b/internal/client/ui/core/signallist/signallist.go
index 410cb6b..075f0f8 100644
--- a/internal/client/ui/core/signallist/signallist.go
+++ b/internal/client/ui/core/signallist/signallist.go
@@ -73,7 +73,7 @@ func (m Model) View() string {
maxUserWidth := maxUserWidth
user := state.State.Users[signal]
- trustedPublicKey, isTrusted := state.State.Trusteds[user.ID]
+ trustedPublicKey, isTrusted := state.State.TrustedUsers[user.ID]
keysMatch := bytes.Equal(trustedPublicKey, user.PublicKey)
var userStyle lipgloss.Style
@@ -191,7 +191,7 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
}
userId := state.Data.Signals[m.index]
- _, isTrusting := state.State.Trusteds[userId]
+ _, isTrusting := state.State.TrustedUsers[userId]
return m, gateway.Send(&packet.TrustUser{
User: userId,
diff --git a/internal/client/ui/core/state/state.go b/internal/client/ui/core/state/state.go
index 8c6dfeb..514d118 100644
--- a/internal/client/ui/core/state/state.go
+++ b/internal/client/ui/core/state/state.go
@@ -26,12 +26,12 @@ type state struct {
ChatState map[snowflake.ID]ChatState // key is frequency id or receiver id
LastFrequency map[snowflake.ID]snowflake.ID // key is network id
- Messages map[snowflake.ID]*btree.BTreeG[data.Message] // key is frequency id or receiver id
- Networks map[snowflake.ID]data.Network // key is network id
- Frequencies map[snowflake.ID][]data.Frequency // key is network id
- Members map[snowflake.ID]map[snowflake.ID]data.Member // key is network id then user id
- Users map[snowflake.ID]data.User // key is user id
- Trusteds map[snowflake.ID]ed25519.PublicKey // key is user id
+ Messages map[snowflake.ID]*btree.BTreeG[data.Message] // key is frequency id or receiver id
+ Networks map[snowflake.ID]data.Network // key is network id
+ Frequencies map[snowflake.ID][]data.Frequency // key is network id
+ Members map[snowflake.ID]map[snowflake.ID]data.Member // key is network id then user id
+ Users map[snowflake.ID]data.User // key is user id
+ TrustedUsers map[snowflake.ID]ed25519.PublicKey // key is user id
LastReadMessages map[snowflake.ID]*snowflake.ID // key is frequency id or receiver id
Notifications map[snowflake.ID]int // key is frequency id or receiver id
@@ -45,7 +45,7 @@ var State state = state{
Frequencies: map[snowflake.ID][]data.Frequency{},
Members: map[snowflake.ID]map[snowflake.ID]data.Member{},
Users: map[snowflake.ID]data.User{},
- Trusteds: map[snowflake.ID]ed25519.PublicKey{},
+ TrustedUsers: map[snowflake.ID]ed25519.PublicKey{},
Notifications: map[snowflake.ID]int{},
LastReadMessages: map[snowflake.ID]*snowflake.ID{},
}
@@ -232,12 +232,12 @@ func FromJsonUserData(s string) {
}
func UpdateTrusteds(info *packet.TrustInfo) {
- for _, removed := range info.RemovedTrusteds {
- delete(State.Trusteds, removed)
+ for _, removed := range info.RemovedTrustedUsers {
+ delete(State.TrustedUsers, removed)
}
- for i, trusted := range info.Trusteds {
- State.Trusteds[trusted] = info.TrustedPublicKeys[i]
+ for i, trusted := range info.TrustedUsers {
+ State.TrustedUsers[trusted] = info.TrustedPublicKeys[i]
}
}
diff --git a/internal/packet/packet.go b/internal/packet/packet.go
index c8a8e64..e94086b 100644
--- a/internal/packet/packet.go
+++ b/internal/packet/packet.go
@@ -83,6 +83,9 @@ const (
PacketSetLastReadMessages
PacketNotificationsInfo
+ PacketBlockUser
+ PacketBlockInfo
+
PacketMax
)
@@ -253,6 +256,11 @@ func (p Packet) DecodedPayload() (Payload, error) {
case PacketNotificationsInfo:
payload = &NotificationsInfo{}
+ case PacketBlockUser:
+ payload = &BlockUser{}
+ case PacketBlockInfo:
+ payload = &BlockInfo{}
+
default:
assert.Never("unexpected packet.PacketType", "type", p.Type())
}
diff --git a/internal/packet/types.go b/internal/packet/types.go
index 67759e7..782e5bb 100644
--- a/internal/packet/types.go
+++ b/internal/packet/types.go
@@ -217,9 +217,9 @@ func (m *TrustUser) Type() PacketType {
}
type TrustInfo struct {
- Trusteds []snowflake.ID
- TrustedPublicKeys []ed25519.PublicKey
- RemovedTrusteds []snowflake.ID
+ TrustedUsers []snowflake.ID
+ TrustedPublicKeys []ed25519.PublicKey
+ RemovedTrustedUsers []snowflake.ID
}
func (m *TrustInfo) Type() PacketType {
@@ -252,3 +252,21 @@ type NotificationsInfo struct {
func (m *NotificationsInfo) Type() PacketType {
return PacketNotificationsInfo
}
+
+type BlockUser struct {
+ User snowflake.ID
+ Block bool
+}
+
+func (m *BlockUser) Type() PacketType {
+ return PacketBlockUser
+}
+
+type BlockInfo struct {
+ BlockedUsers []snowflake.ID
+ RemovedBlockedUsers []snowflake.ID
+}
+
+func (m *BlockInfo) Type() PacketType {
+ return PacketBlockInfo
+}
diff --git a/internal/server/api/api.go b/internal/server/api/api.go
index 38d3b47..4118b22 100644
--- a/internal/server/api/api.go
+++ b/internal/server/api/api.go
@@ -1170,9 +1170,9 @@ func TrustUser(ctx context.Context, sess *session.Session, request *packet.Trust
})
if err == nil {
return &packet.TrustInfo{
- Trusteds: []snowflake.ID{user.ID},
+ TrustedUsers: []snowflake.ID{user.ID},
TrustedPublicKeys: []ed25519.PublicKey{publicKey},
- RemovedTrusteds: nil,
+ RemovedTrustedUsers: nil,
}
}
if err != nil && err != sql.ErrNoRows {
@@ -1191,9 +1191,9 @@ func TrustUser(ctx context.Context, sess *session.Session, request *packet.Trust
}
return &packet.TrustInfo{
- Trusteds: []snowflake.ID{user.ID},
+ TrustedUsers: []snowflake.ID{user.ID},
TrustedPublicKeys: []ed25519.PublicKey{user.PublicKey},
- RemovedTrusteds: nil,
+ RemovedTrustedUsers: nil,
}
} else {
err = queries.UntrustUser(ctx, data.UntrustUserParams{
@@ -1202,9 +1202,9 @@ func TrustUser(ctx context.Context, sess *session.Session, request *packet.Trust
})
if err == sql.ErrNoRows {
return &packet.TrustInfo{
- Trusteds: nil,
+ TrustedUsers: nil,
TrustedPublicKeys: nil,
- RemovedTrusteds: []snowflake.ID{user.ID},
+ RemovedTrustedUsers: []snowflake.ID{user.ID},
}
}
if err != nil {
@@ -1213,9 +1213,9 @@ func TrustUser(ctx context.Context, sess *session.Session, request *packet.Trust
}
return &packet.TrustInfo{
- Trusteds: nil,
+ TrustedUsers: nil,
TrustedPublicKeys: nil,
- RemovedTrusteds: []snowflake.ID{user.ID},
+ RemovedTrustedUsers: []snowflake.ID{user.ID},
}
}
}
@@ -1238,9 +1238,9 @@ func GetUserTrusteds(ctx context.Context, sess *session.Session) packet.Payload
}
return &packet.TrustInfo{
- Trusteds: trusteds,
+ TrustedUsers: trusteds,
TrustedPublicKeys: trustedPublicKeys,
- RemovedTrusteds: nil,
+ RemovedTrustedUsers: nil,
}
}
diff --git a/query/trusted_and_blocked_users.sql b/query/trusted_and_blocked_users.sql
index f91e616..a06cd55 100644
--- a/query/trusted_and_blocked_users.sql
+++ b/query/trusted_and_blocked_users.sql
@@ -1,4 +1,4 @@
--- name: GetUserTrusteds :many
+-- name: GetTrustedUsers :many
SELECT trusted_user_id, trusted_public_key FROM trusted_users
WHERE trusting_user_id = ?;
@@ -14,3 +14,16 @@ INSERT OR IGNORE INTO trusted_users (
-- name: UntrustUser :exec
DELETE FROM trusted_users
WHERE trusting_user_id = ? AND trusted_user_id = ?;
+
+-- name: GetBlockedUsers :many
+SELECT blocked_user_id FROM blocked_users
+WHERE blocking_user_id = ?;
+
+-- name: BlockUser :exec
+INSERT OR IGNORE INTO blocked_users (
+ blocking_user_id, blocking_user_id
+) VALUES (?, ?);
+
+-- name: UnblockUser :exec
+DELETE FROM blocked_users
+WHERE blocking_user_id = ? AND blocked_user_id = ?;