commit 76f0ef1b20bc6a5408ff8fbd28ffd39612348011
parent c36aa9eda7ea508fe34fbdbd465ab8d513d82b05
Author: MTRNord <mtrnord1@gmail.com>
Date: Sat, 21 Oct 2017 21:41:47 +0200
Load Cache on Start and Room Switch \(^^)/
Signed-off-by: MTRNord <mtrnord1@gmail.com>
Diffstat:
3 files changed, 54 insertions(+), 45 deletions(-)
diff --git a/matrix/db.go b/matrix/db.go
@@ -5,7 +5,6 @@ import (
"path/filepath"
"strconv"
- "github.com/matrix-org/gomatrix"
"github.com/shibukawa/configdir"
"github.com/tidwall/buntdb"
)
@@ -52,39 +51,6 @@ func OpenUserDB() (db *buntdb.DB, err error) {
return
}
-// InitData inits basic Data like getting aliases of joinedRooms
-func InitData(cli *gomatrix.Client) (err error) {
- db, DBOpenErr := OpenCacheDB()
- if DBOpenErr != nil {
- localLog.Fatalln(DBOpenErr)
- }
- defer db.Close()
-
- // Todo Get aliases
- /*for _, room := range rooms.JoinedRooms {
- var roomAliases RoomAliases
- if StateEventErr := cli.StateEvent(room, "m.room.aliases", "", &roomAliases); StateEventErr != nil {
- localLog.Println(StateEventErr)
- // Not returning as a Error NotFound is allowed
- }
-
- for index, alias := range roomAliases.Content.Aliases {
- // Update cache
- DBerr := db.Update(func(tx *buntdb.Tx) error {
- localLog.Println(room)
- _, _, DBSetErr := tx.Set("room|"+room+"|aliases|"+string(index), alias, nil)
- return DBSetErr
- })
- if DBerr != nil {
- err = DBerr
- return
- }
- }
-
- }*/
- return
-}
-
// CacheMessageEvents writes message infos into the cache into the defined room
func CacheMessageEvents(id, sender, roomID, message string, timestamp int64) (err error) {
db, DBOpenErr := OpenCacheDB()
@@ -95,7 +61,6 @@ func CacheMessageEvents(id, sender, roomID, message string, timestamp int64) (er
// Update cache
DBerr := db.Update(func(tx *buntdb.Tx) error {
- localLog.Println(roomID)
_, _, DBSetIDErr := tx.Set("room|"+roomID+"|messages|"+id+"|id", id, nil)
if DBSetIDErr != nil {
return DBSetIDErr
diff --git a/ui/MainUI.go b/ui/MainUI.go
@@ -5,6 +5,8 @@ import (
"log"
"sync"
+ "strconv"
+
"github.com/Nordgedanken/Morpheus/matrix"
"github.com/Nordgedanken/Morpheus/util"
"github.com/matrix-org/gomatrix"
@@ -72,12 +74,6 @@ func (m *MainUI) NewUI() (err error) {
m.MainWidget = loader.Load(file, m.widget)
file.Close()
- InitDataErr := matrix.InitData(m.cli)
- if InitDataErr != nil {
- err = InitDataErr
- return
- }
-
messageScrollArea := widgets.NewQScrollAreaFromPointer(m.widget.FindChild("messageScroll", core.Qt__FindChildrenRecursively).Pointer())
messagesScrollAreaContent := widgets.NewQWidgetFromPointer(m.widget.FindChild("messagesScrollAreaContent", core.Qt__FindChildrenRecursively).Pointer())
roomScrollArea := widgets.NewQScrollAreaFromPointer(m.widget.FindChild("roomScroll", core.Qt__FindChildrenRecursively).Pointer())
@@ -94,7 +90,6 @@ func (m *MainUI) NewUI() (err error) {
layout.SetContentsMargins(0, 0, 0, 0)
m.widget.ConnectResizeEvent(func(event *gui.QResizeEvent) {
- fmt.Println("resize Widget")
m.MainWidget.Resize(event.Size())
event.Accept()
})
@@ -148,7 +143,7 @@ func (m *MainUI) NewUI() (err error) {
}
})
- m.startSync(m.MessageListLayout)
+ m.startSync()
m.widget.SetSizePolicy2(widgets.QSizePolicy__Expanding, widgets.QSizePolicy__Expanding)
m.MainWidget.SetSizePolicy2(widgets.QSizePolicy__Expanding, widgets.QSizePolicy__Expanding)
@@ -164,6 +159,8 @@ func (m *MainUI) NewUI() (err error) {
m.initRoomList(roomListLayout, roomScrollArea)
+ go m.loadCache()
+
m.MainWidget.SetWindowTitle("Morpheus - " + m.rooms[m.currentRoom].GetRoomTopic())
avatar, roomAvatarErr := m.rooms[m.currentRoom].GetRoomAvatar()
@@ -285,7 +282,7 @@ func (m *MainUI) logout(widget *widgets.QWidget, messageScrollArea *widgets.QScr
return
}
-func (m *MainUI) startSync(messageListLayout *QVBoxLayoutWithTriggerSlot) (err error) {
+func (m *MainUI) startSync() (err error) {
//Start Syncer!
m.syncer = m.cli.Syncer.(*gomatrix.DefaultSyncer)
m.storage = gomatrix.NewInMemoryStore()
@@ -307,7 +304,7 @@ func (m *MainUI) startSync(messageListLayout *QVBoxLayoutWithTriggerSlot) (err e
fmt.Println(room)
fmt.Println(m.currentRoom)
if room == m.currentRoom {
- messageListLayout.TriggerMessage(msg, sender, timestamp)
+ m.MessageListLayout.TriggerMessage(msg, sender, timestamp)
}
})
@@ -343,3 +340,48 @@ func (m *MainUI) initRoomList(roomListLayout *QRoomVBoxLayoutWithTriggerSlot, ro
return
}
+
+func (m *MainUI) loadCache() (err error) {
+ db, DBOpenErr := matrix.OpenCacheDB()
+ if DBOpenErr != nil {
+ err = DBOpenErr
+ }
+ defer db.Close()
+
+ DBerr := db.View(func(tx *buntdb.Tx) error {
+ IDErr := tx.AscendKeys("room|"+m.currentRoom+"|messages|*|id", func(_, id string) bool {
+ msg, GetMsgErr := tx.Get("room|" + m.currentRoom + "|messages|" + id + "|message")
+ if GetMsgErr != nil {
+ fmt.Println("GetMsgErr: ", GetMsgErr)
+ return false
+ }
+
+ sender, GetSenderErr := tx.Get("room|" + m.currentRoom + "|messages|" + id + "|sender")
+ if GetSenderErr != nil {
+ return false
+ }
+
+ timestamp, GetTimestampErr := tx.Get("room|" + m.currentRoom + "|messages|" + id + "|timestamp")
+ if GetTimestampErr != nil {
+ return false
+ }
+ timestampInt, ConvErr := strconv.ParseInt(timestamp, 10, 64)
+ if ConvErr != nil {
+ return false
+ }
+ m.MessageListLayout.TriggerMessage(msg, sender, timestampInt)
+ return true
+ })
+ if IDErr != nil {
+ fmt.Println("IDErr: ", IDErr)
+ return IDErr
+ }
+ return nil
+ })
+ if DBerr != nil {
+ fmt.Println("DBERR: ", DBerr)
+ err = DBerr
+ return
+ }
+ return
+}
diff --git a/ui/roomlist.go b/ui/roomlist.go
@@ -92,6 +92,8 @@ func (roomViewLayout *QRoomVBoxLayoutWithTriggerSlot) NewRoom(room *matrix.Room,
widgetScroll.DeleteLater()
}
+ go mainUIStruct.loadCache()
+
return true
}