🏡 index : cold-air-networks/mirror-jetstream.git

import { makeObservable, observable, action } from 'mobx';

export class Person {
    id;
    name;
    lastMessage = null;
    rooms = new Set();
    status = 'Online';
    
    constructor(id, name) {
        makeObservable(this, {
            name: observable,
            lastMessage: observable,
            rooms: observable,
            status: observable,
            setName: action,
            setLastMessage: action,
            addRoom: action,
            removeRoom: action,
            setStatus: action,
        });
        this.id = id;
        this.name = name;
    }

    setName(name) {
        this.name = name;
    }

    setLastMessage(message) {
        this.lastMessage = message;
    }

    addRoom(room) {
        this.rooms.add(room);
    }

    removeRoom(room) {
        this.rooms.delete(room);
    }

    setStatus(status) {
        this.status = status;
        this.rooms.forEach(room => {
            room.addStatusUpdate(this, status);
        });
    }
}