mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
opt filter dyn
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -22,13 +22,11 @@ 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,
|
||||
int? mid,
|
||||
Set<int>? tempBannedList,
|
||||
}) async {
|
||||
Map<String, dynamic> data = {
|
||||
if (type == DynamicsTabType.up)
|
||||
@@ -43,30 +41,10 @@ class DynamicsHttp {
|
||||
var res = await Request().get(Api.followDynamic, queryParameters: data);
|
||||
if (res.data['code'] == 0) {
|
||||
try {
|
||||
DynamicsDataModel data = DynamicsDataModel.fromJson(res.data['data']);
|
||||
final antiGoodsDyn = GStorage.antiGoodsDyn;
|
||||
final filterWord = banWordForDyn.pattern.isNotEmpty;
|
||||
|
||||
data.items?.removeWhere(
|
||||
(item) =>
|
||||
(antiGoodsDyn &&
|
||||
(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)),
|
||||
DynamicsDataModel data = DynamicsDataModel.fromJson(
|
||||
res.data['data'],
|
||||
type: type,
|
||||
tempBannedList: tempBannedList,
|
||||
);
|
||||
return Success(data);
|
||||
} catch (err) {
|
||||
|
||||
@@ -361,15 +361,12 @@ class MemberHttp {
|
||||
});
|
||||
var res = await Request().get(Api.memberDynamic, queryParameters: params);
|
||||
if (res.data['code'] == 0) {
|
||||
DynamicsDataModel data = DynamicsDataModel.fromJson(res.data['data']);
|
||||
if (GStorage.antiGoodsDyn) {
|
||||
data.items?.removeWhere((item) =>
|
||||
item.orig?.modules.moduleDynamic?.additional?.type ==
|
||||
'ADDITIONAL_TYPE_GOODS' ||
|
||||
item.modules.moduleDynamic?.additional?.type ==
|
||||
'ADDITIONAL_TYPE_GOODS');
|
||||
try {
|
||||
DynamicsDataModel data = DynamicsDataModel.fromJson(res.data['data']);
|
||||
return Success(data);
|
||||
} catch (err) {
|
||||
return Error(err.toString());
|
||||
}
|
||||
return Success(data);
|
||||
} else {
|
||||
Map errMap = const {
|
||||
-352: '风控校验失败,请检查登录状态',
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:PiliPlus/common/widgets/pendant_avatar.dart';
|
||||
import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart';
|
||||
import 'package:PiliPlus/models/dynamics/article_content_model.dart';
|
||||
import 'package:PiliPlus/models/model_avatar.dart';
|
||||
import 'package:PiliPlus/models_new/live/live_feed_index/watched_show.dart';
|
||||
import 'package:PiliPlus/utils/storage.dart';
|
||||
|
||||
class DynamicsDataModel {
|
||||
bool? hasMore;
|
||||
@@ -11,11 +13,49 @@ class DynamicsDataModel {
|
||||
String? offset;
|
||||
int? total;
|
||||
|
||||
DynamicsDataModel.fromJson(Map<String, dynamic> json) {
|
||||
static RegExp banWordForDyn =
|
||||
RegExp(GStorage.banWordForDyn, caseSensitive: false);
|
||||
|
||||
DynamicsDataModel.fromJson(
|
||||
Map<String, dynamic> json, {
|
||||
DynamicsTabType type = DynamicsTabType.all,
|
||||
Set<int>? tempBannedList,
|
||||
}) {
|
||||
hasMore = json['has_more'];
|
||||
items = (json['items'] as List?)
|
||||
?.map<DynamicItemModel>((e) => DynamicItemModel.fromJson(e))
|
||||
.toList();
|
||||
|
||||
List? list = json['items'] as List?;
|
||||
if (list != null && list.isNotEmpty) {
|
||||
items = <DynamicItemModel>[];
|
||||
late final antiGoodsDyn = GStorage.antiGoodsDyn;
|
||||
late final filterWord = banWordForDyn.pattern.isNotEmpty;
|
||||
late final filterBan =
|
||||
type != DynamicsTabType.up && tempBannedList?.isNotEmpty == true;
|
||||
for (var e in list) {
|
||||
DynamicItemModel item = DynamicItemModel.fromJson(e);
|
||||
if (antiGoodsDyn &&
|
||||
(item.orig?.modules.moduleDynamic?.additional?.type ==
|
||||
'ADDITIONAL_TYPE_GOODS' ||
|
||||
item.modules.moduleDynamic?.additional?.type ==
|
||||
'ADDITIONAL_TYPE_GOODS')) {
|
||||
continue;
|
||||
}
|
||||
if (filterWord &&
|
||||
banWordForDyn.hasMatch(
|
||||
item.orig?.modules.moduleDynamic?.major?.opus?.summary?.text ??
|
||||
item.modules.moduleDynamic?.major?.opus?.summary?.text ??
|
||||
item.orig?.modules.moduleDynamic?.desc?.text ??
|
||||
item.modules.moduleDynamic?.desc?.text ??
|
||||
'')) {
|
||||
continue;
|
||||
}
|
||||
if (filterBan &&
|
||||
tempBannedList!.contains(item.modules.moduleAuthor?.mid)) {
|
||||
continue;
|
||||
}
|
||||
items!.add(item);
|
||||
}
|
||||
}
|
||||
|
||||
offset = json['offset'];
|
||||
total = json['total'];
|
||||
}
|
||||
|
||||
@@ -36,11 +36,6 @@ class DynamicsTabController
|
||||
|
||||
@override
|
||||
List<DynamicItemModel>? getDataList(DynamicsDataModel response) {
|
||||
if (dynamicsType != DynamicsTabType.up &&
|
||||
dynamicsController.tempBannedList.isNotEmpty) {
|
||||
response.items?.removeWhere((e) => dynamicsController.tempBannedList
|
||||
.contains(e.modules.moduleAuthor?.mid));
|
||||
}
|
||||
offset = response.offset ?? '';
|
||||
return response.items;
|
||||
}
|
||||
@@ -51,6 +46,7 @@ class DynamicsTabController
|
||||
type: dynamicsType,
|
||||
offset: offset,
|
||||
mid: mid,
|
||||
tempBannedList: dynamicsController.tempBannedList,
|
||||
);
|
||||
|
||||
Future<void> onRemove(int index, dynamic dynamicId) async {
|
||||
|
||||
@@ -5,7 +5,6 @@ import 'package:PiliPlus/common/widgets/custom_icon.dart';
|
||||
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';
|
||||
@@ -28,6 +27,7 @@ import 'package:PiliPlus/models/common/video/live_quality.dart';
|
||||
import 'package:PiliPlus/models/common/video/subtitle_pref_type.dart';
|
||||
import 'package:PiliPlus/models/common/video/video_decode_type.dart';
|
||||
import 'package:PiliPlus/models/common/video/video_quality.dart';
|
||||
import 'package:PiliPlus/models/dynamics/result.dart';
|
||||
import 'package:PiliPlus/pages/home/controller.dart';
|
||||
import 'package:PiliPlus/pages/hot/controller.dart';
|
||||
import 'package:PiliPlus/pages/main/controller.dart';
|
||||
@@ -1815,7 +1815,7 @@ List<SettingsModel> get extraSettings => [
|
||||
title: '动态关键词过滤',
|
||||
key: SettingBoxKey.banWordForDyn,
|
||||
callback: (value) {
|
||||
DynamicsHttp.banWordForDyn = value;
|
||||
DynamicsDataModel.banWordForDyn = value;
|
||||
},
|
||||
),
|
||||
SettingsModel(
|
||||
|
||||
Reference in New Issue
Block a user