mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-01 00:28:18 +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';
|
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,
|
||||||
int? mid,
|
int? mid,
|
||||||
|
Set<int>? tempBannedList,
|
||||||
}) async {
|
}) async {
|
||||||
Map<String, dynamic> data = {
|
Map<String, dynamic> data = {
|
||||||
if (type == DynamicsTabType.up)
|
if (type == DynamicsTabType.up)
|
||||||
@@ -43,30 +41,10 @@ class DynamicsHttp {
|
|||||||
var res = await Request().get(Api.followDynamic, queryParameters: data);
|
var res = await Request().get(Api.followDynamic, queryParameters: data);
|
||||||
if (res.data['code'] == 0) {
|
if (res.data['code'] == 0) {
|
||||||
try {
|
try {
|
||||||
DynamicsDataModel data = DynamicsDataModel.fromJson(res.data['data']);
|
DynamicsDataModel data = DynamicsDataModel.fromJson(
|
||||||
final antiGoodsDyn = GStorage.antiGoodsDyn;
|
res.data['data'],
|
||||||
final filterWord = banWordForDyn.pattern.isNotEmpty;
|
type: type,
|
||||||
|
tempBannedList: tempBannedList,
|
||||||
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)),
|
|
||||||
);
|
);
|
||||||
return Success(data);
|
return Success(data);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
@@ -361,15 +361,12 @@ class MemberHttp {
|
|||||||
});
|
});
|
||||||
var res = await Request().get(Api.memberDynamic, queryParameters: params);
|
var res = await Request().get(Api.memberDynamic, queryParameters: params);
|
||||||
if (res.data['code'] == 0) {
|
if (res.data['code'] == 0) {
|
||||||
|
try {
|
||||||
DynamicsDataModel data = DynamicsDataModel.fromJson(res.data['data']);
|
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');
|
|
||||||
}
|
|
||||||
return Success(data);
|
return Success(data);
|
||||||
|
} catch (err) {
|
||||||
|
return Error(err.toString());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Map errMap = const {
|
Map errMap = const {
|
||||||
-352: '风控校验失败,请检查登录状态',
|
-352: '风控校验失败,请检查登录状态',
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:PiliPlus/common/widgets/pendant_avatar.dart';
|
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/dynamics/article_content_model.dart';
|
||||||
import 'package:PiliPlus/models/model_avatar.dart';
|
import 'package:PiliPlus/models/model_avatar.dart';
|
||||||
import 'package:PiliPlus/models_new/live/live_feed_index/watched_show.dart';
|
import 'package:PiliPlus/models_new/live/live_feed_index/watched_show.dart';
|
||||||
|
import 'package:PiliPlus/utils/storage.dart';
|
||||||
|
|
||||||
class DynamicsDataModel {
|
class DynamicsDataModel {
|
||||||
bool? hasMore;
|
bool? hasMore;
|
||||||
@@ -11,11 +13,49 @@ class DynamicsDataModel {
|
|||||||
String? offset;
|
String? offset;
|
||||||
int? total;
|
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'];
|
hasMore = json['has_more'];
|
||||||
items = (json['items'] as List?)
|
|
||||||
?.map<DynamicItemModel>((e) => DynamicItemModel.fromJson(e))
|
List? list = json['items'] as List?;
|
||||||
.toList();
|
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'];
|
offset = json['offset'];
|
||||||
total = json['total'];
|
total = json['total'];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,11 +36,6 @@ class DynamicsTabController
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
List<DynamicItemModel>? getDataList(DynamicsDataModel response) {
|
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 ?? '';
|
offset = response.offset ?? '';
|
||||||
return response.items;
|
return response.items;
|
||||||
}
|
}
|
||||||
@@ -51,6 +46,7 @@ class DynamicsTabController
|
|||||||
type: dynamicsType,
|
type: dynamicsType,
|
||||||
offset: offset,
|
offset: offset,
|
||||||
mid: mid,
|
mid: mid,
|
||||||
|
tempBannedList: dynamicsController.tempBannedList,
|
||||||
);
|
);
|
||||||
|
|
||||||
Future<void> onRemove(int index, dynamic dynamicId) async {
|
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/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';
|
||||||
@@ -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/subtitle_pref_type.dart';
|
||||||
import 'package:PiliPlus/models/common/video/video_decode_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/common/video/video_quality.dart';
|
||||||
|
import 'package:PiliPlus/models/dynamics/result.dart';
|
||||||
import 'package:PiliPlus/pages/home/controller.dart';
|
import 'package:PiliPlus/pages/home/controller.dart';
|
||||||
import 'package:PiliPlus/pages/hot/controller.dart';
|
import 'package:PiliPlus/pages/hot/controller.dart';
|
||||||
import 'package:PiliPlus/pages/main/controller.dart';
|
import 'package:PiliPlus/pages/main/controller.dart';
|
||||||
@@ -1815,7 +1815,7 @@ List<SettingsModel> get extraSettings => [
|
|||||||
title: '动态关键词过滤',
|
title: '动态关键词过滤',
|
||||||
key: SettingBoxKey.banWordForDyn,
|
key: SettingBoxKey.banWordForDyn,
|
||||||
callback: (value) {
|
callback: (value) {
|
||||||
DynamicsHttp.banWordForDyn = value;
|
DynamicsDataModel.banWordForDyn = value;
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
SettingsModel(
|
SettingsModel(
|
||||||
|
|||||||
Reference in New Issue
Block a user