From 76c16c035e58e64fffb39fe20e00a9170cadcd50 Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Mon, 3 Mar 2025 21:36:29 +0800 Subject: [PATCH] mod: show dm merged count related #359 Signed-off-by: bggRGjQaUbCoE --- lib/http/danmaku.dart | 17 ++++++++++++++--- lib/pages/danmaku/view.dart | 3 +++ pubspec.lock | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/http/danmaku.dart b/lib/http/danmaku.dart index 97de6c0a..74143ab2 100644 --- a/lib/http/danmaku.dart +++ b/lib/http/danmaku.dart @@ -1,6 +1,5 @@ import 'package:PiliPlus/grpc/dm/v1/dm.pb.dart'; import 'package:PiliPlus/grpc/grpc_repo.dart'; -import 'package:PiliPlus/utils/extension.dart'; import 'package:dio/dio.dart'; import 'index.dart'; @@ -18,8 +17,20 @@ class DanmakuHttp { return DmSegMobileReply(); } DmSegMobileReply data = response['data']; - if (mergeDanmaku) { - data.elems.unique((item) => item.content); + if (mergeDanmaku && data.elems.isNotEmpty) { + final Map counts = {}; + data.elems.retainWhere((item) { + int? count = counts[item.content]; + counts[item.content] = count != null ? count + 1 : 1; + return count == null; + }); + for (DanmakuElem item in data.elems) { + item.clearAttr(); + final count = counts[item.content]; + if (count != 1) { + item.attr = count; + } + } } return data; } diff --git a/lib/pages/danmaku/view.dart b/lib/pages/danmaku/view.dart index fcbfc3a1..d19e3168 100644 --- a/lib/pages/danmaku/view.dart +++ b/lib/pages/danmaku/view.dart @@ -117,6 +117,9 @@ class _PlDanmakuState extends State { e.colorful == DmColorfulType.VipGradualColor ? true : null, + count: widget.playerController.mergeDanmaku && e.hasAttr() + ? e.attr + : null, ), ); } diff --git a/pubspec.lock b/pubspec.lock index c0313a94..187dc767 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -252,7 +252,7 @@ packages: description: path: "." ref: main - resolved-ref: ecf4a8457ec9d128095240d96dbfa5cc53b6cf6b + resolved-ref: "77c76f6595c6862cc623b036718173619c02af75" url: "https://github.com/bggRGjQaUbCoE/canvas_danmaku.git" source: git version: "0.2.6"