Browse Source

app: fix emoji picker due to recent changes

jkds 7 months ago
parent
commit
74b18df957

+ 1 - 5
bin/app/src/app/mod.rs

@@ -63,11 +63,7 @@ pub struct App {
 }
 
 impl App {
-    pub fn new(
-        sg_root: SceneNodePtr,
-        render_api: RenderApi,
-        ex: ExecutorPtr,
-    ) -> Arc<Self> {
+    pub fn new(sg_root: SceneNodePtr, render_api: RenderApi, ex: ExecutorPtr) -> Arc<Self> {
         Arc::new(Self { sg_root, ex, render_api, tasks: SyncMutex::new(vec![]) })
     }
 

+ 1 - 2
bin/app/src/ui/chatview/page.rs

@@ -512,8 +512,7 @@ impl FileMessage {
         for layout in layouts {
             all_instrs.push(DrawInstruction::Move(Point::new(0., -line_height)));
 
-            let instrs =
-                text::render_layout(&layout, render_api, gfxtag!("chatview_filemsg_text"));
+            let instrs = text::render_layout(&layout, render_api, gfxtag!("chatview_filemsg_text"));
             all_instrs.extend(instrs);
         }
 

+ 576 - 581
bin/app/src/ui/emoji_picker/default.rs

@@ -16,584 +16,579 @@
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 
-pub fn create_default_emoji_list() -> Vec<String> {
-    vec![
-        "๐Ÿ˜‚",
-        "โค๏ธ",
-        "๐Ÿ˜",
-        "๐Ÿคซ",
-        "๐Ÿ˜†",
-        "๐ŸŒž",
-        "๐ŸŒ˜",
-        "๐Ÿ‘",
-        "๐Ÿ˜ญ",
-        "๐Ÿ˜ณ",
-        "๐Ÿค‘",
-        "๐Ÿ™",
-        "๐Ÿค",
-        "๐Ÿ‘",
-        "๐ŸคŒ",
-        "๐Ÿคท",
-        "๐Ÿฆ„",
-        "๐Ÿ”ฅ",
-        "๐ŸŽ‰",
-        "โšก",
-        "๐Ÿ—ฟ",
-        "โœจ",
-        "๐Ÿ’Ž",
-        "๐Ÿ˜€",
-        "๐Ÿ˜ƒ",
-        "๐Ÿ˜„",
-        "๐Ÿ˜…",
-        "๐Ÿคฃ",
-        "๐Ÿ™‚",
-        "๐Ÿ™ƒ",
-        "๐Ÿซ ",
-        "๐Ÿ˜‰",
-        "๐Ÿ˜Š",
-        "๐Ÿ˜‡",
-        "๐Ÿฅฐ",
-        "๐Ÿ˜",
-        "๐Ÿคฉ",
-        "๐Ÿ˜˜",
-        "๐Ÿ˜—",
-        "๐Ÿ˜š",
-        "๐Ÿ˜™",
-        "๐Ÿฅฒ",
-        "๐Ÿ˜‹",
-        "๐Ÿ˜›",
-        "๐Ÿ˜œ",
-        "๐Ÿคช",
-        "๐Ÿ˜",
-        "๐Ÿค—",
-        "๐Ÿคญ",
-        "๐Ÿซข",
-        "๐Ÿซฃ",
-        "๐Ÿค”",
-        "๐Ÿซก",
-        "๐Ÿค",
-        "๐Ÿคจ",
-        "๐Ÿ˜",
-        "๐Ÿ˜‘",
-        "๐Ÿ˜ถ",
-        "๐Ÿ˜",
-        "๐Ÿ˜’",
-        "๐Ÿ™„",
-        "๐Ÿ˜ฌ",
-        "๐Ÿคฅ",
-        "๐Ÿซจ",
-        "๐Ÿ˜Œ",
-        "๐Ÿ˜”",
-        "๐Ÿ˜ช",
-        "๐Ÿคค",
-        "๐Ÿ˜ด",
-        "๐Ÿ˜ท",
-        "๐Ÿค’",
-        "๐Ÿค•",
-        "๐Ÿคข",
-        "๐Ÿคฎ",
-        "๐Ÿคง",
-        "๐Ÿฅต",
-        "๐Ÿฅถ",
-        "๐Ÿฅด",
-        "๐Ÿ˜ต",
-        "๐Ÿคฏ",
-        "๐Ÿค ",
-        "๐Ÿฅณ",
-        "๐Ÿฅธ",
-        "๐Ÿ˜Ž",
-        "๐Ÿค“",
-        "๐Ÿง",
-        "๐Ÿ˜•",
-        "๐Ÿซค",
-        "๐Ÿ˜Ÿ",
-        "๐Ÿ™",
-        "๐Ÿ˜ฎ",
-        "๐Ÿ˜ฏ",
-        "๐Ÿ˜ฒ",
-        "๐Ÿฅบ",
-        "๐Ÿฅน",
-        "๐Ÿ˜ฆ",
-        "๐Ÿ˜ง",
-        "๐Ÿ˜จ",
-        "๐Ÿ˜ฐ",
-        "๐Ÿ˜ฅ",
-        "๐Ÿ˜ข",
-        "๐Ÿ˜ฑ",
-        "๐Ÿ˜–",
-        "๐Ÿ˜ฃ",
-        "๐Ÿ˜ž",
-        "๐Ÿ˜“",
-        "๐Ÿ˜ฉ",
-        "๐Ÿ˜ซ",
-        "๐Ÿฅฑ",
-        "๐Ÿ˜ค",
-        "๐Ÿ˜ก",
-        "๐Ÿ˜ ",
-        "๐Ÿคฌ",
-        "๐Ÿ˜ˆ",
-        "๐Ÿ‘ฟ",
-        "๐Ÿ’€",
-        "๐Ÿ’ฉ",
-        "๐Ÿคก",
-        "๐Ÿ‘น",
-        "๐Ÿ‘บ",
-        "๐Ÿ‘ป",
-        "๐Ÿ‘ฝ",
-        "๐Ÿ‘พ",
-        "๐Ÿค–",
-        "๐Ÿ˜บ",
-        "๐Ÿ˜ธ",
-        "๐Ÿ˜น",
-        "๐Ÿ˜ป",
-        "๐Ÿ˜ผ",
-        "๐Ÿ˜ฝ",
-        "๐Ÿ™€",
-        "๐Ÿ˜ฟ",
-        "๐Ÿ˜พ",
-        "๐Ÿ™ˆ",
-        "๐Ÿ™‰",
-        "๐Ÿ™Š",
-        "๐Ÿ’˜",
-        "๐Ÿ’",
-        "๐Ÿ’–",
-        "๐Ÿ’—",
-        "๐Ÿ’“",
-        "๐Ÿ’ž",
-        "๐Ÿ’•",
-        "๐Ÿ’”",
-        "๐Ÿฉท",
-        "๐Ÿงก",
-        "๐Ÿ’›",
-        "๐Ÿ’š",
-        "๐Ÿ’™",
-        "๐Ÿฉต",
-        "๐Ÿ’œ",
-        "๐ŸคŽ",
-        "๐Ÿ–ค",
-        "๐Ÿฉถ",
-        "๐Ÿค",
-        "๐Ÿ’‹",
-        "๐Ÿ’ฏ",
-        "๐Ÿ’ข",
-        "๐Ÿ’ฅ",
-        "๐Ÿ’ซ",
-        "๐Ÿ’ฆ",
-        "๐Ÿ’จ",
-        "๐Ÿ’ฌ",
-        "๐Ÿ—จ",
-        "๐Ÿ—ฏ",
-        "๐Ÿ’ญ",
-        "๐Ÿ’ค",
-        "๐Ÿ‘‹",
-        "๐Ÿคš",
-        "โœ‹",
-        "๐Ÿ––",
-        "๐Ÿซฑ",
-        "๐Ÿซฒ",
-        "๐Ÿซณ",
-        "๐Ÿซด",
-        "๐Ÿซท",
-        "๐Ÿซธ",
-        "๐Ÿ‘Œ",
-        "๐Ÿค",
-        "๐Ÿคž",
-        "๐Ÿซฐ",
-        "๐ŸคŸ",
-        "๐Ÿค˜",
-        "๐Ÿค™",
-        "๐Ÿ‘ˆ",
-        "๐Ÿ‘‰",
-        "๐Ÿ‘†",
-        "๐Ÿ–•",
-        "๐Ÿ‘‡",
-        "๐Ÿซต",
-        "๐Ÿ‘Ž",
-        "โœŠ",
-        "๐Ÿ‘Š",
-        "๐Ÿค›",
-        "๐Ÿคœ",
-        "๐Ÿ™Œ",
-        "๐Ÿซถ",
-        "๐Ÿ‘",
-        "๐Ÿคฒ",
-        "๐Ÿ’…",
-        "๐Ÿคณ",
-        "๐Ÿ’ช",
-        "๐Ÿฆพ",
-        "๐Ÿฆฟ",
-        "๐Ÿฆต",
-        "๐Ÿฆถ",
-        "๐Ÿ‘‚",
-        "๐Ÿฆป",
-        "๐Ÿ‘ƒ",
-        "๐Ÿง ",
-        "๐Ÿซ€",
-        "๐Ÿซ",
-        "๐Ÿฆท",
-        "๐Ÿฆด",
-        "๐Ÿ‘€",
-        "๐Ÿ‘",
-        "๐Ÿ‘…",
-        "๐Ÿ‘„",
-        "๐Ÿซฆ",
-        "๐Ÿ‘ถ",
-        "๐Ÿง’",
-        "๐Ÿ‘ฆ",
-        "๐Ÿ‘ง",
-        "๐Ÿง‘",
-        "๐Ÿ‘ฑ",
-        "๐Ÿ‘จ",
-        "๐Ÿง”",
-        "๐Ÿ‘ฉ",
-        "๐Ÿง“",
-        "๐Ÿ‘ด",
-        "๐Ÿ‘ต",
-        "๐Ÿ™",
-        "๐Ÿ™Ž",
-        "๐Ÿ™…",
-        "๐Ÿ™†",
-        "๐Ÿ’",
-        "๐Ÿ™‹",
-        "๐Ÿง",
-        "๐Ÿ™‡",
-        "๐Ÿคฆ",
-        "๐Ÿ‘ฎ",
-        "๐Ÿ’‚",
-        "๐Ÿฅท",
-        "๐Ÿ‘ท",
-        "๐Ÿซ…",
-        "๐Ÿคด",
-        "๐Ÿ‘ธ",
-        "๐Ÿ‘ณ",
-        "๐Ÿ‘ฒ",
-        "๐Ÿง•",
-        "๐Ÿคต",
-        "๐Ÿ‘ฐ",
-        "๐Ÿคฐ",
-        "๐Ÿซƒ",
-        "๐Ÿซ„",
-        "๐Ÿคฑ",
-        "๐Ÿ‘ผ",
-        "๐ŸŽ…",
-        "๐Ÿคถ",
-        "๐Ÿฆธ",
-        "๐Ÿฆน",
-        "๐Ÿง™",
-        "๐Ÿงš",
-        "๐Ÿง›",
-        "๐Ÿงœ",
-        "๐Ÿง",
-        "๐Ÿงž",
-        "๐ŸงŸ",
-        "๐ŸงŒ",
-        "๐Ÿ’†",
-        "๐Ÿ’‡",
-        "๐Ÿšถ",
-        "๐Ÿง",
-        "๐ŸงŽ",
-        "๐Ÿƒ",
-        "๐Ÿ’ƒ",
-        "๐Ÿ•บ",
-        "๐Ÿ•ด",
-        "๐Ÿ‘ฏ",
-        "๐Ÿง–",
-        "๐Ÿง—",
-        "๐Ÿคบ",
-        "๐Ÿ‡",
-        "โ›ท",
-        "๐Ÿ‚",
-        "๐ŸŒ",
-        "๐Ÿ„",
-        "๐Ÿšฃ",
-        "๐ŸŠ",
-        "โ›น",
-        "๐Ÿ‹",
-        "๐Ÿšด",
-        "๐Ÿšต",
-        "๐Ÿคธ",
-        "๐Ÿคผ",
-        "๐Ÿคฝ",
-        "๐Ÿคพ",
-        "๐Ÿคน",
-        "๐Ÿง˜",
-        "๐Ÿ›€",
-        "๐Ÿ›Œ",
-        "๐Ÿ‘ญ",
-        "๐Ÿ‘ซ",
-        "๐Ÿ‘ฌ",
-        "๐Ÿ’",
-        "๐Ÿ’‘",
-        "๐Ÿ—ฃ",
-        "๐Ÿ‘ค",
-        "๐Ÿ‘ฅ",
-        "๐Ÿซ‚",
-        "๐Ÿ‘ช",
-        "๐Ÿ‘ฃ",
-        "๐Ÿต",
-        "๐Ÿ’",
-        "๐Ÿฆ",
-        "๐Ÿฆง",
-        "๐Ÿถ",
-        "๐Ÿ•",
-        "๐Ÿฆฎ",
-        "๐Ÿฉ",
-        "๐Ÿบ",
-        "๐ŸฆŠ",
-        "๐Ÿฆ",
-        "๐Ÿฑ",
-        "๐Ÿˆ",
-        "๐Ÿฆ",
-        "๐Ÿฏ",
-        "๐Ÿ…",
-        "๐Ÿ†",
-        "๐Ÿด",
-        "๐ŸซŽ",
-        "๐Ÿซ",
-        "๐ŸŽ",
-        "๐Ÿฆ„",
-        "๐Ÿฆ“",
-        "๐ŸฆŒ",
-        "๐Ÿฆฌ",
-        "๐Ÿฎ",
-        "๐Ÿ‚",
-        "๐Ÿƒ",
-        "๐Ÿ„",
-        "๐Ÿท",
-        "๐Ÿ–",
-        "๐Ÿ—",
-        "๐Ÿฝ",
-        "๐Ÿ",
-        "๐Ÿ‘",
-        "๐Ÿ",
-        "๐Ÿช",
-        "๐Ÿซ",
-        "๐Ÿฆ™",
-        "๐Ÿฆ’",
-        "๐Ÿ˜",
-        "๐Ÿฆฃ",
-        "๐Ÿฆ",
-        "๐Ÿฆ›",
-        "๐Ÿญ",
-        "๐Ÿ",
-        "๐Ÿ€",
-        "๐Ÿน",
-        "๐Ÿฐ",
-        "๐Ÿ‡",
-        "๐Ÿฟ",
-        "๐Ÿฆซ",
-        "๐Ÿฆ”",
-        "๐Ÿฆ‡",
-        "๐Ÿป",
-        "๐Ÿจ",
-        "๐Ÿผ",
-        "๐Ÿฆฅ",
-        "๐Ÿฆฆ",
-        "๐Ÿฆจ",
-        "๐Ÿฆ˜",
-        "๐Ÿฆก",
-        "๐Ÿพ",
-        "๐Ÿฆƒ",
-        "๐Ÿ”",
-        "๐Ÿ“",
-        "๐Ÿฃ",
-        "๐Ÿค",
-        "๐Ÿฅ",
-        "๐Ÿฆ",
-        "๐Ÿง",
-        "๐Ÿ•Š",
-        "๐Ÿฆ…",
-        "๐Ÿฆ†",
-        "๐Ÿฆข",
-        "๐Ÿฆ‰",
-        "๐Ÿฆค",
-        "๐Ÿชถ",
-        "๐Ÿฆฉ",
-        "๐Ÿฆš",
-        "๐Ÿฆœ",
-        "๐Ÿชฝ",
-        "๐Ÿชฟ",
-        "๐Ÿธ",
-        "๐ŸŠ",
-        "๐Ÿข",
-        "๐ŸฆŽ",
-        "๐Ÿ",
-        "๐Ÿฒ",
-        "๐Ÿ‰",
-        "๐Ÿฆ•",
-        "๐Ÿฆ–",
-        "๐Ÿณ",
-        "๐Ÿ‹",
-        "๐Ÿฌ",
-        "๐Ÿฆญ",
-        "๐ŸŸ",
-        "๐Ÿ ",
-        "๐Ÿก",
-        "๐Ÿฆˆ",
-        "๐Ÿ™",
-        "๐Ÿš",
-        "๐Ÿชธ",
-        "๐Ÿชผ",
-        "๐Ÿฆ€",
-        "๐Ÿฆž",
-        "๐Ÿฆ",
-        "๐Ÿฆ‘",
-        "๐Ÿฆช",
-        "๐ŸŒ",
-        "๐Ÿฆ‹",
-        "๐Ÿ›",
-        "๐Ÿœ",
-        "๐Ÿ",
-        "๐Ÿชฒ",
-        "๐Ÿž",
-        "๐Ÿฆ—",
-        "๐Ÿชณ",
-        "๐Ÿ•ท",
-        "๐Ÿ•ธ",
-        "๐Ÿฆ‚",
-        "๐ŸฆŸ",
-        "๐Ÿชฐ",
-        "๐Ÿชฑ",
-        "๐Ÿฆ ",
-        "๐Ÿ’",
-        "๐ŸŒธ",
-        "๐Ÿ’ฎ",
-        "๐Ÿชท",
-        "๐Ÿต",
-        "๐ŸŒน",
-        "๐Ÿฅ€",
-        "๐ŸŒบ",
-        "๐ŸŒป",
-        "๐ŸŒผ",
-        "๐ŸŒท",
-        "๐Ÿชป",
-        "๐ŸŒฑ",
-        "๐Ÿชด",
-        "๐ŸŒฒ",
-        "๐ŸŒณ",
-        "๐ŸŒด",
-        "๐ŸŒต",
-        "๐ŸŒพ",
-        "๐ŸŒฟ",
-        "โ˜˜",
-        "๐Ÿ€",
-        "๐Ÿ",
-        "๐Ÿ‚",
-        "๐Ÿƒ",
-        "๐Ÿชน",
-        "๐Ÿชบ",
-        "๐Ÿ„",
-        "๐Ÿ‡",
-        "๐Ÿˆ",
-        "๐Ÿ‰",
-        "๐ŸŠ",
-        "๐Ÿ‹",
-        "๐ŸŒ",
-        "๐Ÿ",
-        "๐Ÿฅญ",
-        "๐ŸŽ",
-        "๐Ÿ",
-        "๐Ÿ",
-        "๐Ÿ‘",
-        "๐Ÿ’",
-        "๐Ÿ“",
-        "๐Ÿซ",
-        "๐Ÿฅ",
-        "๐Ÿ…",
-        "๐Ÿซ’",
-        "๐Ÿฅฅ",
-        "๐Ÿฅ‘",
-        "๐Ÿ†",
-        "๐Ÿฅ”",
-        "๐Ÿฅ•",
-        "๐ŸŒฝ",
-        "๐ŸŒถ",
-        "๐Ÿซ‘",
-        "๐Ÿฅ’",
-        "๐Ÿฅฌ",
-        "๐Ÿฅฆ",
-        "๐Ÿง„",
-        "๐Ÿง…",
-        "๐Ÿฅœ",
-        "๐Ÿซ˜",
-        "๐ŸŒฐ",
-        "๐Ÿซš",
-        "๐Ÿซ›",
-        "๐Ÿž",
-        "๐Ÿฅ",
-        "๐Ÿฅ–",
-        "๐Ÿซ“",
-        "๐Ÿฅจ",
-        "๐Ÿฅฏ",
-        "๐Ÿฅž",
-        "๐Ÿง‡",
-        "๐Ÿง€",
-        "๐Ÿ–",
-        "๐Ÿ—",
-        "๐Ÿฅฉ",
-        "๐Ÿฅ“",
-        "๐Ÿ”",
-        "๐ŸŸ",
-        "๐Ÿ•",
-        "๐ŸŒญ",
-        "๐Ÿฅช",
-        "๐ŸŒฎ",
-        "๐ŸŒฏ",
-        "๐Ÿซ”",
-        "๐Ÿฅ™",
-        "๐Ÿง†",
-        "๐Ÿฅš",
-        "๐Ÿณ",
-        "๐Ÿฅ˜",
-        "๐Ÿฒ",
-        "๐Ÿซ•",
-        "๐Ÿฅฃ",
-        "๐Ÿฅ—",
-        "๐Ÿฟ",
-        "๐Ÿงˆ",
-        "๐Ÿง‚",
-        "๐Ÿฅซ",
-        "๐Ÿฑ",
-        "๐Ÿ˜",
-        "๐Ÿ™",
-        "๐Ÿš",
-        "๐Ÿ›",
-        "๐Ÿœ",
-        "๐Ÿ",
-        "๐Ÿ ",
-        "๐Ÿข",
-        "๐Ÿฃ",
-        "๐Ÿค",
-        "๐Ÿฅ",
-        "๐Ÿฅฎ",
-        "๐Ÿก",
-        "๐ŸฅŸ",
-        "๐Ÿฅ ",
-        "๐Ÿฅก",
-        "๐Ÿฆ",
-        "๐Ÿง",
-        "๐Ÿจ",
-        "๐Ÿฉ",
-        "๐Ÿช",
-        "๐ŸŽ‚",
-        "๐Ÿฐ",
-        "๐Ÿง",
-        "๐Ÿฅง",
-        "๐Ÿซ",
-        "๐Ÿฌ",
-        "๐Ÿญ",
-        "๐Ÿฎ",
-        "๐Ÿฏ",
-        "๐Ÿผ",
-        "๐Ÿฅ›",
-        "โ˜•",
-        "๐Ÿซ–",
-        "๐Ÿต",
-        "๐Ÿถ",
-        "\u{01f3f3}\u{fe0f}\u{200d}\u{26a7}\u{fe0f}",
-        "\u{01f44d}\u{01f3fe}",
-    ]
-    .into_iter()
-    .map(|s| s.to_string())
-    .collect()
-}
+pub static DEFAULT_EMOJI_LIST: &[&str] = &[
+    "๐Ÿ˜‚",
+    "โค๏ธ",
+    "๐Ÿ˜",
+    "๐Ÿคซ",
+    "๐Ÿ˜†",
+    "๐ŸŒž",
+    "๐ŸŒ˜",
+    "๐Ÿ‘",
+    "๐Ÿ˜ญ",
+    "๐Ÿ˜ณ",
+    "๐Ÿค‘",
+    "๐Ÿ™",
+    "๐Ÿค",
+    "๐Ÿ‘",
+    "๐ŸคŒ",
+    "๐Ÿคท",
+    "๐Ÿฆ„",
+    "๐Ÿ”ฅ",
+    "๐ŸŽ‰",
+    "โšก",
+    "๐Ÿ—ฟ",
+    "โœจ",
+    "๐Ÿ’Ž",
+    "๐Ÿ˜€",
+    "๐Ÿ˜ƒ",
+    "๐Ÿ˜„",
+    "๐Ÿ˜…",
+    "๐Ÿคฃ",
+    "๐Ÿ™‚",
+    "๐Ÿ™ƒ",
+    "๐Ÿซ ",
+    "๐Ÿ˜‰",
+    "๐Ÿ˜Š",
+    "๐Ÿ˜‡",
+    "๐Ÿฅฐ",
+    "๐Ÿ˜",
+    "๐Ÿคฉ",
+    "๐Ÿ˜˜",
+    "๐Ÿ˜—",
+    "๐Ÿ˜š",
+    "๐Ÿ˜™",
+    "๐Ÿฅฒ",
+    "๐Ÿ˜‹",
+    "๐Ÿ˜›",
+    "๐Ÿ˜œ",
+    "๐Ÿคช",
+    "๐Ÿ˜",
+    "๐Ÿค—",
+    "๐Ÿคญ",
+    "๐Ÿซข",
+    "๐Ÿซฃ",
+    "๐Ÿค”",
+    "๐Ÿซก",
+    "๐Ÿค",
+    "๐Ÿคจ",
+    "๐Ÿ˜",
+    "๐Ÿ˜‘",
+    "๐Ÿ˜ถ",
+    "๐Ÿ˜",
+    "๐Ÿ˜’",
+    "๐Ÿ™„",
+    "๐Ÿ˜ฌ",
+    "๐Ÿคฅ",
+    "๐Ÿซจ",
+    "๐Ÿ˜Œ",
+    "๐Ÿ˜”",
+    "๐Ÿ˜ช",
+    "๐Ÿคค",
+    "๐Ÿ˜ด",
+    "๐Ÿ˜ท",
+    "๐Ÿค’",
+    "๐Ÿค•",
+    "๐Ÿคข",
+    "๐Ÿคฎ",
+    "๐Ÿคง",
+    "๐Ÿฅต",
+    "๐Ÿฅถ",
+    "๐Ÿฅด",
+    "๐Ÿ˜ต",
+    "๐Ÿคฏ",
+    "๐Ÿค ",
+    "๐Ÿฅณ",
+    "๐Ÿฅธ",
+    "๐Ÿ˜Ž",
+    "๐Ÿค“",
+    "๐Ÿง",
+    "๐Ÿ˜•",
+    "๐Ÿซค",
+    "๐Ÿ˜Ÿ",
+    "๐Ÿ™",
+    "๐Ÿ˜ฎ",
+    "๐Ÿ˜ฏ",
+    "๐Ÿ˜ฒ",
+    "๐Ÿฅบ",
+    "๐Ÿฅน",
+    "๐Ÿ˜ฆ",
+    "๐Ÿ˜ง",
+    "๐Ÿ˜จ",
+    "๐Ÿ˜ฐ",
+    "๐Ÿ˜ฅ",
+    "๐Ÿ˜ข",
+    "๐Ÿ˜ฑ",
+    "๐Ÿ˜–",
+    "๐Ÿ˜ฃ",
+    "๐Ÿ˜ž",
+    "๐Ÿ˜“",
+    "๐Ÿ˜ฉ",
+    "๐Ÿ˜ซ",
+    "๐Ÿฅฑ",
+    "๐Ÿ˜ค",
+    "๐Ÿ˜ก",
+    "๐Ÿ˜ ",
+    "๐Ÿคฌ",
+    "๐Ÿ˜ˆ",
+    "๐Ÿ‘ฟ",
+    "๐Ÿ’€",
+    "๐Ÿ’ฉ",
+    "๐Ÿคก",
+    "๐Ÿ‘น",
+    "๐Ÿ‘บ",
+    "๐Ÿ‘ป",
+    "๐Ÿ‘ฝ",
+    "๐Ÿ‘พ",
+    "๐Ÿค–",
+    "๐Ÿ˜บ",
+    "๐Ÿ˜ธ",
+    "๐Ÿ˜น",
+    "๐Ÿ˜ป",
+    "๐Ÿ˜ผ",
+    "๐Ÿ˜ฝ",
+    "๐Ÿ™€",
+    "๐Ÿ˜ฟ",
+    "๐Ÿ˜พ",
+    "๐Ÿ™ˆ",
+    "๐Ÿ™‰",
+    "๐Ÿ™Š",
+    "๐Ÿ’˜",
+    "๐Ÿ’",
+    "๐Ÿ’–",
+    "๐Ÿ’—",
+    "๐Ÿ’“",
+    "๐Ÿ’ž",
+    "๐Ÿ’•",
+    "๐Ÿ’”",
+    "๐Ÿฉท",
+    "๐Ÿงก",
+    "๐Ÿ’›",
+    "๐Ÿ’š",
+    "๐Ÿ’™",
+    "๐Ÿฉต",
+    "๐Ÿ’œ",
+    "๐ŸคŽ",
+    "๐Ÿ–ค",
+    "๐Ÿฉถ",
+    "๐Ÿค",
+    "๐Ÿ’‹",
+    "๐Ÿ’ฏ",
+    "๐Ÿ’ข",
+    "๐Ÿ’ฅ",
+    "๐Ÿ’ซ",
+    "๐Ÿ’ฆ",
+    "๐Ÿ’จ",
+    "๐Ÿ’ฌ",
+    "๐Ÿ—จ",
+    "๐Ÿ—ฏ",
+    "๐Ÿ’ญ",
+    "๐Ÿ’ค",
+    "๐Ÿ‘‹",
+    "๐Ÿคš",
+    "โœ‹",
+    "๐Ÿ––",
+    "๐Ÿซฑ",
+    "๐Ÿซฒ",
+    "๐Ÿซณ",
+    "๐Ÿซด",
+    "๐Ÿซท",
+    "๐Ÿซธ",
+    "๐Ÿ‘Œ",
+    "๐Ÿค",
+    "๐Ÿคž",
+    "๐Ÿซฐ",
+    "๐ŸคŸ",
+    "๐Ÿค˜",
+    "๐Ÿค™",
+    "๐Ÿ‘ˆ",
+    "๐Ÿ‘‰",
+    "๐Ÿ‘†",
+    "๐Ÿ–•",
+    "๐Ÿ‘‡",
+    "๐Ÿซต",
+    "๐Ÿ‘Ž",
+    "โœŠ",
+    "๐Ÿ‘Š",
+    "๐Ÿค›",
+    "๐Ÿคœ",
+    "๐Ÿ™Œ",
+    "๐Ÿซถ",
+    "๐Ÿ‘",
+    "๐Ÿคฒ",
+    "๐Ÿ’…",
+    "๐Ÿคณ",
+    "๐Ÿ’ช",
+    "๐Ÿฆพ",
+    "๐Ÿฆฟ",
+    "๐Ÿฆต",
+    "๐Ÿฆถ",
+    "๐Ÿ‘‚",
+    "๐Ÿฆป",
+    "๐Ÿ‘ƒ",
+    "๐Ÿง ",
+    "๐Ÿซ€",
+    "๐Ÿซ",
+    "๐Ÿฆท",
+    "๐Ÿฆด",
+    "๐Ÿ‘€",
+    "๐Ÿ‘",
+    "๐Ÿ‘…",
+    "๐Ÿ‘„",
+    "๐Ÿซฆ",
+    "๐Ÿ‘ถ",
+    "๐Ÿง’",
+    "๐Ÿ‘ฆ",
+    "๐Ÿ‘ง",
+    "๐Ÿง‘",
+    "๐Ÿ‘ฑ",
+    "๐Ÿ‘จ",
+    "๐Ÿง”",
+    "๐Ÿ‘ฉ",
+    "๐Ÿง“",
+    "๐Ÿ‘ด",
+    "๐Ÿ‘ต",
+    "๐Ÿ™",
+    "๐Ÿ™Ž",
+    "๐Ÿ™…",
+    "๐Ÿ™†",
+    "๐Ÿ’",
+    "๐Ÿ™‹",
+    "๐Ÿง",
+    "๐Ÿ™‡",
+    "๐Ÿคฆ",
+    "๐Ÿ‘ฎ",
+    "๐Ÿ’‚",
+    "๐Ÿฅท",
+    "๐Ÿ‘ท",
+    "๐Ÿซ…",
+    "๐Ÿคด",
+    "๐Ÿ‘ธ",
+    "๐Ÿ‘ณ",
+    "๐Ÿ‘ฒ",
+    "๐Ÿง•",
+    "๐Ÿคต",
+    "๐Ÿ‘ฐ",
+    "๐Ÿคฐ",
+    "๐Ÿซƒ",
+    "๐Ÿซ„",
+    "๐Ÿคฑ",
+    "๐Ÿ‘ผ",
+    "๐ŸŽ…",
+    "๐Ÿคถ",
+    "๐Ÿฆธ",
+    "๐Ÿฆน",
+    "๐Ÿง™",
+    "๐Ÿงš",
+    "๐Ÿง›",
+    "๐Ÿงœ",
+    "๐Ÿง",
+    "๐Ÿงž",
+    "๐ŸงŸ",
+    "๐ŸงŒ",
+    "๐Ÿ’†",
+    "๐Ÿ’‡",
+    "๐Ÿšถ",
+    "๐Ÿง",
+    "๐ŸงŽ",
+    "๐Ÿƒ",
+    "๐Ÿ’ƒ",
+    "๐Ÿ•บ",
+    "๐Ÿ•ด",
+    "๐Ÿ‘ฏ",
+    "๐Ÿง–",
+    "๐Ÿง—",
+    "๐Ÿคบ",
+    "๐Ÿ‡",
+    "โ›ท",
+    "๐Ÿ‚",
+    "๐ŸŒ",
+    "๐Ÿ„",
+    "๐Ÿšฃ",
+    "๐ŸŠ",
+    "โ›น",
+    "๐Ÿ‹",
+    "๐Ÿšด",
+    "๐Ÿšต",
+    "๐Ÿคธ",
+    "๐Ÿคผ",
+    "๐Ÿคฝ",
+    "๐Ÿคพ",
+    "๐Ÿคน",
+    "๐Ÿง˜",
+    "๐Ÿ›€",
+    "๐Ÿ›Œ",
+    "๐Ÿ‘ญ",
+    "๐Ÿ‘ซ",
+    "๐Ÿ‘ฌ",
+    "๐Ÿ’",
+    "๐Ÿ’‘",
+    "๐Ÿ—ฃ",
+    "๐Ÿ‘ค",
+    "๐Ÿ‘ฅ",
+    "๐Ÿซ‚",
+    "๐Ÿ‘ช",
+    "๐Ÿ‘ฃ",
+    "๐Ÿต",
+    "๐Ÿ’",
+    "๐Ÿฆ",
+    "๐Ÿฆง",
+    "๐Ÿถ",
+    "๐Ÿ•",
+    "๐Ÿฆฎ",
+    "๐Ÿฉ",
+    "๐Ÿบ",
+    "๐ŸฆŠ",
+    "๐Ÿฆ",
+    "๐Ÿฑ",
+    "๐Ÿˆ",
+    "๐Ÿฆ",
+    "๐Ÿฏ",
+    "๐Ÿ…",
+    "๐Ÿ†",
+    "๐Ÿด",
+    "๐ŸซŽ",
+    "๐Ÿซ",
+    "๐ŸŽ",
+    "๐Ÿฆ„",
+    "๐Ÿฆ“",
+    "๐ŸฆŒ",
+    "๐Ÿฆฌ",
+    "๐Ÿฎ",
+    "๐Ÿ‚",
+    "๐Ÿƒ",
+    "๐Ÿ„",
+    "๐Ÿท",
+    "๐Ÿ–",
+    "๐Ÿ—",
+    "๐Ÿฝ",
+    "๐Ÿ",
+    "๐Ÿ‘",
+    "๐Ÿ",
+    "๐Ÿช",
+    "๐Ÿซ",
+    "๐Ÿฆ™",
+    "๐Ÿฆ’",
+    "๐Ÿ˜",
+    "๐Ÿฆฃ",
+    "๐Ÿฆ",
+    "๐Ÿฆ›",
+    "๐Ÿญ",
+    "๐Ÿ",
+    "๐Ÿ€",
+    "๐Ÿน",
+    "๐Ÿฐ",
+    "๐Ÿ‡",
+    "๐Ÿฟ",
+    "๐Ÿฆซ",
+    "๐Ÿฆ”",
+    "๐Ÿฆ‡",
+    "๐Ÿป",
+    "๐Ÿจ",
+    "๐Ÿผ",
+    "๐Ÿฆฅ",
+    "๐Ÿฆฆ",
+    "๐Ÿฆจ",
+    "๐Ÿฆ˜",
+    "๐Ÿฆก",
+    "๐Ÿพ",
+    "๐Ÿฆƒ",
+    "๐Ÿ”",
+    "๐Ÿ“",
+    "๐Ÿฃ",
+    "๐Ÿค",
+    "๐Ÿฅ",
+    "๐Ÿฆ",
+    "๐Ÿง",
+    "๐Ÿ•Š",
+    "๐Ÿฆ…",
+    "๐Ÿฆ†",
+    "๐Ÿฆข",
+    "๐Ÿฆ‰",
+    "๐Ÿฆค",
+    "๐Ÿชถ",
+    "๐Ÿฆฉ",
+    "๐Ÿฆš",
+    "๐Ÿฆœ",
+    "๐Ÿชฝ",
+    "๐Ÿชฟ",
+    "๐Ÿธ",
+    "๐ŸŠ",
+    "๐Ÿข",
+    "๐ŸฆŽ",
+    "๐Ÿ",
+    "๐Ÿฒ",
+    "๐Ÿ‰",
+    "๐Ÿฆ•",
+    "๐Ÿฆ–",
+    "๐Ÿณ",
+    "๐Ÿ‹",
+    "๐Ÿฌ",
+    "๐Ÿฆญ",
+    "๐ŸŸ",
+    "๐Ÿ ",
+    "๐Ÿก",
+    "๐Ÿฆˆ",
+    "๐Ÿ™",
+    "๐Ÿš",
+    "๐Ÿชธ",
+    "๐Ÿชผ",
+    "๐Ÿฆ€",
+    "๐Ÿฆž",
+    "๐Ÿฆ",
+    "๐Ÿฆ‘",
+    "๐Ÿฆช",
+    "๐ŸŒ",
+    "๐Ÿฆ‹",
+    "๐Ÿ›",
+    "๐Ÿœ",
+    "๐Ÿ",
+    "๐Ÿชฒ",
+    "๐Ÿž",
+    "๐Ÿฆ—",
+    "๐Ÿชณ",
+    "๐Ÿ•ท",
+    "๐Ÿ•ธ",
+    "๐Ÿฆ‚",
+    "๐ŸฆŸ",
+    "๐Ÿชฐ",
+    "๐Ÿชฑ",
+    "๐Ÿฆ ",
+    "๐Ÿ’",
+    "๐ŸŒธ",
+    "๐Ÿ’ฎ",
+    "๐Ÿชท",
+    "๐Ÿต",
+    "๐ŸŒน",
+    "๐Ÿฅ€",
+    "๐ŸŒบ",
+    "๐ŸŒป",
+    "๐ŸŒผ",
+    "๐ŸŒท",
+    "๐Ÿชป",
+    "๐ŸŒฑ",
+    "๐Ÿชด",
+    "๐ŸŒฒ",
+    "๐ŸŒณ",
+    "๐ŸŒด",
+    "๐ŸŒต",
+    "๐ŸŒพ",
+    "๐ŸŒฟ",
+    "โ˜˜",
+    "๐Ÿ€",
+    "๐Ÿ",
+    "๐Ÿ‚",
+    "๐Ÿƒ",
+    "๐Ÿชน",
+    "๐Ÿชบ",
+    "๐Ÿ„",
+    "๐Ÿ‡",
+    "๐Ÿˆ",
+    "๐Ÿ‰",
+    "๐ŸŠ",
+    "๐Ÿ‹",
+    "๐ŸŒ",
+    "๐Ÿ",
+    "๐Ÿฅญ",
+    "๐ŸŽ",
+    "๐Ÿ",
+    "๐Ÿ",
+    "๐Ÿ‘",
+    "๐Ÿ’",
+    "๐Ÿ“",
+    "๐Ÿซ",
+    "๐Ÿฅ",
+    "๐Ÿ…",
+    "๐Ÿซ’",
+    "๐Ÿฅฅ",
+    "๐Ÿฅ‘",
+    "๐Ÿ†",
+    "๐Ÿฅ”",
+    "๐Ÿฅ•",
+    "๐ŸŒฝ",
+    "๐ŸŒถ",
+    "๐Ÿซ‘",
+    "๐Ÿฅ’",
+    "๐Ÿฅฌ",
+    "๐Ÿฅฆ",
+    "๐Ÿง„",
+    "๐Ÿง…",
+    "๐Ÿฅœ",
+    "๐Ÿซ˜",
+    "๐ŸŒฐ",
+    "๐Ÿซš",
+    "๐Ÿซ›",
+    "๐Ÿž",
+    "๐Ÿฅ",
+    "๐Ÿฅ–",
+    "๐Ÿซ“",
+    "๐Ÿฅจ",
+    "๐Ÿฅฏ",
+    "๐Ÿฅž",
+    "๐Ÿง‡",
+    "๐Ÿง€",
+    "๐Ÿ–",
+    "๐Ÿ—",
+    "๐Ÿฅฉ",
+    "๐Ÿฅ“",
+    "๐Ÿ”",
+    "๐ŸŸ",
+    "๐Ÿ•",
+    "๐ŸŒญ",
+    "๐Ÿฅช",
+    "๐ŸŒฎ",
+    "๐ŸŒฏ",
+    "๐Ÿซ”",
+    "๐Ÿฅ™",
+    "๐Ÿง†",
+    "๐Ÿฅš",
+    "๐Ÿณ",
+    "๐Ÿฅ˜",
+    "๐Ÿฒ",
+    "๐Ÿซ•",
+    "๐Ÿฅฃ",
+    "๐Ÿฅ—",
+    "๐Ÿฟ",
+    "๐Ÿงˆ",
+    "๐Ÿง‚",
+    "๐Ÿฅซ",
+    "๐Ÿฑ",
+    "๐Ÿ˜",
+    "๐Ÿ™",
+    "๐Ÿš",
+    "๐Ÿ›",
+    "๐Ÿœ",
+    "๐Ÿ",
+    "๐Ÿ ",
+    "๐Ÿข",
+    "๐Ÿฃ",
+    "๐Ÿค",
+    "๐Ÿฅ",
+    "๐Ÿฅฎ",
+    "๐Ÿก",
+    "๐ŸฅŸ",
+    "๐Ÿฅ ",
+    "๐Ÿฅก",
+    "๐Ÿฆ",
+    "๐Ÿง",
+    "๐Ÿจ",
+    "๐Ÿฉ",
+    "๐Ÿช",
+    "๐ŸŽ‚",
+    "๐Ÿฐ",
+    "๐Ÿง",
+    "๐Ÿฅง",
+    "๐Ÿซ",
+    "๐Ÿฌ",
+    "๐Ÿญ",
+    "๐Ÿฎ",
+    "๐Ÿฏ",
+    "๐Ÿผ",
+    "๐Ÿฅ›",
+    "โ˜•",
+    "๐Ÿซ–",
+    "๐Ÿต",
+    "๐Ÿถ",
+    "\u{01f3f3}\u{fe0f}\u{200d}\u{26a7}\u{fe0f}",
+    "\u{01f44d}\u{01f3fe}",
+];

+ 6 - 101
bin/app/src/ui/emoji_picker/emoji.rs

@@ -21,7 +21,7 @@ use std::{
     fs::File,
     io::{BufRead, BufReader},
     path::{Path, PathBuf},
-    sync::{Arc, LazyLock},
+    sync::Arc,
 };
 
 use crate::{
@@ -30,35 +30,19 @@ use crate::{
     text,
 };
 
-use super::default;
-
-#[cfg(target_os = "android")]
-pub fn get_emoji_list_path() -> PathBuf {
-    crate::android::get_external_storage_path().join("emoji.txt")
-}
-
-#[cfg(not(target_os = "android"))]
-pub fn get_emoji_list_path() -> PathBuf {
-    dirs::data_local_dir().unwrap().join("darkfi/emoji.txt")
-}
+use super::default::DEFAULT_EMOJI_LIST;
 
 pub type EmojiMeshesPtr = Arc<AsyncMutex<EmojiMeshes>>;
 
 pub struct EmojiMeshes {
     render_api: RenderApi,
     emoji_size: f32,
-    emoji_list: LazyLock<Vec<String>>,
     meshes: Vec<DrawMesh>,
 }
 
 impl EmojiMeshes {
     pub fn new(render_api: RenderApi, emoji_size: f32) -> EmojiMeshesPtr {
-        Arc::new(AsyncMutex::new(Self {
-            render_api,
-            emoji_size,
-            emoji_list: LazyLock::new(load_emoji_list),
-            meshes: vec![],
-        }))
+        Arc::new(AsyncMutex::new(Self { render_api, emoji_size, meshes: vec![] }))
     }
 
     pub fn clear(&mut self) {
@@ -66,14 +50,13 @@ impl EmojiMeshes {
     }
 
     pub async fn get(&mut self, i: usize) -> DrawMesh {
-        let emoji_list = self.get_list();
-        assert!(i < emoji_list.len());
-        self.meshes.reserve_exact(emoji_list.len());
+        assert!(i < DEFAULT_EMOJI_LIST.len());
+        self.meshes.reserve_exact(DEFAULT_EMOJI_LIST.len());
 
         if i >= self.meshes.len() {
             //d!("EmojiMeshes loading new glyphs");
             for j in self.meshes.len()..=i {
-                let emoji = &self.emoji_list[j];
+                let emoji = DEFAULT_EMOJI_LIST[j];
                 let mesh = self.gen_emoji_mesh(emoji).await;
                 self.meshes.push(mesh);
             }
@@ -100,85 +83,7 @@ impl EmojiMeshes {
             _ => panic!("Expected Draw instruction for emoji"),
         };
 
-        // Emoji's vary in size. We make them all a consistent size.
-        // We need to scale the mesh to match emoji_size.
-        // TODO: Implement proper scaling for text2 API
-        /*
-        let bbox = layout.metrics().bounds;
-        let orig_w = bbox.width().max(1.0);
-        let orig_h = bbox.height().max(1.0);
-        let w = self.emoji_size;
-        let h = self.emoji_size * orig_h / orig_w;
-
-        // Create a new mesh with the scaled size centered at origin
-        let x = -w / 2.;
-        let y = -h / 2.;
-        let mut mesh_builder = MeshBuilder::new(gfxtag!("emoji_mesh"));
-        */
-
         // For now, just return the original mesh since scaling is complex with textures
         mesh
     }
-
-    pub fn get_list<'a>(&'a self) -> &'a Vec<String> {
-        LazyLock::force(&self.emoji_list)
-    }
-}
-
-fn load_emoji_list() -> Vec<String> {
-    match load_custom_emoji_list(&get_emoji_list_path()) {
-        Some(emojis) => emojis,
-        None => default::create_default_emoji_list(),
-    }
-}
-
-fn load_custom_emoji_list(path: &Path) -> Option<Vec<String>> {
-    let file = File::open(path).ok()?;
-    let reader = BufReader::new(file);
-
-    let mut emojis = vec![];
-    for mut line in reader.lines().map_while(Result::ok) {
-        remove_whitespace(&mut line);
-        let line = strip_comment(&line);
-        if line.is_empty() {
-            continue
-        }
-        let emoji = unescape_unicode(line)?;
-        emojis.push(emoji);
-    }
-    Some(emojis)
-}
-
-fn unescape_unicode(input: &str) -> Option<String> {
-    let re = regex::Regex::new(r"\\u\{([0-9A-Fa-f]+)\}").unwrap();
-
-    // There is no way to bail from a failed regex so we use this workaround instead.
-    let mut failed = false;
-    let result = re
-        .replace_all(input, |caps: &regex::Captures| {
-            let Ok(code) = u32::from_str_radix(&caps[1], 16) else {
-                failed = true;
-                return String::new()
-            };
-            let Some(chr) = char::from_u32(code) else {
-                failed = true;
-                return String::new()
-            };
-            chr.to_string()
-        })
-        .into_owned();
-
-    if failed {
-        return None
-    }
-
-    Some(result)
-}
-
-fn remove_whitespace(s: &mut String) {
-    s.retain(|c| !c.is_whitespace());
-}
-
-fn strip_comment(s: &str) -> &str {
-    s.split('#').next().unwrap_or(s)
 }

+ 8 - 14
bin/app/src/ui/emoji_picker/mod.rs

@@ -38,6 +38,7 @@ use crate::{
 use super::{DrawUpdate, OnModify, UIObject};
 
 mod default;
+use default::DEFAULT_EMOJI_LIST;
 mod emoji;
 pub use emoji::{EmojiMeshes, EmojiMeshesPtr};
 
@@ -126,7 +127,7 @@ impl EmojiPicker {
     }
 
     async fn max_scroll(&self) -> f32 {
-        let emojis_len = self.emoji_meshes.lock().await.get_list().len() as f32;
+        let emojis_len = DEFAULT_EMOJI_LIST.len() as f32;
         let emoji_size = self.emoji_size.get();
         let cols = self.emojis_per_line();
         let rows = (emojis_len / cols).ceil();
@@ -161,10 +162,8 @@ impl EmojiPicker {
 
         let emoji_selected = {
             let emoji_meshes = self.emoji_meshes.lock().await;
-            let emoji_list = emoji_meshes.get_list();
-
-            if idx < emoji_list.len() {
-                let emoji = emoji_list[idx].clone();
+            if idx < DEFAULT_EMOJI_LIST.len() {
+                let emoji = DEFAULT_EMOJI_LIST[idx].to_string();
                 Some(emoji)
             } else {
                 None
@@ -215,21 +214,16 @@ impl EmojiPicker {
         let off_x = self.calc_off_x();
         let emoji_size = self.emoji_size.get();
 
-        let emoji_list_len = {
-            let emoji_meshes = self.emoji_meshes.lock().await;
-            emoji_meshes.get_list().len()
-        };
-
-        let mut x = emoji_size / 2.;
-        let mut y = emoji_size / 2. - self.scroll.get();
-        for i in 0..emoji_list_len {
+        let mut x = 0.;
+        let mut y = -self.scroll.get();
+        for i in 0..DEFAULT_EMOJI_LIST.len() {
             let pos = Point::new(x, y);
             let mesh = self.emoji_meshes.lock().await.get(i).await;
             instrs.extend_from_slice(&[DrawInstruction::SetPos(pos), DrawInstruction::Draw(mesh)]);
 
             x += off_x;
             if x > rect.w {
-                x = emoji_size / 2.;
+                x = 0.;
                 y += emoji_size;
                 //d!("Line break after idx={i}");
             }