mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-05 17:47:46 +08:00
feat: add to filter (#1903)
This commit is contained in:
committed by
GitHub
parent
f7a2be1923
commit
9ed8b14d1b
@@ -4,6 +4,7 @@ import 'package:PiliPlus/common/assets.dart';
|
||||
import 'package:PiliPlus/common/constants.dart';
|
||||
import 'package:PiliPlus/common/style.dart';
|
||||
import 'package:PiliPlus/common/widgets/badge.dart';
|
||||
import 'package:PiliPlus/common/widgets/dialog/dialog.dart';
|
||||
import 'package:PiliPlus/common/widgets/dialog/report.dart';
|
||||
import 'package:PiliPlus/common/widgets/extra_hit_test_widget.dart';
|
||||
import 'package:PiliPlus/common/widgets/flutter/text/text.dart' as custom_text;
|
||||
@@ -38,6 +39,7 @@ import 'package:PiliPlus/utils/image_utils.dart';
|
||||
import 'package:PiliPlus/utils/page_utils.dart';
|
||||
import 'package:PiliPlus/utils/platform_utils.dart';
|
||||
import 'package:PiliPlus/utils/storage.dart';
|
||||
import 'package:PiliPlus/utils/storage_key.dart';
|
||||
import 'package:PiliPlus/utils/storage_pref.dart';
|
||||
import 'package:PiliPlus/utils/url_utils.dart';
|
||||
import 'package:PiliPlus/utils/utils.dart';
|
||||
@@ -1162,6 +1164,8 @@ class ReplyItemGrpc extends StatelessWidget {
|
||||
child: SelectableText(
|
||||
message,
|
||||
style: const TextStyle(fontSize: 15, height: 1.7),
|
||||
contextMenuBuilder: (_, editableTextState) =>
|
||||
_filterMenuBuilder(context, editableTextState),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -1201,4 +1205,56 @@ class ReplyItemGrpc extends StatelessWidget {
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
static Widget _filterMenuBuilder(
|
||||
BuildContext context,
|
||||
EditableTextState editableTextState,
|
||||
) {
|
||||
final items = editableTextState.contextMenuButtonItems;
|
||||
if (!editableTextState.textEditingValue.selection.isCollapsed) {
|
||||
items.add(
|
||||
ContextMenuButtonItem(
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
final select = editableTextState.textEditingValue;
|
||||
String text = RegExp.escape(
|
||||
select.selection.textInside(select.text),
|
||||
);
|
||||
if (ReplyGrpc.enableFilter) text = '|$text';
|
||||
|
||||
showConfirmDialog(
|
||||
context: context,
|
||||
title: const Text('是否确认评论过滤的变更:'),
|
||||
content: Text.rich(
|
||||
TextSpan(
|
||||
text: ReplyGrpc.replyRegExp.pattern,
|
||||
children: [
|
||||
TextSpan(
|
||||
text: text,
|
||||
style: const TextStyle(
|
||||
color: Colors.green,
|
||||
fontWeight: .bold,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
onConfirm: () {
|
||||
final filter = ReplyGrpc.replyRegExp.pattern + text;
|
||||
ReplyGrpc.replyRegExp = RegExp(filter, caseSensitive: true);
|
||||
ReplyGrpc.enableFilter = true;
|
||||
GStorage.setting.put(SettingBoxKey.banWordForReply, filter);
|
||||
SmartDialog.showToast('已保存');
|
||||
},
|
||||
);
|
||||
},
|
||||
label: '加入过滤',
|
||||
),
|
||||
);
|
||||
}
|
||||
return AdaptiveTextSelectionToolbar.buttonItems(
|
||||
buttonItems: items,
|
||||
anchors: editableTextState.contextMenuAnchors,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user