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