diff options
| author | Kyren223 <Kyren223@proton.me> | 2025-02-12 13:08:49 +0200 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2025-02-12 13:08:49 +0200 |
| commit | 66983fb02847dc9b1c53916da0dc7ad5a09f6644 (patch) | |
| tree | 897301226bcb87bf6a7d2b823e74abecabece680 /internal/server | |
| parent | 976d3683f963b6f9282a534e1b4fec2411b738a2 (diff) | |
Added blocking/unblocking of users using b/u (user settings are now s
instead of "u")
Diffstat (limited to 'internal/server')
| -rw-r--r-- | internal/server/api/api.go | 100 |
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, } } |
