From 9ccd38ca60defc15cce3a423f2b111d1fea01578 Mon Sep 17 00:00:00 2001 From: franzap <_@franzap.com> Date: Sat, 12 Oct 2024 16:15:54 -0300 Subject: [PATCH] Parse emojis and remove markdown from AppCard --- lib/screens/app_detail_screen.dart | 3 ++- lib/widgets/app_card.dart | 13 ++++++++++++- pubspec.lock | 16 ++++++++++++++++ pubspec.yaml | 2 ++ 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/lib/screens/app_detail_screen.dart b/lib/screens/app_detail_screen.dart index 894a8f1..452c3ee 100644 --- a/lib/screens/app_detail_screen.dart +++ b/lib/screens/app_detail_screen.dart @@ -10,6 +10,7 @@ import 'package:zapstore/main.data.dart'; import 'package:zapstore/models/app.dart'; import 'package:zapstore/models/release.dart'; import 'package:zapstore/utils/extensions.dart'; +import 'package:zapstore/widgets/app_card.dart'; import 'package:zapstore/widgets/install_button.dart'; import 'package:zapstore/widgets/release_card.dart'; import 'package:zapstore/widgets/signer_and_developer_row.dart'; @@ -79,7 +80,7 @@ class AppDetailScreen extends HookConsumerWidget { fontSize: 18, fontWeight: FontWeight.w300), ), selectable: false, - data: app.content, + data: app.content.parseEmojis(), ), Gap(10), Padding( diff --git a/lib/widgets/app_card.dart b/lib/widgets/app_card.dart index 4d64eb4..8097642 100644 --- a/lib/widgets/app_card.dart +++ b/lib/widgets/app_card.dart @@ -1,8 +1,10 @@ import 'package:auto_size_text/auto_size_text.dart'; +import 'package:dart_emoji/dart_emoji.dart'; import 'package:flutter/material.dart'; import 'package:gap/gap.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:remove_markdown/remove_markdown.dart'; import 'package:skeletonizer/skeletonizer.dart'; import 'package:zapstore/models/app.dart'; import 'package:zapstore/widgets/pill_widget.dart'; @@ -97,7 +99,7 @@ class AppCard extends HookConsumerWidget { ), Gap(6), Text( - app!.content, + app!.content.removeMarkdown().parseEmojis(), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w300), overflow: TextOverflow.ellipsis, @@ -195,3 +197,12 @@ class TagsContainer extends StatelessWidget { ); } } + +extension StringWidget on String { + static final _emojiParser = EmojiParser(); + String parseEmojis() { + return replaceAllMapped(RegExp(':([a-z]*):'), (m) { + return _emojiParser.hasName(m[1]!) ? _emojiParser.get(m[1]!).code : m[0]!; + }); + } +} diff --git a/pubspec.lock b/pubspec.lock index 0cb165d..6f824f0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -289,6 +289,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.8" + dart_emoji: + dependency: "direct main" + description: + name: dart_emoji + sha256: "88d5e37174751aeabaecdbf153fdca46eb9fa12d6b626d6c70447058d444724e" + url: "https://pub.dev" + source: hosted + version: "0.2.0+2" dart_style: dependency: transitive description: @@ -928,6 +936,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.3" + remove_markdown: + dependency: "direct main" + description: + name: remove_markdown + sha256: "99798c4147609972e923847504e48e685e91473a70af659c3445fbbbeea8c33c" + url: "https://pub.dev" + source: hosted + version: "0.0.2" riverpod: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index c6acfb4..81d75ea 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -46,6 +46,8 @@ dependencies: convert: ^3.1.1 async: ^2.11.0 app_links: ^6.3.2 + dart_emoji: ^0.2.0+2 + remove_markdown: ^0.0.2 dependency_overrides: purplebase: