Skip to content

fix: クラスルーム — 生徒退出時にサーバー側メンバーを削除し座席を無色に戻す #455

@takaokouji

Description

@takaokouji

Summary

生徒が「退出する」をクリックした際、サーバー側のメンバーレコードを削除する。現在はクライアントのセッションをクリアするだけでサーバーに通知していないため、教師側の座席グリッドで退出した生徒が青いまま残る。

現状の問題

  1. 生徒が「退出する」→ handleLeaveClassroomdispatch(clearClassroomSession()) のみ
  2. サーバーの MembershipsTable にメンバーレコードが残る
  3. 教師の listMembers がまだこのメンバーを返す → 座席が青(参加済み)のまま

実装方針

Backend: sessionToken 認証でメンバー自己削除

DELETE /classrooms/{classroomId}/members/me — sessionToken で認証し、自分自身のメンバーレコードを削除。

  • sessionToken から classroomId + memberId を取得
  • URL の classroomId と一致することを確認
  • MembershipsTable から該当レコードを削除

Frontend: 退出時にサーバーに通知

handleLeaveClassroom で API 呼び出しを追加:

  1. classroomAPI.leaveClassroom(sessionToken, classroomId) を呼ぶ
  2. 成功したら clearClassroomSession() でローカルもクリア
  3. API エラーでもローカルセッションはクリア(ベストエフォート)

変更ファイル

  • infra/smalruby-classroom/lambda/handler.ts — DELETE /members/me ハンドラー
  • infra/smalruby-classroom/lib/classroom-stack.ts — ルート追加(既存 DELETE members/{memberId} を拡張)
  • packages/scratch-gui/src/lib/classroom-api.jsleaveClassroom() メソッド追加
  • packages/scratch-gui/src/containers/classroom-modal.jsx — サーバー通知追加

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions