export const SERVER_BUFFER = "*";

export const BufferType = {
	SERVER: "server",
	CHANNEL: "channel",
	NICK: "nick",
};

export const Status = {
	DISCONNECTED: "disconnected",
	CONNECTING: "connecting",
	REGISTERED: "registered",
};

export const Unread = {
	NONE: "",
	MESSAGE: "message",
	HIGHLIGHT: "highlight",

	union: (a, b) => {
		const priority = {
			[Unread.None]: 0,
			[Unread.MESSAGE]: 1,
			[Unread.HIGHLIGHT]: 2,
		};
		return (priority[a] > priority[b]) ? a : b;
	},
};

export function getNickURL(nick) {
	return "irc:///" + encodeURIComponent(nick) + ",isnick";
}

export function getBufferURL(buf) {
	switch (buf.type) {
	case BufferType.SERVER:
		return "irc:///";
	case BufferType.CHANNEL:
		return "irc:///" + encodeURIComponent(buf.name);
	case BufferType.NICK:
		return getNickURL(buf.name);
	}
	throw new Error("Unknown buffer type: " + buf.type);
}

export function getMessageURL(buf, msg) {
	var bufURL = getBufferURL(buf);
	if (msg.tags.msgid) {
		return bufURL + "#msgid=" + encodeURIComponent(msg.tags.msgid);
	} else {
		return bufURL + "#timestamp=" + encodeURIComponent(msg.tags.time);
	}
}