From f932175a1f758ab3c0d55a6bed830ee8dfd46d06 Mon Sep 17 00:00:00 2001 From: guozhigq Date: Sat, 16 Nov 2024 14:54:57 +0800 Subject: [PATCH] opt: dynamic comment push --- lib/pages/message/at/view.dart | 2 +- lib/pages/message/like/view.dart | 2 +- lib/pages/message/reply/view.dart | 32 ++++++++++++++++++++++++++---- lib/pages/message/utils/index.dart | 13 +++++++++--- lib/utils/app_scheme.dart | 10 ++++++++-- 5 files changed, 48 insertions(+), 11 deletions(-) diff --git a/lib/pages/message/at/view.dart b/lib/pages/message/at/view.dart index 11fdb5b5..4efa1014 100644 --- a/lib/pages/message/at/view.dart +++ b/lib/pages/message/at/view.dart @@ -127,7 +127,7 @@ class AtItem extends StatelessWidget { return InkWell( onTap: () async { - MessageUtils.onClickMessage(context, uri, nativeUri, type); + MessageUtils.onClickMessage(context, uri, nativeUri, type, null); }, child: Padding( padding: const EdgeInsets.all(14), diff --git a/lib/pages/message/like/view.dart b/lib/pages/message/like/view.dart index f831282f..42c5a2ed 100644 --- a/lib/pages/message/like/view.dart +++ b/lib/pages/message/like/view.dart @@ -125,7 +125,7 @@ class LikeItem extends StatelessWidget { final String type = item.item!.type!; return InkWell( onTap: () async { - MessageUtils.onClickMessage(context, uri, nativeUri, type); + MessageUtils.onClickMessage(context, uri, nativeUri, type, null); }, child: Stack( children: [ diff --git a/lib/pages/message/reply/view.dart b/lib/pages/message/reply/view.dart index 408942fa..0cc95f6b 100644 --- a/lib/pages/message/reply/view.dart +++ b/lib/pages/message/reply/view.dart @@ -117,7 +117,7 @@ class ReplyItem extends StatelessWidget { final String type = item.item!.type!; return InkWell( onTap: () async { - MessageUtils.onClickMessage(context, uri, nativeUri, type); + MessageUtils.onClickMessage(context, uri, nativeUri, type, item.item!); }, child: Padding( padding: const EdgeInsets.all(14), @@ -155,6 +155,9 @@ class ReplyItem extends StatelessWidget { text: '回复了我的评论', style: TextStyle(color: outline), ), + if (item.item!.type! == 'dynamic') + TextSpan( + text: '对我的动态发表了评论', style: TextStyle(color: outline)), ])), const SizedBox(height: 6), Text.rich( @@ -197,11 +200,32 @@ class ReplyItem extends StatelessWidget { ), ), if (item.item!.type! == 'video') - NetworkImgLayer( + // NetworkImgLayer( + // width: 60, + // height: 60, + // src: item.item!.image, + // radius: 6, + // ), + Container( width: 60, height: 60, - src: item.item!.image, - radius: 6, + clipBehavior: Clip.hardEdge, + decoration: const BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(6)), + ), + child: Image.network(item.item!.image!, fit: BoxFit.cover), + ), + if (item.item!.type! == 'dynamic') + Container( + width: 60, + height: 80, + padding: const EdgeInsets.all(4), + child: Text( + item.item!.title!, + maxLines: 4, + style: const TextStyle(fontSize: 12, letterSpacing: 0.3), + overflow: TextOverflow.ellipsis, + ), ), ], ), diff --git a/lib/pages/message/utils/index.dart b/lib/pages/message/utils/index.dart index d45203ba..88fe8aa6 100644 --- a/lib/pages/message/utils/index.dart +++ b/lib/pages/message/utils/index.dart @@ -3,6 +3,7 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:pilipala/http/search.dart'; import 'package:pilipala/models/common/reply_type.dart'; +import 'package:pilipala/models/msg/reply.dart'; import 'package:pilipala/pages/video/detail/reply_reply/index.dart'; import 'package:pilipala/utils/app_scheme.dart'; import 'package:pilipala/utils/utils.dart'; @@ -10,7 +11,12 @@ import 'package:pilipala/utils/utils.dart'; class MessageUtils { // 回复我的、收到的赞点击 static void onClickMessage( - BuildContext context, Uri uri, Uri nativeUri, String type) async { + BuildContext context, + Uri uri, + Uri nativeUri, + String type, + ReplyContentItem? item, + ) async { final String path = uri.path; final String bvid = path.split('/').last; String? sourceType; @@ -24,8 +30,8 @@ class MessageUtils { if (nativePath.contains('detail')) { // 动态详情 sourceType = 'opus'; - oid = nativePath.split('/')[3]; - commentRootId = nativePath.split('/')[4]; + oid = item?.subjectId!.toString() ?? nativePath.split('/')[3]; + commentRootId = item?.sourceId!.toString() ?? nativePath.split('/')[4]; } switch (type) { case 'video': @@ -47,6 +53,7 @@ class MessageUtils { } break; case 'reply': + case 'dynamic': debugPrint('commentRootId: $oid, $commentRootId'); navigateToComment( context, diff --git a/lib/utils/app_scheme.dart b/lib/utils/app_scheme.dart index e1fc94e3..48341b5e 100644 --- a/lib/utils/app_scheme.dart +++ b/lib/utils/app_scheme.dart @@ -282,8 +282,14 @@ class PiliSchame { } break; default: - SmartDialog.showToast('未匹配地址,请联系开发者'); - Clipboard.setData(ClipboardData(text: value.toString())); + final Map queryParameters = value.queryParameters; + final String? enterUri = queryParameters['enterUri']; + if (enterUri != null && enterUri.startsWith('bilibili://')) { + biliScheme(Uri.parse(enterUri)); + } else { + SmartDialog.showToast('未匹配地址,请联系开发者'); + Clipboard.setData(ClipboardData(text: value.toString())); + } break; } }