From c9e3ad185021b4ac1849e4fd2c2908808260cae7 Mon Sep 17 00:00:00 2001
From: Loren Burkholder <computersemiexpert@outlook.com>
Date: Thu, 16 Feb 2023 23:18:12 -0500
Subject: [PATCH] Animate transition to blurhash

---
 resources/qml/delegates/ImageMessage.qml | 44 ++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/resources/qml/delegates/ImageMessage.qml b/resources/qml/delegates/ImageMessage.qml
index bb22d0ee6..1e2674ae5 100644
--- a/resources/qml/delegates/ImageMessage.qml
+++ b/resources/qml/delegates/ImageMessage.qml
@@ -66,6 +66,50 @@ AbstractButton {
         fillMode: Image.PreserveAspectFit
         sourceSize.width: parent.width * Screen.devicePixelRatio
         sourceSize.height: parent.height * Screen.devicePixelRatio
+        state: img.status != Image.Ready ? "Visible" : (timeline.privacyScreen.active ? "Visible" : "Invisible")
+
+        states: [
+            State {
+                name: "Visible"
+
+                PropertyChanges {
+                    target: blurhash_
+                    opacity: 1
+                }
+            },
+            State {
+                name: "Invisible"
+
+                PropertyChanges {
+                    target: blurhash_
+                    opacity: 0
+                }
+            }
+        ]
+        transitions: [
+            Transition {
+                from: "Visible"
+                to: "Invisible"
+
+                NumberAnimation {
+                    target: blurhash_
+                    property: "opacity"
+                    duration: 250
+                    easing.type: Easing.InQuad
+                }
+            },
+            Transition {
+                from: "Invisible"
+                to: "Visible"
+
+                NumberAnimation {
+                    target: blurhash_
+                    property: "opacity"
+                    duration: 500
+                    easing.type: Easing.InQuad
+                }
+            }
+        ]
     }
 
     onClicked: Settings.openImageExternal ? room.openMedia(eventId) : TimelineManager.openImageOverlay(room, url, eventId, originalWidth, proportionalHeight);
-- 
GitLab