Merge pull request #4683 from thelounge/chanProps

models/chan: don't force existence of constructor properties
This commit is contained in:
Max Leiter 2023-02-26 17:22:06 -08:00 committed by GitHub
commit 8fc696620f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -34,19 +34,18 @@ export type FilteredChannel = Chan & {
};
class Chan {
// TODO: don't force existence, figure out how to make TS infer it.
id!: number;
messages!: Msg[];
name!: string;
key!: string;
topic!: string;
firstUnread!: number;
unread!: number;
highlight!: number;
users!: Map<string, User>;
muted!: boolean;
type!: ChanType;
state!: ChanState;
id: number;
messages: Msg[];
name: string;
key: string;
topic: string;
firstUnread: number;
unread: number;
highlight: number;
users: Map<string, User>;
muted: boolean;
type: ChanType;
state: ChanState;
userAway?: boolean;
special?: SpecialChanType;
@ -56,20 +55,22 @@ class Chan {
static optionalProperties = ["userAway", "special", "data", "closed", "num_users"];
constructor(attr?: Partial<Chan>) {
_.defaults(this, attr, {
id: 0,
messages: [],
name: "",
key: "",
topic: "",
type: ChanType.CHANNEL,
state: ChanState.PARTED,
firstUnread: 0,
unread: 0,
highlight: 0,
users: new Map(),
muted: false,
});
this.id = 0;
this.messages = [];
this.name = "";
this.key = "";
this.topic = "";
this.type = ChanType.CHANNEL;
this.state = ChanState.PARTED;
this.firstUnread = 0;
this.unread = 0;
this.highlight = 0;
this.users = new Map();
this.muted = false;
if (attr) {
Object.assign(this, attr);
}
}
destroy() {