62 lines
1.2 KiB
TypeScript
62 lines
1.2 KiB
TypeScript
import { INicklistNick } from '@icynet/irclib';
|
|
import { IRCConnectionWrapper } from './irc-manager';
|
|
|
|
export type MessageType =
|
|
| 'info'
|
|
| 'mode'
|
|
| 'notice'
|
|
| 'privmsg'
|
|
| 'join'
|
|
| 'leave';
|
|
export type BufferType = 'server' | 'channel' | 'user';
|
|
|
|
export interface ParsedIRCLine {
|
|
time: Date;
|
|
sender: string;
|
|
message: string;
|
|
type: MessageType;
|
|
highlight?: boolean;
|
|
}
|
|
|
|
export enum BufferActionKind {
|
|
AddServerBuffer = 'add-server-buffer',
|
|
AddBuffer = 'add-buffer',
|
|
AddBufferLine = 'add-buffer-line',
|
|
SetActiveBuffer = 'set-active-buffer',
|
|
SetTopic = 'set-topic',
|
|
UpdateNicklist = 'update-nicklist',
|
|
}
|
|
|
|
export interface BufferActionTarget {
|
|
type?: BufferType;
|
|
name?: string;
|
|
}
|
|
|
|
export interface BufferActionPayload {
|
|
connection?: IRCConnectionWrapper;
|
|
toBuffer?: BufferActionTarget;
|
|
message?: ParsedIRCLine;
|
|
channels?: string[];
|
|
topic?: string;
|
|
activeIndex?: number;
|
|
}
|
|
|
|
export interface BufferAction {
|
|
type: BufferActionKind;
|
|
payload: BufferActionPayload;
|
|
}
|
|
|
|
export interface MessageBuffer {
|
|
type: BufferType;
|
|
name: string;
|
|
lines: ParsedIRCLine[];
|
|
nicks?: INicklistNick[];
|
|
topic?: string;
|
|
connection: IRCConnectionWrapper;
|
|
}
|
|
|
|
export interface BufferState {
|
|
buffers: MessageBuffer[];
|
|
activeIndex: number;
|
|
}
|