fix(guild): /guild/join returns guild_status per branch (APPLYING for approval path, JOINING otherwise)
GuildJoinTask.Parse() reads data[guild_status].ToInt() directly; hardcoding 2 for the APPROVAL path was wrong. GuildOpResult gains nullable GuildStatus; JoinAsync sets 1 (APPLYING) for the pending-request path and 2 (JOINING) for instant joins. Controller reads r.GuildStatus. Two new tests assert the wire value per path. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -248,9 +248,9 @@ public sealed class GuildController : SVSimController
|
||||
if (!TryGetViewerId(out var viewerId)) return Unauthorized();
|
||||
var r = await _guild.JoinAsync(viewerId, req.GuildId, ct);
|
||||
if (!r.IsOk) return WireError();
|
||||
// guild_status=2 (JOINING) on successful join; APPROVAL path also returns 2 as the viewer
|
||||
// is now "awaiting" — client drives the display from result_code, not guild_status alone.
|
||||
return new GuildJoinResponse { GuildStatus = 2 };
|
||||
// guild_status is branch-specific: JOINING (2) for instant joins, APPLYING (1) for approval path.
|
||||
// GuildJoinTask.Parse() reads this directly: GuildStatus = (eGUILD_STATUS)data["guild_status"].ToInt()
|
||||
return new GuildJoinResponse { GuildStatus = r.GuildStatus ?? 2 };
|
||||
}
|
||||
|
||||
[HttpPost("cancel_join_request")]
|
||||
|
||||
Reference in New Issue
Block a user