mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-17 23:56:13 +08:00
feat: filter dyn (#860)
This commit is contained in:
committed by
GitHub
parent
d7dec1bc4d
commit
a360212dc7
@@ -16,6 +16,9 @@ import 'package:PiliPlus/utils/wbi_sign.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
|
||||
class DynamicsHttp {
|
||||
static RegExp banWordForDyn =
|
||||
RegExp(GStorage.banWordForDyn, caseSensitive: false);
|
||||
|
||||
static Future<LoadingState<DynamicsDataModel>> followDynamic({
|
||||
DynamicsTabType type = DynamicsTabType.all,
|
||||
String? offset,
|
||||
@@ -35,15 +38,30 @@ class DynamicsHttp {
|
||||
if (res.data['code'] == 0) {
|
||||
try {
|
||||
DynamicsDataModel data = DynamicsDataModel.fromJson(res.data['data']);
|
||||
if (GStorage.antiGoodsDyn) {
|
||||
final antiGoodsDyn = GStorage.antiGoodsDyn;
|
||||
final filterWord = banWordForDyn.pattern.isNotEmpty;
|
||||
|
||||
data.items?.removeWhere(
|
||||
(item) =>
|
||||
item.orig?.modules.moduleDynamic?.additional?.type ==
|
||||
(antiGoodsDyn &&
|
||||
(item.orig?.modules.moduleDynamic?.additional?.type ==
|
||||
'ADDITIONAL_TYPE_GOODS' ||
|
||||
item.modules.moduleDynamic?.additional?.type ==
|
||||
'ADDITIONAL_TYPE_GOODS',
|
||||
'ADDITIONAL_TYPE_GOODS')) ||
|
||||
(filterWord &&
|
||||
(item.orig?.modules.moduleDynamic?.major?.opus?.summary?.text
|
||||
?.contains(banWordForDyn) ==
|
||||
true ||
|
||||
item.modules.moduleDynamic?.major?.opus?.summary?.text
|
||||
?.contains(banWordForDyn) ==
|
||||
true ||
|
||||
item.orig?.modules.moduleDynamic?.desc?.text
|
||||
?.contains(banWordForDyn) ==
|
||||
true ||
|
||||
item.modules.moduleDynamic?.desc?.text
|
||||
?.contains(banWordForDyn) ==
|
||||
true)),
|
||||
);
|
||||
}
|
||||
return Success(data);
|
||||
} catch (err) {
|
||||
return Error(err.toString());
|
||||
|
||||
@@ -59,7 +59,7 @@ class _UpPanelState extends State<UpPanel> {
|
||||
children: [
|
||||
TextSpan(
|
||||
text:
|
||||
'Live(${widget.dynamicsController.upData.value.liveUsers?.count})',
|
||||
'Live(${widget.dynamicsController.upData.value.liveUsers?.count ?? "0"})',
|
||||
),
|
||||
if (!isTop) ...[
|
||||
const TextSpan(text: '\n'),
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'dart:math';
|
||||
import 'package:PiliPlus/common/widgets/pendant_avatar.dart';
|
||||
import 'package:PiliPlus/common/widgets/refresh_indicator.dart'
|
||||
show kDragContainerExtentPercentage, displacement;
|
||||
import 'package:PiliPlus/http/dynamics.dart';
|
||||
import 'package:PiliPlus/http/reply.dart';
|
||||
import 'package:PiliPlus/http/video.dart';
|
||||
import 'package:PiliPlus/main.dart';
|
||||
@@ -1800,6 +1801,14 @@ List<SettingsModel> get extraSettings => [
|
||||
ReplyHttp.replyRegExp = value;
|
||||
},
|
||||
),
|
||||
_getBanwordModel(
|
||||
context: Get.context!,
|
||||
title: '动态关键词过滤',
|
||||
key: SettingBoxKey.banWordForDyn,
|
||||
callback: (value) {
|
||||
DynamicsHttp.banWordForDyn = value;
|
||||
},
|
||||
),
|
||||
SettingsModel(
|
||||
settingsType: SettingsType.sw1tch,
|
||||
title: '使用外部浏览器打开链接',
|
||||
|
||||
@@ -493,6 +493,9 @@ class GStorage {
|
||||
return isTablet;
|
||||
}
|
||||
|
||||
static String get banWordForDyn =>
|
||||
GStorage.setting.get(SettingBoxKey.banWordForDyn, defaultValue: '');
|
||||
|
||||
static List<double> get dynamicDetailRatio => List<double>.from(setting
|
||||
.get(SettingBoxKey.dynamicDetailRatio, defaultValue: const [60.0, 40.0]));
|
||||
|
||||
@@ -789,6 +792,7 @@ class SettingBoxKey {
|
||||
showPgcTimeline = 'showPgcTimeline',
|
||||
pageTransition = 'pageTransition',
|
||||
optTabletNav = 'optTabletNav',
|
||||
banWordForDyn = 'banWordForDyn',
|
||||
|
||||
// WebDAV
|
||||
webdavUri = 'webdavUri',
|
||||
|
||||
Reference in New Issue
Block a user