This commit is contained in:
Tulir Asokan 2018-05-22 17:24:47 +03:00
parent cce79ab7d8
commit cc28c7b65f
13 changed files with 63 additions and 64 deletions

View File

@ -21,13 +21,13 @@ import (
"os"
"path/filepath"
"gopkg.in/yaml.v2"
"maunium.net/go/gomuks/debug"
"maunium.net/go/gomuks/matrix/rooms"
"maunium.net/go/gomuks/matrix/pushrules"
"encoding/json"
"strings"
"gopkg.in/yaml.v2"
"maunium.net/go/gomatrix"
"maunium.net/go/gomuks/debug"
"maunium.net/go/gomuks/matrix/pushrules"
"maunium.net/go/gomuks/matrix/rooms"
"strings"
)
// Config contains the main config of gomuks.
@ -261,7 +261,7 @@ func (config *Config) SaveRooms() {
if config.nosave {
return
}
os.MkdirAll(config.StateDir, 0700)
for _, room := range config.Rooms {
path := config.getRoomCachePath(room)

View File

@ -337,7 +337,7 @@ func (c *Container) HandleReadReceipt(source EventSource, evt *gomatrix.Event) {
c.ui.Render()
}
func (c *Container) parseDirectChatInfo(evt *gomatrix.Event) (map[*rooms.Room]bool){
func (c *Container) parseDirectChatInfo(evt *gomatrix.Event) map[*rooms.Room]bool {
directChats := make(map[*rooms.Room]bool)
for _, rawRoomIDList := range evt.Content {
roomIDList, ok := rawRoomIDList.([]interface{})

View File

@ -17,16 +17,16 @@
package matrix
import (
"testing"
"maunium.net/go/gomuks/config"
"github.com/stretchr/testify/assert"
"net/http"
"maunium.net/go/gomatrix"
"strings"
"fmt"
"io/ioutil"
"encoding/json"
"fmt"
"github.com/stretchr/testify/assert"
"io/ioutil"
"maunium.net/go/gomatrix"
"maunium.net/go/gomuks/config"
"net/http"
"os"
"strings"
"testing"
)
func TestContainer_InitClient_Empty(t *testing.T) {

View File

@ -21,8 +21,8 @@ import (
"strconv"
"strings"
"maunium.net/go/gomuks/lib/glob"
"maunium.net/go/gomatrix"
"maunium.net/go/gomuks/lib/glob"
"maunium.net/go/gomuks/matrix/rooms"
)

View File

@ -17,9 +17,9 @@
package pushrules
import (
"maunium.net/go/gomuks/lib/glob"
"maunium.net/go/gomatrix"
"encoding/gob"
"maunium.net/go/gomatrix"
"maunium.net/go/gomuks/lib/glob"
)
func init() {

View File

@ -17,9 +17,9 @@
package pushrules_test
import (
"testing"
"maunium.net/go/gomuks/matrix/pushrules"
"github.com/stretchr/testify/assert"
"maunium.net/go/gomuks/matrix/pushrules"
"testing"
)
func TestPushRuleArray_GetActions_FirstMatchReturns(t *testing.T) {

View File

@ -17,17 +17,17 @@
package pushrules_test
import (
"testing"
"github.com/stretchr/testify/assert"
"maunium.net/go/gomuks/matrix/pushrules"
"testing"
)
func TestPushRule_Match_Conditions(t *testing.T) {
cond1 := newMatchPushCondition("content.msgtype", "m.emote")
cond2 := newMatchPushCondition("content.body", "*pushrules")
rule := &pushrules.PushRule{
Type: pushrules.OverrideRule,
Enabled: true,
Type: pushrules.OverrideRule,
Enabled: true,
Conditions: []*pushrules.PushCondition{cond1, cond2},
}
@ -42,8 +42,8 @@ func TestPushRule_Match_Conditions_Disabled(t *testing.T) {
cond1 := newMatchPushCondition("content.msgtype", "m.emote")
cond2 := newMatchPushCondition("content.body", "*pushrules")
rule := &pushrules.PushRule{
Type: pushrules.OverrideRule,
Enabled: false,
Type: pushrules.OverrideRule,
Enabled: false,
Conditions: []*pushrules.PushCondition{cond1, cond2},
}
@ -58,8 +58,8 @@ func TestPushRule_Match_Conditions_FailIfOneFails(t *testing.T) {
cond1 := newMatchPushCondition("content.msgtype", "m.emote")
cond2 := newMatchPushCondition("content.body", "*pushrules")
rule := &pushrules.PushRule{
Type: pushrules.OverrideRule,
Enabled: true,
Type: pushrules.OverrideRule,
Enabled: true,
Conditions: []*pushrules.PushCondition{cond1, cond2},
}
@ -72,7 +72,7 @@ func TestPushRule_Match_Conditions_FailIfOneFails(t *testing.T) {
func TestPushRule_Match_Content(t *testing.T) {
rule := &pushrules.PushRule{
Type: pushrules.ContentRule,
Type: pushrules.ContentRule,
Enabled: true,
Pattern: "is testing*",
}
@ -86,7 +86,7 @@ func TestPushRule_Match_Content(t *testing.T) {
func TestPushRule_Match_Content_Fail(t *testing.T) {
rule := &pushrules.PushRule{
Type: pushrules.ContentRule,
Type: pushrules.ContentRule,
Enabled: true,
Pattern: "is testing*",
}
@ -100,7 +100,7 @@ func TestPushRule_Match_Content_Fail(t *testing.T) {
func TestPushRule_Match_Content_ImplicitGlob(t *testing.T) {
rule := &pushrules.PushRule{
Type: pushrules.ContentRule,
Type: pushrules.ContentRule,
Enabled: true,
Pattern: "testing",
}
@ -114,7 +114,7 @@ func TestPushRule_Match_Content_ImplicitGlob(t *testing.T) {
func TestPushRule_Match_Content_IllegalGlob(t *testing.T) {
rule := &pushrules.PushRule{
Type: pushrules.ContentRule,
Type: pushrules.ContentRule,
Enabled: true,
Pattern: "this is not a valid glo[b",
}
@ -128,9 +128,9 @@ func TestPushRule_Match_Content_IllegalGlob(t *testing.T) {
func TestPushRule_Match_Room(t *testing.T) {
rule := &pushrules.PushRule{
Type: pushrules.RoomRule,
Type: pushrules.RoomRule,
Enabled: true,
RuleID: "!fakeroom:maunium.net",
RuleID: "!fakeroom:maunium.net",
}
event := newFakeEvent("m.room.message", map[string]interface{}{})
@ -139,21 +139,20 @@ func TestPushRule_Match_Room(t *testing.T) {
func TestPushRule_Match_Room_Fail(t *testing.T) {
rule := &pushrules.PushRule{
Type: pushrules.RoomRule,
Type: pushrules.RoomRule,
Enabled: true,
RuleID: "!otherroom:maunium.net",
RuleID: "!otherroom:maunium.net",
}
event := newFakeEvent("m.room.message", map[string]interface{}{})
assert.False(t, rule.Match(blankTestRoom, event))
}
func TestPushRule_Match_Sender(t *testing.T) {
rule := &pushrules.PushRule{
Type: pushrules.SenderRule,
Type: pushrules.SenderRule,
Enabled: true,
RuleID: "@tulir:maunium.net",
RuleID: "@tulir:maunium.net",
}
event := newFakeEvent("m.room.message", map[string]interface{}{})
@ -162,9 +161,9 @@ func TestPushRule_Match_Sender(t *testing.T) {
func TestPushRule_Match_Sender_Fail(t *testing.T) {
rule := &pushrules.PushRule{
Type: pushrules.RoomRule,
Type: pushrules.RoomRule,
Enabled: true,
RuleID: "@someone:matrix.org",
RuleID: "@someone:matrix.org",
}
event := newFakeEvent("m.room.message", map[string]interface{}{})
@ -173,9 +172,9 @@ func TestPushRule_Match_Sender_Fail(t *testing.T) {
func TestPushRule_Match_UnknownTypeAlwaysFail(t *testing.T) {
rule := &pushrules.PushRule{
Type: pushrules.PushRuleType("foobar"),
Type: pushrules.PushRuleType("foobar"),
Enabled: true,
RuleID: "@someone:matrix.org",
RuleID: "@someone:matrix.org",
}
event := newFakeEvent("m.room.message", map[string]interface{}{})

View File

@ -22,10 +22,10 @@ import (
"sync"
"time"
"encoding/gob"
"maunium.net/go/gomatrix"
"maunium.net/go/gomuks/debug"
"os"
"encoding/gob"
)
func init() {
@ -36,7 +36,7 @@ func init() {
type RoomNameSource int
const (
ExplicitRoomName RoomNameSource = iota
ExplicitRoomName RoomNameSource = iota
CanonicalAliasRoomName
AliasRoomName
MemberRoomName

View File

@ -34,7 +34,7 @@ type SyncerSession interface {
type EventSource int
const (
EventSourcePresence EventSource = 1 << iota
EventSourcePresence EventSource = 1 << iota
EventSourceJoin
EventSourceInvite
EventSourceLeave
@ -72,10 +72,10 @@ func (s *GomuksSyncer) ProcessResponse(res *gomatrix.RespSync, since string) (er
for roomID, roomData := range res.Rooms.Join {
room := s.Session.GetRoom(roomID)
s.processSyncEvents(room, roomData.State.Events, EventSourceJoin | EventSourceState, false)
s.processSyncEvents(room, roomData.Timeline.Events, EventSourceJoin | EventSourceTimeline, false)
s.processSyncEvents(room, roomData.Ephemeral.Events, EventSourceJoin | EventSourceEphemeral, false)
s.processSyncEvents(room, roomData.AccountData.Events, EventSourceJoin | EventSourceAccountData, false)
s.processSyncEvents(room, roomData.State.Events, EventSourceJoin|EventSourceState, false)
s.processSyncEvents(room, roomData.Timeline.Events, EventSourceJoin|EventSourceTimeline, false)
s.processSyncEvents(room, roomData.Ephemeral.Events, EventSourceJoin|EventSourceEphemeral, false)
s.processSyncEvents(room, roomData.AccountData.Events, EventSourceJoin|EventSourceAccountData, false)
if len(room.PrevBatch) == 0 {
room.PrevBatch = roomData.Timeline.PrevBatch
@ -84,14 +84,14 @@ func (s *GomuksSyncer) ProcessResponse(res *gomatrix.RespSync, since string) (er
for roomID, roomData := range res.Rooms.Invite {
room := s.Session.GetRoom(roomID)
s.processSyncEvents(room, roomData.State.Events, EventSourceInvite | EventSourceState, false)
s.processSyncEvents(room, roomData.State.Events, EventSourceInvite|EventSourceState, false)
}
for roomID, roomData := range res.Rooms.Leave {
room := s.Session.GetRoom(roomID)
room.HasLeft = true
s.processSyncEvents(room, roomData.State.Events, EventSourceLeave | EventSourceState, true)
s.processSyncEvents(room, roomData.Timeline.Events, EventSourceLeave | EventSourceTimeline, false)
s.processSyncEvents(room, roomData.State.Events, EventSourceLeave|EventSourceState, true)
s.processSyncEvents(room, roomData.Timeline.Events, EventSourceLeave|EventSourceTimeline, false)
if len(room.PrevBatch) == 0 {
room.PrevBatch = roomData.Timeline.PrevBatch

View File

@ -22,17 +22,17 @@ import (
"strconv"
"github.com/evidlo/fuzzysearch/fuzzy"
"maunium.net/go/gomuks/debug"
"maunium.net/go/gomuks/matrix/rooms"
"maunium.net/go/gomuks/ui/widget"
"maunium.net/go/tview"
"maunium.net/go/tcell"
"maunium.net/go/gomuks/debug"
"maunium.net/go/tview"
)
type FuzzySearchModal struct {
tview.Primitive
search *tview.InputField
search *tview.InputField
results *tview.TextView
matches fuzzy.Ranks

View File

@ -22,12 +22,12 @@ import (
"strconv"
"strings"
"math"
"maunium.net/go/gomuks/debug"
"maunium.net/go/gomuks/matrix/rooms"
"maunium.net/go/gomuks/ui/widget"
"maunium.net/go/tcell"
"maunium.net/go/tview"
"math"
)
type orderedRoom struct {
@ -446,7 +446,7 @@ func (list *RoomList) Previous() (string, *rooms.Room) {
indexInvisible := tagRoomList.Index(list.selected)
if index == -1 && indexInvisible >= 0 {
num := tagRoomList.TotalLength() - indexInvisible
tagRoomList.maxShown = int(math.Ceil(float64(num) / 10.0) * 10.0)
tagRoomList.maxShown = int(math.Ceil(float64(num)/10.0) * 10.0)
index = tagRoomList.IndexVisible(list.selected)
}
@ -479,7 +479,7 @@ func (list *RoomList) Next() (string, *rooms.Room) {
indexInvisible := tagRoomList.Index(list.selected)
if index == -1 && indexInvisible >= 0 {
num := tagRoomList.TotalLength() - indexInvisible + 1
tagRoomList.maxShown = int(math.Ceil(float64(num) / 10.0) * 10.0)
tagRoomList.maxShown = int(math.Ceil(float64(num)/10.0) * 10.0)
index = tagRoomList.IndexVisible(list.selected)
}

View File

@ -17,8 +17,8 @@
package widget
import (
"maunium.net/go/tview"
"maunium.net/go/tcell"
"maunium.net/go/tview"
)
// Center wraps the given tview primitive into a Flex element in order to
@ -37,15 +37,15 @@ func Center(width, height int, p tview.Primitive) tview.Primitive {
type transparentCenter struct {
*tview.Box
prefWidth, prefHeight int
p tview.Primitive
p tview.Primitive
}
func TransparentCenter(width, height int, p tview.Primitive) tview.Primitive {
return &transparentCenter{
Box: tview.NewBox(),
prefWidth: width,
Box: tview.NewBox(),
prefWidth: width,
prefHeight: height,
p: p,
p: p,
}
}

View File

@ -17,10 +17,10 @@
package widget
import (
"fmt"
"github.com/mattn/go-runewidth"
"maunium.net/go/tcell"
"maunium.net/go/tview"
"fmt"
"strconv"
)