package store type MessageOrigin int var messageStore *MessageStore const ( MessageOriginOwncast MessageOrigin = iota MessageOriginTwitch MessageOriginTest ) type MessageStore struct { messages []MessageInterface } func (s *MessageStore) Add(msg MessageInterface) { s.messages = append(s.messages, msg) } func (s *MessageStore) All() []MessageInterface { return s.messages } func (s *MessageStore) Clear() { s.messages = []MessageInterface{} } func GetMessageStore() *MessageStore { if messageStore == nil { messageStore = new(MessageStore) } return messageStore } type MessageInterface interface { ID() string Visible() bool Origin() MessageOrigin Author() string Content() string }