aboutsummaryrefslogtreecommitdiff
path: root/session.go
diff options
context:
space:
mode:
Diffstat (limited to 'session.go')
-rw-r--r--session.go28
1 files changed, 22 insertions, 6 deletions
diff --git a/session.go b/session.go
index b679076..eda49dc 100644
--- a/session.go
+++ b/session.go
@@ -30,7 +30,7 @@ type Session struct {
AccessToken string
NextBatch string
FilterID string
- Rooms map[string]*gomatrix.Room
+ Rooms map[string]*Room
debug DebugPrinter `json:"-"`
}
@@ -44,11 +44,18 @@ func (config *Config) NewSession(mxid string) *Session {
return &Session{
MXID: mxid,
path: filepath.Join(config.dir, mxid+".session"),
- Rooms: make(map[string]*gomatrix.Room),
+ Rooms: make(map[string]*Room),
debug: config.debug,
}
}
+func (s *Session) Clear() {
+ s.Rooms = make(map[string]*Room)
+ s.NextBatch = ""
+ s.FilterID = ""
+ s.Save()
+}
+
func (s *Session) Load() {
data, err := ioutil.ReadFile(s.path)
if err != nil {
@@ -85,15 +92,20 @@ func (s *Session) LoadNextBatch(_ string) string {
return s.NextBatch
}
-func (s *Session) LoadRoom(mxid string) *gomatrix.Room {
+func (s *Session) GetRoom(mxid string) *Room {
room, _ := s.Rooms[mxid]
if room == nil {
- room = gomatrix.NewRoom(mxid)
- s.SaveRoom(room)
+ room = NewRoom(mxid)
+ s.Rooms[room.ID] = room
}
return room
}
+func (s *Session) PutRoom(room *Room) {
+ s.Rooms[room.ID] = room
+ s.Save()
+}
+
func (s *Session) SaveFilterID(_, filterID string) {
s.FilterID = filterID
s.Save()
@@ -104,7 +116,11 @@ func (s *Session) SaveNextBatch(_, nextBatch string) {
s.Save()
}
+func (s *Session) LoadRoom(mxid string) *gomatrix.Room {
+ return s.GetRoom(mxid).Room
+}
+
func (s *Session) SaveRoom(room *gomatrix.Room) {
- s.Rooms[room.ID] = room
+ s.GetRoom(room.ID).Room = room
s.Save()
}