summaryrefslogtreecommitdiff
path: root/internal/server/api
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2025-02-12 13:08:49 +0200
committerKyren223 <Kyren223@proton.me>2025-02-12 13:08:49 +0200
commit66983fb02847dc9b1c53916da0dc7ad5a09f6644 (patch)
tree897301226bcb87bf6a7d2b823e74abecabece680 /internal/server/api
parent976d3683f963b6f9282a534e1b4fec2411b738a2 (diff)
Added blocking/unblocking of users using b/u (user settings are now s
instead of "u")
Diffstat (limited to 'internal/server/api')
-rw-r--r--internal/server/api/api.go100
1 files changed, 83 insertions, 17 deletions
diff --git a/internal/server/api/api.go b/internal/server/api/api.go
index 0918b65..6b33ab8 100644
--- a/internal/server/api/api.go
+++ b/internal/server/api/api.go
@@ -1204,18 +1204,30 @@ func TrustUser(ctx context.Context, sess *session.Session, request *packet.Trust
RemovedTrustedUsers: nil,
}
}
- if err != nil && err != sql.ErrNoRows {
+ if err != sql.ErrNoRows {
log.Println("database error 1:", err)
return &ErrInternalError
}
+ _, err = queries.IsUserBlocked(ctx, data.IsUserBlockedParams{
+ BlockingUserID: sess.ID(),
+ BlockedUserID: user.ID,
+ })
+ if err == nil {
+ return &packet.Error{Error: "cannot trust blocked user, unblock them first"}
+ }
+ if err != sql.ErrNoRows {
+ log.Println("database error 2:", err)
+ return &ErrInternalError
+ }
+
err = queries.TrustUser(ctx, data.TrustUserParams{
TrustingUserID: sess.ID(),
TrustedUserID: user.ID,
TrustedPublicKey: user.PublicKey,
})
if err != nil {
- log.Println("database error 2:", err)
+ log.Println("database error 3:", err)
return &ErrInternalError
}
@@ -1230,7 +1242,7 @@ func TrustUser(ctx context.Context, sess *session.Session, request *packet.Trust
TrustedUserID: user.ID,
})
if err != nil {
- log.Println("database error 3:", err)
+ log.Println("database error 4:", err)
return &ErrInternalError
}
@@ -1417,41 +1429,87 @@ func BlockUser(ctx context.Context, sess *session.Session, request *packet.Block
})
if err == nil {
return &packet.BlockInfo{
- BlockedUsers: []snowflake.ID{user.ID},
- RemovedBlockedUsers: nil,
+ BlockedUsers: []snowflake.ID{user.ID},
+ RemovedBlockedUsers: nil,
+ BlockingUsers: nil,
+ RemovedBlockingUsers: nil,
}
}
- if err != nil && err != sql.ErrNoRows {
+ if err != sql.ErrNoRows {
log.Println("database error 1:", err)
return &ErrInternalError
}
+ err = queries.UntrustUser(ctx, data.UntrustUserParams{
+ TrustingUserID: sess.ID(),
+ TrustedUserID: user.ID,
+ })
+ if err != nil {
+ log.Println("database error 2:", err)
+ return &ErrInternalError
+ }
+
err = queries.BlockUser(ctx, data.BlockUserParams{
BlockingUserID: sess.ID(),
BlockedUserID: user.ID,
})
if err != nil {
- log.Println("database error 2:", err)
+ log.Println("database error 3:", err)
return &ErrInternalError
}
+ UserPropagate(ctx, sess, user.ID, &packet.BlockInfo{
+ BlockedUsers: nil,
+ RemovedBlockedUsers: nil,
+ BlockingUsers: []snowflake.ID{sess.ID()},
+ RemovedBlockingUsers: nil,
+ })
+
return &packet.BlockInfo{
- BlockedUsers: []snowflake.ID{user.ID},
- RemovedBlockedUsers: nil,
+ BlockedUsers: []snowflake.ID{user.ID},
+ RemovedBlockedUsers: nil,
+ BlockingUsers: nil,
+ RemovedBlockingUsers: nil,
}
} else {
- err = queries.UntrustUser(ctx, data.UntrustUserParams{
- TrustingUserID: sess.ID(),
- TrustedUserID: user.ID,
+ _, err := queries.IsUserBlocked(ctx, data.IsUserBlockedParams{
+ BlockingUserID: sess.ID(),
+ BlockedUserID: user.ID,
})
+ if err == sql.ErrNoRows {
+ return &packet.BlockInfo{
+ BlockedUsers: nil,
+ RemovedBlockedUsers: []snowflake.ID{user.ID},
+ BlockingUsers: nil,
+ RemovedBlockingUsers: nil,
+ }
+ }
if err != nil {
- log.Println("database error 3:", err)
+ log.Println("database error 4:", err)
return &ErrInternalError
}
+ err = queries.UnblockUser(ctx, data.UnblockUserParams{
+ BlockingUserID: sess.ID(),
+ BlockedUserID: user.ID,
+ })
+ if err != nil {
+ log.Println("database error 5:", err)
+ return &ErrInternalError
+ }
+
+ UserPropagate(ctx, sess, user.ID, &packet.BlockInfo{
+ BlockedUsers: nil,
+ RemovedBlockedUsers: nil,
+ BlockingUsers: nil,
+ RemovedBlockingUsers: []snowflake.ID{sess.ID()},
+ })
+
return &packet.BlockInfo{
- BlockedUsers: nil,
- RemovedBlockedUsers: []snowflake.ID{user.ID},
+ BlockedUsers: nil,
+ RemovedBlockedUsers: []snowflake.ID{user.ID},
+ BlockingUsers: nil,
+ RemovedBlockingUsers: nil,
}
}
}
@@ -1465,8 +1523,16 @@ func GetBlockedUsers(ctx context.Context, sess *session.Session) packet.Payload
return &ErrInternalError
}
+ blockingUsers, err := queries.GetBlockingUsers(ctx, sess.ID())
+ if err != nil && err != sql.ErrNoRows {
+ log.Println("database error 1:", err)
+ return &ErrInternalError
+ }
+
return &packet.BlockInfo{
- BlockedUsers: blockedUsers,
- RemovedBlockedUsers: nil,
+ BlockedUsers: blockedUsers,
+ RemovedBlockedUsers: nil,
+ BlockingUsers: blockingUsers,
+ RemovedBlockingUsers: nil,
}
}