From 290143dfc4c8970456053f8e06d7baf9857d4840 Mon Sep 17 00:00:00 2001 From: k1ngsterr1 Date: Sun, 22 Feb 2026 18:32:03 +0500 Subject: [PATCH] feat: Add Lottie animation for avatar in attachment UI and refactor file layout by removing search functionality --- app/src/main/assets/lottie/avatar.json | 1 + .../rosetta/messenger/RosettaApplication.kt | 3 + .../chats/attach/AttachAlertAvatarLayout.kt | 22 ++++-- .../ui/chats/attach/AttachAlertFileLayout.kt | 73 ++++--------------- .../chats/components/AttachmentComponents.kt | 17 +---- 5 files changed, 35 insertions(+), 81 deletions(-) create mode 100644 app/src/main/assets/lottie/avatar.json diff --git a/app/src/main/assets/lottie/avatar.json b/app/src/main/assets/lottie/avatar.json new file mode 100644 index 0000000..4f7408a --- /dev/null +++ b/app/src/main/assets/lottie/avatar.json @@ -0,0 +1 @@ +{"tgs":1,"v":"5.5.2","fr":60,"ip":60,"op":240,"w":512,"h":512,"nm":"Bust in Silhouette","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"silhouette 4","parent":8,"sr":1,"ks":{"o":{"a":1,"k":[{"t":121,"s":[0],"h":1},{"t":126.641,"s":[33],"h":1},{"t":135.664,"s":[0],"h":1},{"t":141.305,"s":[33],"h":1},{"t":149.19921875,"s":[0],"h":1}]},"p":{"a":0,"k":[52,201,0]},"a":{"a":0,"k":[7,201,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0.005,0.035],[35.501,24.537],[8.215,26.577],[0.826,6.722],[-5.945,6.687],[3.082,26.383],[15.735,2.271],[0.263,-0.04],[0,0],[-14.389,-57.101],[-6.535,-12.977],[-32.401,-10.32],[0.438,-8.43],[4.435,-14.348],[34.127,-20.758],[0.966,-6.765]],"o":[[-0.966,-6.765],[-32.859,-22.711],[-4.435,-14.348],[-1.099,-8.942],[27.225,-30.621],[-14.397,-123.256],[0.264,-0.04],[0,0],[-43.311,12.04],[-0.389,1.398],[0,0],[3.984,1.269],[-0.352,6.764],[-8.215,26.577],[-31.767,19.322],[-0.01,0.071]],"v":[[213.566,193.248],[175.425,134.08],[66.801,90.573],[62.599,60.942],[67.775,33.121],[94.897,-74.244],[12.265,-192.771],[-11.342,-192.422],[-30.363,-185.479],[-70.111,-50.898],[-62.465,-22.023],[-9.599,44.32],[-5.938,72.43],[-11.713,96.569],[-116.233,137.678],[-153.389,191.248]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[-70,4]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 5","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"smile","parent":3,"sr":1,"ks":{"p":{"a":0,"k":[7,-1,0]},"a":{"a":0,"k":[7,-1,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":107,"s":[{"i":[[14.664,2.379],[-18.353,-0.556],[5.448,0.001]],"o":[[12.424,1.113],[-15.665,2.621],[-9.617,-0.002]],"v":[[-20.533,-8.443],[32.268,-7.887],[6.23,-5.802]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":117,"s":[{"i":[[3.395,12.564],[-20.059,-0.483],[26.517,0]],"o":[[13.578,0.966],[-6.172,17.879],[-22.682,0]],"v":[[-22.987,-14.027],[34.721,-13.544],[3.21,15.933]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":124,"s":[{"i":[[5.315,12.564],[-31.409,-0.483],[19.801,1.165]],"o":[[21.262,0.966],[-9.664,17.879],[-16.43,-0.966]],"v":[[-39.314,-14.027],[51.048,-13.544],[3.21,15.933]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":179,"s":[{"i":[[5.315,12.564],[-31.409,-0.483],[19.801,1.165]],"o":[[21.262,0.966],[-9.664,17.879],[-16.43,-0.966]],"v":[[-39.314,-14.027],[51.048,-13.544],[3.21,15.933]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":183,"s":[{"i":[[3.395,12.564],[-20.059,-0.483],[26.517,0]],"o":[[13.578,0.966],[-6.172,17.879],[-22.682,0]],"v":[[-22.987,-14.027],[34.721,-13.544],[3.21,15.933]],"c":true}]},{"t":189,"s":[{"i":[[14.664,2.379],[-18.353,-0.556],[5.448,0.001]],"o":[[12.424,1.113],[-15.665,2.621],[-9.617,-0.002]],"v":[[-20.533,-8.443],[32.268,-7.887],[6.23,-5.802]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":107,"op":190,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"top","parent":8,"sr":1,"ks":{"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":102,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.31],"y":[0]},"t":112,"s":[-8.674]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":186,"s":[-8.674]},{"t":196,"s":[0]}]},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":102,"s":[10,-130,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":112,"s":[-17.288,-128.488,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":186,"s":[-17.288,-128.488,0],"to":[0,0,0],"ti":[0,0,0]},{"t":196,"s":[10,-130,0]}]},"a":{"a":0,"k":[10,-130,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[4.134,1.538],[62.819,0],[0.266,0],[0,0],[-7.732,-77.315],[1.824,-4.353]],"o":[[-1.88,-3.615],[7.732,-77.315],[0.267,0],[0,0],[-62.819,0],[-4.72,1.756],[0,0]],"v":[[108.578,-63.741],[99.674,-71.772],[4.479,-195.476],[5.143,-195.476],[5.867,-195.476],[-89.327,-71.772],[-98.971,-62.161]],"c":false}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.647058823529,0.839215686275,0.917647058824,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":8},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 4","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"shoulder-R","parent":8,"sr":1,"ks":{"p":{"a":0,"k":[132,153,0]},"a":{"a":0,"k":[132,153,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[35.501,24.538],[24.56,10.99]],"o":[[-0.966,-6.765],[-25.029,-17.299],[-0.961,-0.43]],"v":[[203.566,201.248],[164.425,134.08],[67.94,105.313]],"c":false}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.647058823529,0.839215686275,0.917647058824,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":8},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 3","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"shoulder-L","parent":8,"sr":1,"ks":{"p":{"a":0,"k":[-119,154,0]},"a":{"a":0,"k":[-119,154,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[4.004,-1.735],[24.811,-17.149],[0.966,-6.765]],"o":[[-24.728,10.715],[-35.501,24.537],[0,0]],"v":[[-58.24,105.597],[-154.079,134.08],[-193.22,201.248]],"c":false}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.647058823529,0.839215686275,0.917647058824,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":8},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 2","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"silhouette 2","parent":8,"sr":1,"ks":{"p":{"a":0,"k":[7,201,0]},"a":{"a":0,"k":[7,201,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0.966,-6.765],[0.005,0.035]],"o":[[-0.01,0.071],[-0.966,-6.765]],"v":[[-193.219,201.248],[203.566,201.248]],"c":false}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.2,0.325490196078,0.458823529412,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":8},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 5","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"silhouette LIGHT","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":127,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.85],"y":[0]},"t":137,"s":[0]},{"i":{"x":[0.16],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":144,"s":[100]},{"t":151,"s":[0]}]},"p":{"a":0,"k":[263,457,0]},"a":{"a":0,"k":[7,201,0]},"s":{"a":0,"k":[106,106,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0.005,0.035],[35.501,24.537],[8.215,26.577],[-1.93,6.492],[-2.38,2.853],[0,0],[21.704,4.521],[62.105,-9.44],[0.263,-0.04],[0,0],[-19.262,-75.276],[-12.276,2.843],[-35.533,-22.975],[-3.371,-5.027],[4.435,-14.348],[32.859,-22.711],[0.966,-6.765]],"o":[[-0.966,-6.765],[-32.859,-22.711],[-4.435,-14.348],[1.725,-5.802],[27.102,-32.495],[12.566,-0.932],[-3.974,-77.599],[0.264,-0.04],[0,0],[-62.105,9.44],[-19.381,10.766],[0,0],[3.12,2.017],[3.772,5.625],[-8.215,26.577],[-35.501,24.537],[-0.01,0.071]],"v":[[203.566,201.248],[164.425,134.08],[52.801,91.074],[52.099,46.942],[59.274,34.121],[85.34,-36.639],[80.467,-84.776],[-32.235,-192.771],[-31.58,-192.871],[-30.863,-192.979],[-106.388,-56.375],[-96.738,-8.965],[-50.825,50.855],[-40.164,60.966],[-42.455,91.074],[-154.079,134.08],[-193.219,201.248]],"c":true}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.654901960784,0.776470588235,0.843137254902,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":8},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 5","bm":0,"hd":false}],"ip":126,"op":154,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"silhouette","sr":1,"ks":{"p":{"a":0,"k":[263,457,0]},"a":{"a":0,"k":[7,201,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":97,"s":[106,106,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":106,"s":[109.18,102.82,100]},{"i":{"x":[0.703,0.703,0.703],"y":[1,1,1]},"o":{"x":[0.273,0.273,0.273],"y":[0,0,0]},"t":115,"s":[106,106,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":186,"s":[106,106,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":195,"s":[109.18,102.82,100]},{"t":204,"s":[106,106,100]}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":102,"s":[{"i":[[0.005,0.035],[35.501,24.537],[8.215,26.577],[-2.884,6.128],[-2.782,2.463],[0,0],[20.779,7.732],[62.819,0],[0.266,0],[0,0],[-7.732,-77.315],[-12.564,0.966],[-31.677,-28.053],[-2.577,-5.476],[4.435,-14.348],[32.859,-22.711],[0.966,-6.765]],"o":[[-0.966,-6.765],[-32.859,-22.711],[-4.435,-14.348],[2.577,-5.476],[31.677,-28.053],[12.564,0.966],[7.732,-77.315],[0.267,0],[0,0],[-62.819,0],[-20.778,7.732],[0,0],[2.782,2.463],[2.884,6.128],[-8.215,26.577],[-35.501,24.537],[-0.01,0.071]],"v":[[203.566,201.248],[164.425,134.08],[52.801,91.074],[51.835,54.188],[60.855,42.59],[97.258,-23.45],[99.674,-71.772],[4.479,-195.476],[5.143,-195.476],[5.867,-195.476],[-89.327,-71.772],[-86.911,-23.45],[-50.508,42.59],[-41.488,54.188],[-42.455,91.074],[-154.079,134.08],[-193.219,201.248]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":112,"s":[{"i":[[0.005,0.035],[35.501,24.537],[8.215,26.577],[-1.93,6.492],[-2.38,2.853],[0,0],[21.704,4.521],[62.105,-9.44],[0.263,-0.04],[0,0],[-19.262,-75.276],[-12.276,2.843],[-35.533,-22.975],[-3.371,-5.027],[4.435,-14.348],[32.859,-22.711],[0.966,-6.765]],"o":[[-0.966,-6.765],[-32.859,-22.711],[-4.435,-14.348],[1.725,-5.802],[27.102,-32.495],[12.566,-0.932],[-3.974,-77.599],[0.264,-0.04],[0,0],[-62.105,9.44],[-19.381,10.766],[0,0],[3.12,2.017],[3.772,5.625],[-8.215,26.577],[-35.501,24.537],[-0.01,0.071]],"v":[[203.566,201.248],[164.425,134.08],[52.801,91.074],[52.099,46.942],[59.274,34.121],[85.34,-36.639],[80.467,-84.776],[-32.235,-192.771],[-31.58,-192.871],[-30.863,-192.979],[-106.388,-56.375],[-96.738,-8.965],[-50.825,50.855],[-40.164,60.966],[-42.455,91.074],[-154.079,134.08],[-193.219,201.248]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":186,"s":[{"i":[[0.005,0.035],[35.501,24.537],[8.215,26.577],[-1.93,6.492],[-2.38,2.853],[0,0],[21.704,4.521],[62.105,-9.44],[0.263,-0.04],[0,0],[-19.262,-75.276],[-12.276,2.843],[-35.533,-22.975],[-3.371,-5.027],[4.435,-14.348],[32.859,-22.711],[0.966,-6.765]],"o":[[-0.966,-6.765],[-32.859,-22.711],[-4.435,-14.348],[1.725,-5.802],[27.102,-32.495],[12.566,-0.932],[-3.974,-77.599],[0.264,-0.04],[0,0],[-62.105,9.44],[-19.381,10.766],[0,0],[3.12,2.017],[3.772,5.625],[-8.215,26.577],[-35.501,24.537],[-0.01,0.071]],"v":[[203.566,201.248],[164.425,134.08],[52.801,91.074],[52.099,46.942],[59.274,34.121],[85.34,-36.639],[80.467,-84.776],[-32.235,-192.771],[-31.58,-192.871],[-30.863,-192.979],[-106.388,-56.375],[-96.738,-8.965],[-50.825,50.855],[-40.164,60.966],[-42.455,91.074],[-154.079,134.08],[-193.219,201.248]],"c":true}]},{"t":196,"s":[{"i":[[0.005,0.035],[35.501,24.537],[8.215,26.577],[-2.884,6.128],[-2.782,2.463],[0,0],[20.779,7.732],[62.819,0],[0.266,0],[0,0],[-7.732,-77.315],[-12.564,0.966],[-31.677,-28.053],[-2.577,-5.476],[4.435,-14.348],[32.859,-22.711],[0.966,-6.765]],"o":[[-0.966,-6.765],[-32.859,-22.711],[-4.435,-14.348],[2.577,-5.476],[31.677,-28.053],[12.564,0.966],[7.732,-77.315],[0.267,0],[0,0],[-62.819,0],[-20.778,7.732],[0,0],[2.782,2.463],[2.884,6.128],[-8.215,26.577],[-35.501,24.537],[-0.01,0.071]],"v":[[203.566,201.248],[164.425,134.08],[52.801,91.074],[51.835,54.188],[60.855,42.59],[97.258,-23.45],[99.674,-71.772],[4.479,-195.476],[5.143,-195.476],[5.867,-195.476],[-89.327,-71.772],[-86.911,-23.45],[-50.508,42.59],[-41.488,54.188],[-42.455,91.074],[-154.079,134.08],[-193.219,201.248]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.2,0.325490196078,0.458823529412,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":8},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"gf","o":{"a":0,"k":100},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.267,0.408,0.545,0.587,0.375,0.524,0.655,1,0.482,0.639,0.765]}},"s":{"a":0,"k":[-16.126,196.797]},"e":{"a":0,"k":[-25.412,-152.981]},"t":1,"nm":"gtjl34","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 5","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"silhouette 3","parent":8,"sr":1,"ks":{"o":{"a":1,"k":[{"t":121,"s":[0],"h":1},{"t":126.641,"s":[33],"h":1},{"t":135.664,"s":[0],"h":1},{"t":141.305,"s":[33],"h":1},{"t":149.19921875,"s":[0],"h":1}]},"p":{"a":0,"k":[32,201,0]},"a":{"a":0,"k":[7,201,0]},"s":{"a":0,"k":[105.096,105.096,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":102,"s":[{"i":[[0.005,0.035],[35.501,24.537],[8.215,26.577],[-2.884,6.128],[-2.782,2.463],[0,0],[20.779,7.732],[62.819,0],[0.266,0],[0,0],[-7.732,-77.315],[-12.564,0.966],[-31.677,-28.053],[-2.577,-5.476],[4.435,-14.348],[32.859,-22.711],[0.966,-6.765]],"o":[[-0.966,-6.765],[-32.859,-22.711],[-4.435,-14.348],[2.577,-5.476],[31.677,-28.053],[12.564,0.966],[7.732,-77.315],[0.267,0],[0,0],[-62.819,0],[-20.778,7.732],[0,0],[2.782,2.463],[2.884,6.128],[-8.215,26.577],[-35.501,24.537],[-0.01,0.071]],"v":[[203.566,201.248],[164.425,134.08],[52.801,91.074],[51.835,54.188],[60.855,42.59],[97.258,-23.45],[99.674,-71.772],[4.479,-195.476],[5.143,-195.476],[5.867,-195.476],[-89.327,-71.772],[-86.911,-23.45],[-50.508,42.59],[-41.488,54.188],[-42.455,91.074],[-154.079,134.08],[-193.219,201.248]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":112,"s":[{"i":[[0.005,0.035],[35.501,24.537],[8.215,26.577],[-1.93,6.492],[-2.38,2.853],[0,0],[21.704,4.521],[62.105,-9.44],[0.263,-0.04],[0,0],[-19.262,-75.276],[-12.276,2.843],[-35.533,-22.975],[-3.371,-5.027],[4.435,-14.348],[32.859,-22.711],[0.966,-6.765]],"o":[[-0.966,-6.765],[-32.859,-22.711],[-4.435,-14.348],[1.725,-5.802],[27.102,-32.495],[12.566,-0.932],[-3.974,-77.599],[0.264,-0.04],[0,0],[-62.105,9.44],[-19.381,10.766],[0,0],[3.12,2.017],[3.772,5.625],[-8.215,26.577],[-35.501,24.537],[-0.01,0.071]],"v":[[203.566,201.248],[164.425,134.08],[52.801,91.074],[52.099,46.942],[59.274,34.121],[85.34,-36.639],[80.467,-84.776],[-32.235,-192.771],[-31.58,-192.871],[-30.863,-192.979],[-106.388,-56.375],[-96.738,-8.965],[-50.825,50.855],[-40.164,60.966],[-42.455,91.074],[-154.079,134.08],[-193.219,201.248]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":186,"s":[{"i":[[0.005,0.035],[35.501,24.537],[8.215,26.577],[-1.93,6.492],[-2.38,2.853],[0,0],[21.704,4.521],[62.105,-9.44],[0.263,-0.04],[0,0],[-19.262,-75.276],[-12.276,2.843],[-35.533,-22.975],[-3.371,-5.027],[4.435,-14.348],[32.859,-22.711],[0.966,-6.765]],"o":[[-0.966,-6.765],[-32.859,-22.711],[-4.435,-14.348],[1.725,-5.802],[27.102,-32.495],[12.566,-0.932],[-3.974,-77.599],[0.264,-0.04],[0,0],[-62.105,9.44],[-19.381,10.766],[0,0],[3.12,2.017],[3.772,5.625],[-8.215,26.577],[-35.501,24.537],[-0.01,0.071]],"v":[[203.566,201.248],[164.425,134.08],[52.801,91.074],[52.099,46.942],[59.274,34.121],[85.34,-36.639],[80.467,-84.776],[-32.235,-192.771],[-31.58,-192.871],[-30.863,-192.979],[-106.388,-56.375],[-96.738,-8.965],[-50.825,50.855],[-40.164,60.966],[-42.455,91.074],[-154.079,134.08],[-193.219,201.248]],"c":true}]},{"t":196,"s":[{"i":[[0.005,0.035],[35.501,24.537],[8.215,26.577],[-2.884,6.128],[-2.782,2.463],[0,0],[20.779,7.732],[62.819,0],[0.266,0],[0,0],[-7.732,-77.315],[-12.564,0.966],[-31.677,-28.053],[-2.577,-5.476],[4.435,-14.348],[32.859,-22.711],[0.966,-6.765]],"o":[[-0.966,-6.765],[-32.859,-22.711],[-4.435,-14.348],[2.577,-5.476],[31.677,-28.053],[12.564,0.966],[7.732,-77.315],[0.267,0],[0,0],[-62.819,0],[-20.778,7.732],[0,0],[2.782,2.463],[2.884,6.128],[-8.215,26.577],[-35.501,24.537],[-0.01,0.071]],"v":[[203.566,201.248],[164.425,134.08],[52.801,91.074],[51.835,54.188],[60.855,42.59],[97.258,-23.45],[99.674,-71.772],[4.479,-195.476],[5.143,-195.476],[5.867,-195.476],[-89.327,-71.772],[-86.911,-23.45],[-50.508,42.59],[-41.488,54.188],[-42.455,91.074],[-154.079,134.08],[-193.219,201.248]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0.034645940743,0.173816680908,0.34128370098,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,4]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 5","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0}]} \ No newline at end of file diff --git a/app/src/main/java/com/rosetta/messenger/RosettaApplication.kt b/app/src/main/java/com/rosetta/messenger/RosettaApplication.kt index 2186fa2..799ded2 100644 --- a/app/src/main/java/com/rosetta/messenger/RosettaApplication.kt +++ b/app/src/main/java/com/rosetta/messenger/RosettaApplication.kt @@ -1,6 +1,7 @@ package com.rosetta.messenger import android.app.Application +import com.airbnb.lottie.L import com.rosetta.messenger.data.DraftManager import com.rosetta.messenger.utils.CrashReportManager @@ -16,6 +17,8 @@ class RosettaApplication : Application() { override fun onCreate() { super.onCreate() + // Убираем красную букву "L" от Lottie + L.setTraceEnabled(false) // Инициализируем crash reporter initCrashReporting() diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/attach/AttachAlertAvatarLayout.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/attach/AttachAlertAvatarLayout.kt index 6cab029..7ee54c4 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/attach/AttachAlertAvatarLayout.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/attach/AttachAlertAvatarLayout.kt @@ -4,6 +4,7 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.* import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -11,7 +12,11 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.rosetta.messenger.ui.icons.TelegramIcons +import com.airbnb.lottie.compose.LottieAnimation +import com.airbnb.lottie.compose.LottieCompositionSpec +import com.airbnb.lottie.compose.LottieConstants +import com.airbnb.lottie.compose.animateLottieCompositionAsState +import com.airbnb.lottie.compose.rememberLottieComposition import com.rosetta.messenger.ui.onboarding.PrimaryBlue /** @@ -27,6 +32,12 @@ internal fun AttachAlertAvatarLayout( val textColor = if (isDarkTheme) Color.White else Color.Black val secondaryTextColor = Color(0xFF8E8E93) + val composition by rememberLottieComposition(LottieCompositionSpec.Asset("lottie/avatar.json")) + val progress by animateLottieCompositionAsState( + composition = composition, + iterations = LottieConstants.IterateForever + ) + Box( modifier = modifier.fillMaxWidth(), contentAlignment = Alignment.Center @@ -35,11 +46,10 @@ internal fun AttachAlertAvatarLayout( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier.padding(32.dp) ) { - Icon( - painter = TelegramIcons.Contact, - contentDescription = null, - tint = PrimaryBlue, - modifier = Modifier.size(72.dp) + LottieAnimation( + composition = composition, + progress = { progress }, + modifier = Modifier.size(100.dp) ) Spacer(modifier = Modifier.height(20.dp)) Text( diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/attach/AttachAlertFileLayout.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/attach/AttachAlertFileLayout.kt index f376948..0f74285 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/attach/AttachAlertFileLayout.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/attach/AttachAlertFileLayout.kt @@ -14,7 +14,6 @@ import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack -import androidx.compose.material.icons.filled.Search import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment @@ -106,8 +105,6 @@ internal fun AttachAlertFileLayout( var currentDir by remember { mutableStateOf(null) } var currentTitle by remember { mutableStateOf("Select File") } var history by remember { mutableStateOf(listOf()) } - var searchQuery by remember { mutableStateOf("") } - var isSearching by remember { mutableStateOf(false) } // ── Gallery mode state ── var showGallery by remember { mutableStateOf(false) } @@ -127,11 +124,8 @@ internal fun AttachAlertFileLayout( } else emptyList() } - // ── Search filter ── - val displayedRecentFiles = if (searchQuery.isBlank()) recentFiles - else recentFiles.filter { it.name.contains(searchQuery, ignoreCase = true) } - val displayedDirContents = if (searchQuery.isBlank()) dirContents - else dirContents.filter { it.name.contains(searchQuery, ignoreCase = true) } + val displayedRecentFiles = recentFiles + val displayedDirContents = dirContents // ── Back handler ── val isAtRoot = currentDir == null @@ -146,8 +140,6 @@ internal fun AttachAlertFileLayout( currentDir = null currentTitle = "Select File" } - searchQuery = "" - isSearching = false } fun navigateToDir(dir: File) { @@ -155,8 +147,6 @@ internal fun AttachAlertFileLayout( history = history + HistoryEntry(currentDir ?: Environment.getExternalStorageDirectory(), currentTitle) currentDir = dir currentTitle = dir.name - searchQuery = "" - isSearching = false } if (showGallery) { @@ -182,8 +172,6 @@ internal fun AttachAlertFileLayout( FilePickerTopBar( title = displayTitle, showBack = showGallery || !isAtRoot, - isSearching = isSearching, - searchQuery = searchQuery, onBackClick = { if (showGallery) { showGallery = false @@ -192,8 +180,6 @@ internal fun AttachAlertFileLayout( navigateBack() } }, - onSearchToggle = { isSearching = !isSearching; if (!isSearching) searchQuery = "" }, - onSearchQueryChange = { searchQuery = it }, textColor = textColor, bgColor = bgColor ) @@ -357,7 +343,7 @@ internal fun AttachAlertFileLayout( } ) } - } else if (searchQuery.isBlank()) { + } else { item(key = "recent_empty_divider") { Spacer( modifier = Modifier @@ -390,7 +376,7 @@ internal fun AttachAlertFileLayout( contentAlignment = Alignment.Center ) { Text( - text = if (searchQuery.isNotBlank()) "No results" else "Empty folder", + text = "Empty folder", color = secondaryText, fontSize = 15.sp ) @@ -437,11 +423,7 @@ internal fun AttachAlertFileLayout( private fun FilePickerTopBar( title: String, showBack: Boolean, - isSearching: Boolean, - searchQuery: String, onBackClick: () -> Unit, - onSearchToggle: () -> Unit, - onSearchQueryChange: (String) -> Unit, textColor: Color, bgColor: Color ) { @@ -465,44 +447,15 @@ private fun FilePickerTopBar( Spacer(modifier = Modifier.width(12.dp)) } - if (isSearching) { - TextField( - value = searchQuery, - onValueChange = onSearchQueryChange, - placeholder = { - Text("Search", color = Color(0xFF8E8E93), fontSize = 16.sp) - }, - singleLine = true, - colors = TextFieldDefaults.colors( - focusedContainerColor = Color.Transparent, - unfocusedContainerColor = Color.Transparent, - focusedIndicatorColor = Color.Transparent, - unfocusedIndicatorColor = Color.Transparent, - cursorColor = PrimaryBlue, - focusedTextColor = textColor, - unfocusedTextColor = textColor - ), - modifier = Modifier.weight(1f) - ) - } else { - Text( - text = title, - color = textColor, - fontSize = 18.sp, - fontWeight = FontWeight.SemiBold, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - modifier = Modifier.weight(1f) - ) - } - - IconButton(onClick = onSearchToggle) { - Icon( - imageVector = Icons.Default.Search, - contentDescription = "Search", - tint = textColor - ) - } + Text( + text = title, + color = textColor, + fontSize = 18.sp, + fontWeight = FontWeight.SemiBold, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + modifier = Modifier.weight(1f) + ) } } diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/components/AttachmentComponents.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/components/AttachmentComponents.kt index a267a20..f2c359c 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/components/AttachmentComponents.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/components/AttachmentComponents.kt @@ -675,26 +675,13 @@ fun ImageCollage( val totalRows = rows.size rows.forEachIndexed { rowIndex, rowItems -> val isLastRow = rowIndex == totalRows - 1 - val isIncompleteRow = rowItems.size < 3 Row( modifier = Modifier.fillMaxWidth(), - horizontalArrangement = if (isIncompleteRow) - Arrangement.Start - else - Arrangement.spacedBy(spacing) + horizontalArrangement = Arrangement.spacedBy(spacing) ) { rowItems.forEachIndexed { index, attachment -> val isLastItem = isLastRow && index == rowItems.size - 1 - // Для неполных рядов используем фиксированную ширину = 1/3 от общей - val cellModifier = if (isIncompleteRow) { - Modifier - .fillMaxWidth(1f / 3f) - .padding(end = if (index < rowItems.size - 1) spacing else 0.dp) - .aspectRatio(1f) - } else { - Modifier.weight(1f).aspectRatio(1f) - } - Box(modifier = cellModifier) { + Box(modifier = Modifier.weight(1f).aspectRatio(1f)) { ImageAttachment( attachment = attachment, chachaKey = chachaKey,