The template's A seat given a new token loses its address note: whoever used it before has no claim on it by address, and the next use from the new device is noted afresh
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CCLa2PaEeCj8njQZSWGqHx
This commit is contained in:
1 parent
979891bdcb
commit
ae8a0403b1
2 files changed
+9
-2
No files matched your search
@@ -378,8 +378,13 @@ describe('a seat a browser lost', () => {
|
|||||||
rooms.seen(room, bo, 'home');
|
rooms.seen(room, bo, 'home');
|
||||||
const other = rooms.create('Bo', 3);
|
const other = rooms.create('Bo', 3);
|
||||||
rooms.seen(other.room, other.token, 'home');
|
rooms.seen(other.room, other.token, 'home');
|
||||||
expect(rooms.findSeats('Bo', 'home', other.room.id).seated.map((s) => s.roomId)).toEqual([other.room.id]);
|
const first = rooms.findSeats('Bo', 'home', other.room.id).seated;
|
||||||
expect(rooms.findSeats('Bo', 'home').seated.map((s) => s.roomId).sort()).toEqual([other.room.id, room.id].sort());
|
expect(first.map((s) => s.roomId)).toEqual([other.room.id]);
|
||||||
|
// A seat given back is noted afresh from its next use; until then its old address claims nothing.
|
||||||
|
const second = rooms.findSeats('Bo', 'home').seated;
|
||||||
|
expect(second.map((s) => s.roomId)).toEqual([room.id]);
|
||||||
|
rooms.seen(other.room, first[0].token, 'home');
|
||||||
|
rooms.seen(room, second[0].token, 'home');
|
||||||
room.over = true;
|
room.over = true;
|
||||||
expect(rooms.findSeats('Bo', 'home').seated.map((s) => s.roomId)).toEqual([other.room.id]);
|
expect(rooms.findSeats('Bo', 'home').seated.map((s) => s.roomId)).toEqual([other.room.id]);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -797,6 +797,8 @@ export class Rooms<State, Input> {
|
|||||||
const seat = room.seats.find((s) => s.id === line.id);
|
const seat = room.seats.find((s) => s.id === line.id);
|
||||||
if (!seat) break;
|
if (!seat) break;
|
||||||
seat.tokenHash = line.tokenHash;
|
seat.tokenHash = line.tokenHash;
|
||||||
|
// Whoever used the seat before has no claim on it by address now: the next use from the new device is noted afresh.
|
||||||
|
delete seat.addr;
|
||||||
seat.bot = false;
|
seat.bot = false;
|
||||||
delete seat.standIn;
|
delete seat.standIn;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in new issue
Block a user