Remove impossible check and improve things for testing

This commit is contained in:
Tulir Asokan 2018-04-22 23:26:56 +03:00
parent ad540e268d
commit fafc7f55be
4 changed files with 29 additions and 10 deletions

View File

@ -50,6 +50,10 @@ func (config *Config) NewSession(mxid string) *Session {
} }
} }
func (s *Session) GetUserID() string {
return s.UserID
}
func (s *Session) Clear() { func (s *Session) Clear() {
s.Rooms = make(map[string]*rooms.Room) s.Rooms = make(map[string]*rooms.Room)
s.PushRules = nil s.PushRules = nil

View File

@ -45,12 +45,6 @@ type Member struct {
// eventToRoomMember converts a m.room.member state event into a Member object. // eventToRoomMember converts a m.room.member state event into a Member object.
func eventToRoomMember(userID string, event *gomatrix.Event) *Member { func eventToRoomMember(userID string, event *gomatrix.Event) *Member {
if event == nil {
return &Member{
UserID: userID,
Membership: MembershipLeave,
}
}
membership, _ := event.Content["membership"].(string) membership, _ := event.Content["membership"].(string)
avatarURL, _ := event.Content["avatar_url"].(string) avatarURL, _ := event.Content["avatar_url"].(string)

View File

@ -25,21 +25,25 @@ import (
"time" "time"
"maunium.net/go/gomatrix" "maunium.net/go/gomatrix"
"maunium.net/go/gomuks/config"
"maunium.net/go/gomuks/matrix/rooms" "maunium.net/go/gomuks/matrix/rooms"
) )
type SyncerSession interface {
GetRoom(id string) *rooms.Room
GetUserID() string
}
// GomuksSyncer is the default syncing implementation. You can either write your own syncer, or selectively // GomuksSyncer is the default syncing implementation. You can either write your own syncer, or selectively
// replace parts of this default syncer (e.g. the ProcessResponse method). The default syncer uses the observer // replace parts of this default syncer (e.g. the ProcessResponse method). The default syncer uses the observer
// pattern to notify callers about incoming events. See GomuksSyncer.OnEventType for more information. // pattern to notify callers about incoming events. See GomuksSyncer.OnEventType for more information.
type GomuksSyncer struct { type GomuksSyncer struct {
Session *config.Session Session SyncerSession
listeners map[string][]gomatrix.OnEventListener // event type to listeners array listeners map[string][]gomatrix.OnEventListener // event type to listeners array
FirstSyncDone bool FirstSyncDone bool
} }
// NewGomuksSyncer returns an instantiated GomuksSyncer // NewGomuksSyncer returns an instantiated GomuksSyncer
func NewGomuksSyncer(session *config.Session) *GomuksSyncer { func NewGomuksSyncer(session SyncerSession) *GomuksSyncer {
return &GomuksSyncer{ return &GomuksSyncer{
Session: session, Session: session,
listeners: make(map[string][]gomatrix.OnEventListener), listeners: make(map[string][]gomatrix.OnEventListener),
@ -56,7 +60,7 @@ func (s *GomuksSyncer) ProcessResponse(res *gomatrix.RespSync, since string) (er
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
err = fmt.Errorf("ProcessResponse for %s since %s panicked: %s\n%s", s.Session.UserID, since, r, debug.Stack()) err = fmt.Errorf("ProcessResponse for %s since %s panicked: %s\n%s", s.Session.GetUserID(), since, r, debug.Stack())
} }
}() }()

View File

@ -15,3 +15,20 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
package matrix_test package matrix_test
import (
"maunium.net/go/gomuks/matrix/rooms"
)
type mockSyncerSession struct {
rooms map[string]*rooms.Room
userID string
}
func (mss *mockSyncerSession) GetRoom(id string) *rooms.Room {
return mss.rooms[id]
}
func (mss *mockSyncerSession) GetUserID() string {
return mss.userID
}