mirror of
https://github.com/Kyren223/eko.git
synced 2025-09-05 21:18:14 +00:00
Added a way to block/unblock users client-side
This commit is contained in:
@@ -519,7 +519,21 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
|
||||
}
|
||||
|
||||
if m.receiverIndex != -1 {
|
||||
// TODO: unlock user
|
||||
userId := state.Data.Signals[m.receiverIndex]
|
||||
|
||||
if userId == *state.UserID {
|
||||
return m, nil
|
||||
}
|
||||
|
||||
if _, ok := state.State.BlockedUsers[userId]; !ok {
|
||||
return m, nil
|
||||
}
|
||||
|
||||
return m, gateway.Send(&packet.BlockUser{
|
||||
User: userId,
|
||||
Block: false,
|
||||
})
|
||||
|
||||
} else {
|
||||
networkId := state.NetworkId(m.networkIndex)
|
||||
network := state.State.Networks[*networkId]
|
||||
@@ -558,7 +572,21 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
|
||||
return m, nil
|
||||
}
|
||||
if m.receiverIndex != -1 {
|
||||
// TODO: block user
|
||||
userId := state.Data.Signals[m.receiverIndex]
|
||||
|
||||
if userId == *state.UserID {
|
||||
return m, nil
|
||||
}
|
||||
|
||||
if _, ok := state.State.BlockedUsers[userId]; ok {
|
||||
return m, nil
|
||||
}
|
||||
|
||||
return m, gateway.Send(&packet.BlockUser{
|
||||
User: userId,
|
||||
Block: true,
|
||||
})
|
||||
|
||||
} else {
|
||||
networkId := state.NetworkId(m.networkIndex)
|
||||
network := state.State.Networks[*networkId]
|
||||
|
@@ -329,6 +329,9 @@ func (m *Model) updateConnected(message tea.Msg) tea.Cmd {
|
||||
case *packet.TrustInfo:
|
||||
state.UpdateTrustedUsers(msg)
|
||||
|
||||
case *packet.BlockInfo:
|
||||
state.UpdateBlockedUsers(msg)
|
||||
|
||||
case *packet.NotificationsInfo:
|
||||
signals := state.UpdateNotifications(msg)
|
||||
if m.networkList.Index() == networklist.SignalsIndex {
|
||||
|
@@ -32,6 +32,7 @@ type state struct {
|
||||
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
|
||||
BlockedUsers map[snowflake.ID]struct{} // 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
|
||||
@@ -46,8 +47,9 @@ var State state = state{
|
||||
Members: map[snowflake.ID]map[snowflake.ID]data.Member{},
|
||||
Users: map[snowflake.ID]data.User{},
|
||||
TrustedUsers: map[snowflake.ID]ed25519.PublicKey{},
|
||||
Notifications: map[snowflake.ID]int{},
|
||||
BlockedUsers: map[snowflake.ID]struct{}{},
|
||||
LastReadMessages: map[snowflake.ID]*snowflake.ID{},
|
||||
Notifications: map[snowflake.ID]int{},
|
||||
}
|
||||
|
||||
type UserData struct {
|
||||
@@ -337,3 +339,13 @@ func SendFinalData() {
|
||||
case <-ch2:
|
||||
}
|
||||
}
|
||||
|
||||
func UpdateBlockedUsers(info *packet.BlockInfo) {
|
||||
for _, removed := range info.RemovedBlockedUsers {
|
||||
delete(State.BlockedUsers, removed)
|
||||
}
|
||||
|
||||
for _, trusted := range info.BlockedUsers {
|
||||
State.BlockedUsers[trusted] = struct{}{}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user