From 11c96664089e1437be1eb0ae8bca6c051da5e950 Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Mon, 19 Jul 2021 17:45:55 +0200
Subject: [PATCH] Cache sticker picker

---
 resources/qml/MessageInput.qml        | 2 +-
 resources/qml/emoji/StickerPicker.qml | 8 +++++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/resources/qml/MessageInput.qml b/resources/qml/MessageInput.qml
index d4f7ca625..415d67a7b 100644
--- a/resources/qml/MessageInput.qml
+++ b/resources/qml/MessageInput.qml
@@ -331,7 +331,7 @@ Rectangle {
             image: ":/icons/icons/ui/sticky-note-solid.svg"
             ToolTip.visible: hovered
             ToolTip.text: qsTr("Stickers")
-            onClicked: stickerPopup.visible ? stickerPopup.close() : stickerPopup.show(stickerButton, TimelineManager.completerFor("stickers", room.roomId()), function(row) {
+            onClicked: stickerPopup.visible ? stickerPopup.close() : stickerPopup.show(stickerButton, room.roomId(), function(row) {
                 room.input.sticker(stickerPopup.model.sourceModel, row);
                 TimelineManager.focusMessageInput();
             })
diff --git a/resources/qml/emoji/StickerPicker.qml b/resources/qml/emoji/StickerPicker.qml
index eca302ebc..a3d01d7aa 100644
--- a/resources/qml/emoji/StickerPicker.qml
+++ b/resources/qml/emoji/StickerPicker.qml
@@ -15,7 +15,7 @@ Menu {
 
     property var callback
     property var colors
-    property alias model: gridView.model
+    property string roomid
     property var textArea
     property real highlightHue: Nheko.colors.highlight.hslHue
     property real highlightSat: Nheko.colors.highlight.hslSaturation
@@ -24,9 +24,9 @@ Menu {
     readonly property int stickerDimPad: 128 + Nheko.paddingSmall
     readonly property int stickersPerRow: 3
 
-    function show(showAt, model_, callback) {
+    function show(showAt, roomid_, callback) {
         console.debug("Showing sticker picker");
-        model = model_;
+        roomid = roomid_;
         stickerPopup.callback = callback;
         popup(showAt ? showAt : null);
     }
@@ -120,6 +120,8 @@ Menu {
             GridView {
                 id: gridView
 
+                model: roomid ? TimelineManager.completerFor("stickers", roomid) : null
+
                 Layout.preferredHeight: cellHeight * 3.5
                 Layout.preferredWidth: stickersPerRow * stickerDimPad + 20
                 Layout.leftMargin: 4
-- 
GitLab