mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-01 08:38:18 +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/constants.dart';
|
||||||
import 'package:PiliPlus/common/style.dart';
|
import 'package:PiliPlus/common/style.dart';
|
||||||
import 'package:PiliPlus/common/widgets/badge.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/dialog/report.dart';
|
||||||
import 'package:PiliPlus/common/widgets/extra_hit_test_widget.dart';
|
import 'package:PiliPlus/common/widgets/extra_hit_test_widget.dart';
|
||||||
import 'package:PiliPlus/common/widgets/flutter/text/text.dart' as custom_text;
|
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/page_utils.dart';
|
||||||
import 'package:PiliPlus/utils/platform_utils.dart';
|
import 'package:PiliPlus/utils/platform_utils.dart';
|
||||||
import 'package:PiliPlus/utils/storage.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/storage_pref.dart';
|
||||||
import 'package:PiliPlus/utils/url_utils.dart';
|
import 'package:PiliPlus/utils/url_utils.dart';
|
||||||
import 'package:PiliPlus/utils/utils.dart';
|
import 'package:PiliPlus/utils/utils.dart';
|
||||||
@@ -1162,6 +1164,8 @@ class ReplyItemGrpc extends StatelessWidget {
|
|||||||
child: SelectableText(
|
child: SelectableText(
|
||||||
message,
|
message,
|
||||||
style: const TextStyle(fontSize: 15, height: 1.7),
|
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