morpheus

A Matrix client written in Go-QT
git clone git://archive.git.mtrnord.blog/Nordgedanken/morpheus.git
Log | Files | Refs | README | LICENSE

commit a4b0e0b16a0ff9d26d23f1408552e698827c2b8f
parent 579aad7c7d9df11111fef21a854ec66e5dd25200
Author: MTRNord <mtrnord1@gmail.com>
Date:   Sat, 14 Oct 2017 20:17:54 +0200

Fix #19

Signed-off-by: MTRNord <mtrnord1@gmail.com>

Diffstat:
Mmatrix/user.go | 78+-----------------------------------------------------------------------------
1 file changed, 1 insertion(+), 77 deletions(-)

diff --git a/matrix/user.go b/matrix/user.go @@ -64,83 +64,7 @@ func generateGenericImages(displayname string) string { // GetOwnUserAvatar returns a *gui.QPixmap of an UserAvatar func GetOwnUserAvatar(cli *gomatrix.Client) *gui.QPixmap { - // Init local vars - var avatarData string - var IMGdata string - - // Get cache - db.View(func(tx *buntdb.Tx) error { - QueryErr := tx.AscendKeys("user:"+cli.UserID+":avatarData100x100", - func(key, value string) bool { - avatarData = value - return true - }) - if QueryErr != nil { - return QueryErr - } - return nil - }) - - //If cache is empty do a ServerQuery - if avatarData == "" { - // Get avatarURL - avatarURL, avatarErr := cli.GetAvatarURL() - if avatarErr != nil { - localLog.Println(avatarErr) - } - - // If avatarURL is not empty (aka. has a avatar set) download it at the size of 100x100. Else make the data string empty - if avatarURL != "" { - hsURL := cli.HomeserverURL.String() - avatarURLSplits := strings.Split(strings.Replace(avatarURL, "mxc://", "", -1), "/") - - urlPath := hsURL + "/_matrix/media/r0/thumbnail/" + avatarURLSplits[0] + "/" + avatarURLSplits[1] + "?width=100&height=100" - - data, err := cli.MakeRequest("GET", urlPath, nil, nil) - if err != nil { - localLog.Println(err) - } - IMGdata = string(data[:]) - } else { - //TODO Generate default image (Step: AfterUI) - DisplayNameResp, _ := cli.GetOwnDisplayName() - DisplayName := DisplayNameResp.DisplayName - IMGdata = generateGenericImages(DisplayName) - } - - // Update cache - DBerr := db.Update(func(tx *buntdb.Tx) error { - tx.Set("user:"+cli.UserID+":avatarData100x100", IMGdata, nil) - return nil - }) - if DBerr != nil { - localLog.Fatalln("DB ERROR: ", DBerr) - } - } else { - IMGdata = avatarData - } - - r := bytes.NewReader([]byte(IMGdata)) - srcIMG, _, err := image.Decode(r) - if err != nil { - localLog.Println("Decoder error: ", err) - } - - // Convert avatarimage to QPixmap for usage in QT - canvas := image.NewRGBA(srcIMG.Bounds()) - cx := srcIMG.Bounds().Min.X + srcIMG.Bounds().Dx()/2 - cy := srcIMG.Bounds().Min.Y + srcIMG.Bounds().Dy()/2 - draw.DrawMask(canvas, canvas.Bounds(), srcIMG, image.ZP, &circle{image.Point{cx, cy}, 110}, image.ZP, draw.Over) - avatar := gui.NewQPixmap() - buf := new(bytes.Buffer) - Converr := png.Encode(buf, canvas) - if Converr != nil { - localLog.Println("Converting error: ", Converr) - } - - str := fmt.Sprintf("%s", buf) - avatar.LoadFromData(str, uint(len(str)), "", 0) - return avatar + return GetUserAvatar(cli, cli.UserID) } // GetUserAvatar returns a *gui.QPixmap of an UserAvatar