export class SyncRoom {
	constructor(ownerSocket) {
		this.ownerSocket = ownerSocket
	}

	id = global.nanoid()

	buffer = new Set()
	members = new Set()

	push = async (data) => {
		if (this.buffer.size > 5) {
			this.buffer.delete(this.buffer.keys().next().value)
		}

		this.buffer.add(data)

		for (const socket of this.members) {
			socket.emit(`syncroom:push`, data)
		}
	}

	join = (socket) => {
		this.members.add(socket)

		// send the latest buffer
		socket.emit("syncroom.buffer", this.buffer[0])
	}

	leave = (socket) => {
		this.members.delete(socket)
	}
}

export default class SyncRoomManager {}