From 72945c9a284b6858594f1e8a43743c397e90c380 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sun, 18 Mar 2018 21:24:03 +0200 Subject: Organize files --- interface/gomuks.go | 35 ++++++++++++++++++++++++++++++++++ interface/matrix.go | 40 +++++++++++++++++++++++++++++++++++++++ interface/ui.go | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 interface/gomuks.go create mode 100644 interface/matrix.go create mode 100644 interface/ui.go (limited to 'interface') diff --git a/interface/gomuks.go b/interface/gomuks.go new file mode 100644 index 0000000..b90aa88 --- /dev/null +++ b/interface/gomuks.go @@ -0,0 +1,35 @@ +// gomuks - A terminal Matrix client written in Go. +// Copyright (C) 2018 Tulir Asokan +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package ifc + +import ( + "maunium.net/go/gomatrix" + "maunium.net/go/gomuks/config" + "maunium.net/go/tview" +) + +type Gomuks interface { + Matrix() *gomatrix.Client + MatrixContainer() MatrixContainer + App() *tview.Application + UI() GomuksUI + Config() *config.Config + + Start() + Stop() + Recover() +} diff --git a/interface/matrix.go b/interface/matrix.go new file mode 100644 index 0000000..4c30b5e --- /dev/null +++ b/interface/matrix.go @@ -0,0 +1,40 @@ +// gomuks - A terminal Matrix client written in Go. +// Copyright (C) 2018 Tulir Asokan +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package ifc + +import ( + "maunium.net/go/gomatrix" + "maunium.net/go/gomuks/matrix/room" +) + +type MatrixContainer interface { + Client() *gomatrix.Client + InitClient() error + Initialized() bool + Login(user, password string) error + Start() + Stop() + // HandleMessage(evt *gomatrix.Event) + // HandleMembership(evt *gomatrix.Event) + // HandleTyping(evt *gomatrix.Event) + SendMessage(roomID, message string) + SendTyping(roomID string, typing bool) + JoinRoom(roomID string) error + LeaveRoom(roomID string) error + GetHistory(roomID, prevBatch string, limit int) ([]gomatrix.Event, string, error) + GetRoom(roomID string) *room.Room +} diff --git a/interface/ui.go b/interface/ui.go new file mode 100644 index 0000000..406aa2f --- /dev/null +++ b/interface/ui.go @@ -0,0 +1,54 @@ +// gomuks - A terminal Matrix client written in Go. +// Copyright (C) 2018 Tulir Asokan +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package ifc + +import ( + "maunium.net/go/gomatrix" + "maunium.net/go/gomuks/ui/types" + "maunium.net/go/gomuks/ui/widget" + "maunium.net/go/tview" +) + +type View string + +// Allowed views in GomuksUI +const ( + ViewLogin View = "login" + ViewMain View = "main" +) + +type GomuksUI interface { + Render() + SetView(name View) + InitViews() tview.Primitive + MainView() MainView +} + +type MainView interface { + InputTabComplete(text string, cursorOffset int) string + GetRoom(roomID string) *widget.RoomView + HasRoom(roomID string) bool + AddRoom(roomID string) + RemoveRoom(roomID string) + SetRooms(roomIDs []string) + + SetTyping(roomID string, users []string) + AddServiceMessage(roomID string, message string) + GetHistory(room string) + ProcessMessageEvent(evt *gomatrix.Event) (*widget.RoomView, *types.Message) + ProcessMembershipEvent(evt *gomatrix.Event, new bool) (*widget.RoomView, *types.Message) +} -- cgit v1.2.3