fix(social): robot blocks
CI / changes (pull_request) Successful in 3s
CI / unit (pull_request) Successful in 9s
CI / integration (pull_request) Successful in 17s
CI / ui (pull_request) Successful in 52s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m21s
CI / changes (pull_request) Successful in 3s
CI / unit (pull_request) Successful in 9s
CI / integration (pull_request) Successful in 17s
CI / ui (pull_request) Successful in 52s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m21s
Blocking an auto-match opponent who is secretly a pooled robot is recorded instead in a separate `robot_blocks` table. Now blocking behaves the same in that game (struck name, hidden composer) and lists the blocked opponent under the name you saw, but is recorded only against that game — the disguise holds, the shared robot is never globally blocked, and the matchmaker keeps pairing you with robots (so you can never block yourself out of opponents). - the shared robot account is never put in `blocks` - the matchmaker keeps it free and it is not blocked under its other per-game names - the blocked list and the in-game card still show it by joining that table; an unblock deletes the row
This commit is contained in:
+18
-2
@@ -504,9 +504,12 @@ table StatsView {
|
||||
}
|
||||
|
||||
// TargetRequest names a single counterpart account (friend request/cancel/unfriend,
|
||||
// block/unblock).
|
||||
// block/unblock). game_id is set only by an in-game block of a disguised-robot opponent,
|
||||
// so the backend can record the per-game robot block (the seat name the player saw)
|
||||
// against that game; every other path leaves it empty (FlatBuffers-optional).
|
||||
table TargetRequest {
|
||||
account_id:string;
|
||||
game_id:string;
|
||||
}
|
||||
|
||||
// FriendRespondRequest accepts or declines a pending request from a requester.
|
||||
@@ -548,9 +551,22 @@ table RedeemResult {
|
||||
friend:AccountRef;
|
||||
}
|
||||
|
||||
// BlockList is the accounts the caller has blocked.
|
||||
// RobotBlockRef is one blocked disguised-robot opponent: a per-game record (not a real
|
||||
// account) carrying the game name the player saw and the game/seat it was blocked in, so
|
||||
// the blocked list shows it as a distinct personality and the in-game card can re-mark
|
||||
// that seat. Its id is the robot_blocks row, used to unblock it.
|
||||
table RobotBlockRef {
|
||||
id:string;
|
||||
display_name:string;
|
||||
game_id:string;
|
||||
seat:int;
|
||||
}
|
||||
|
||||
// BlockList is the accounts the caller has blocked, plus the per-game disguised-robot
|
||||
// blocks (robots) which are not real accounts.
|
||||
table BlockList {
|
||||
blocked:[AccountRef];
|
||||
robots:[RobotBlockRef];
|
||||
}
|
||||
|
||||
// InvitationInvitee is one invitee's seat and response, name resolved.
|
||||
|
||||
Reference in New Issue
Block a user