46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
import { Channel, IChannel } from "./channel";
|
|
|
|
export interface IChannelList {
|
|
channels: IChannel[]
|
|
}
|
|
|
|
export class ChannelList implements IChannelList {
|
|
channels: Channel[] = [];
|
|
|
|
constructor(channels?: IChannelList) {
|
|
this.channels = channels?.channels?.map((chan) => new Channel(chan)) || [];
|
|
}
|
|
|
|
public addChannel(channel: Channel): void {
|
|
this.channels.push(channel);
|
|
}
|
|
|
|
public removeChannel(channelId: number): void {
|
|
this.channels = this.channels.filter(channel => channel.id !== channelId);
|
|
}
|
|
|
|
public getChannel(channelId: number): Channel|undefined {
|
|
return this.channels.find(channel => channel.id === channelId);
|
|
}
|
|
|
|
public getChannelByName(channelName: string): IChannel|undefined {
|
|
return this.channels.find(channel => channel.name === channelName);
|
|
}
|
|
|
|
public getChannels(): Channel[] {
|
|
return this.channels;
|
|
}
|
|
|
|
public getChannelIds(): number[] {
|
|
return this.channels.map(channel => channel.id);
|
|
}
|
|
|
|
public getChannelNames(): string[] {
|
|
return this.channels.map(channel => channel.name);
|
|
}
|
|
|
|
public getChannelId(channelName: string): number|undefined {
|
|
const channel = this.getChannelByName(channelName);
|
|
return channel ? channel.id : undefined;
|
|
}
|
|
} |