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:
| M | matrix/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