feat: bili comm antifraud

Closes #275

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-02-17 18:45:08 +08:00
parent 957c326148
commit 7ddc3adfaa
15 changed files with 196 additions and 112 deletions

View File

@@ -3,6 +3,7 @@ import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/video/reply/item.dart';
import 'package:PiliPlus/pages/common/reply_controller.dart';
import 'package:PiliPlus/utils/global_data.dart';
import 'package:PiliPlus/utils/id_utils.dart';
import 'package:PiliPlus/utils/storage.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -27,9 +28,9 @@ class VideoReplyReplyController extends ReplyController
bool hasRoot = false;
int? id;
// 视频aid 请求时使用的oid
int? oid;
int oid;
// rpid 请求楼中楼回复
int? rpid;
int rpid;
ReplyType replyType; // = ReplyType.video;
int? upMid;
@@ -42,6 +43,10 @@ class VideoReplyReplyController extends ReplyController
late final horizontalPreview = GStorage.horizontalPreview;
@override
dynamic get sourceId =>
replyType == ReplyType.video ? IdUtils.av2bv(oid) : oid;
@override
void onInit() {
super.onInit();
@@ -49,26 +54,6 @@ class VideoReplyReplyController extends ReplyController
queryData();
}
@override
Future queryData([bool isRefresh = true]) async {
// if (GlobalData().grpcReply &&
// !isDialogue &&
// currentPage == 1 &&
// !hasRoot &&
// firstFloor == null &&
// rpid != null) {
// await GrpcRepo.replyInfo(
// rpid: rpid!,
// ).then((res) {
// if (res['status'] && (res['data']?.mid ?? -1) > 0) {
// firstFloor = res['data'];
// hasRoot = true;
// }
// });
// }
return super.queryData(isRefresh);
}
@override
Future onRefresh() {
cursor = null;
@@ -177,8 +162,8 @@ class VideoReplyReplyController extends ReplyController
Future<LoadingState> customGetData() => isDialogue
? ReplyHttp.dialogListGrpc(
type: replyType.index,
oid: oid!,
root: rpid!,
oid: oid,
root: rpid,
rpid: dialog!,
cursor: CursorReq(
next: cursor?.next,
@@ -190,8 +175,8 @@ class VideoReplyReplyController extends ReplyController
: GlobalData().grpcReply
? ReplyHttp.replyReplyListGrpc(
type: replyType.index,
oid: oid!,
root: rpid!,
oid: oid,
root: rpid,
rpid: id ?? 0,
cursor: CursorReq(
next: cursor?.next,
@@ -202,8 +187,8 @@ class VideoReplyReplyController extends ReplyController
)
: ReplyHttp.replyReplyList(
isLogin: isLogin,
oid: oid!,
root: rpid!,
oid: oid,
root: rpid,
pageNum: currentPage,
type: replyType.index,
banWordForReply: banWordForReply,

View File

@@ -22,8 +22,8 @@ class VideoReplyReplyPanel extends StatefulWidget {
const VideoReplyReplyPanel({
super.key,
this.id,
this.oid,
this.rpid,
required this.oid,
required this.rpid,
this.dialog,
this.firstFloor,
this.source,
@@ -34,8 +34,8 @@ class VideoReplyReplyPanel extends StatefulWidget {
this.onDismissed,
});
final int? id;
final int? oid;
final int? rpid;
final int oid;
final int rpid;
final int? dialog;
final dynamic firstFloor;
final String? source;
@@ -366,12 +366,20 @@ class _VideoReplyReplyPanelState extends State<VideoReplyReplyPanel>
LoadingState.success(list);
if (_videoReplyReplyController.enableCommAntifraud && mounted) {
_videoReplyReplyController.checkReply(
context,
oid,
root,
widget.replyType.index,
replyInfo.id.toInt(),
replyInfo.content.message,
context: context,
oid: oid,
rpid: root,
replyType: widget.replyType.index,
replyId: replyInfo.id.toInt(),
message: replyInfo.content.message,
//
root: replyInfo.root.toInt(),
parent: replyInfo.parent.toInt(),
ctime: replyInfo.ctime.toInt(),
pictures: replyInfo.content.pictures
.map((item) => item.toProto3Json())
.toList(),
mid: replyInfo.mid.toInt(),
);
}
} else {
@@ -386,12 +394,18 @@ class _VideoReplyReplyPanelState extends State<VideoReplyReplyPanel>
LoadingState.success(list);
if (_videoReplyReplyController.enableCommAntifraud && mounted) {
_videoReplyReplyController.checkReply(
context,
oid,
root,
widget.replyType.index,
replyInfo.rpid ?? 0,
replyInfo.content?.message ?? '',
context: context,
oid: oid,
rpid: root,
replyType: widget.replyType.index,
replyId: replyInfo.rpid ?? 0,
message: replyInfo.content?.message ?? '',
//
root: replyInfo.root,
parent: replyInfo.parent,
ctime: replyInfo.ctime,
pictures: replyInfo.content?.pictures,
mid: replyInfo.mid,
);
}
}