opt pub panel

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-05-26 17:11:52 +08:00
parent db3b74e33f
commit 3edac65ae8
49 changed files with 879 additions and 360 deletions

View File

@@ -869,4 +869,7 @@ class Api {
static const String pgcReviewMod = '/pgc/review/short/modify';
static const String pgcReviewDel = '/pgc/review/short/del';
static const String topicPubSearch =
'${HttpString.appBaseUrl}/x/topic/pub/search';
}

View File

@@ -1,8 +1,10 @@
import 'package:PiliPlus/common/widgets/pair.dart';
import 'package:PiliPlus/http/api.dart';
import 'package:PiliPlus/http/constants.dart';
import 'package:PiliPlus/http/init.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart';
import 'package:PiliPlus/models/common/reply/reply_option_type.dart';
import 'package:PiliPlus/models/dynamics/article_list/data.dart';
import 'package:PiliPlus/models/dynamics/dyn_topic_feed/topic_card_list.dart';
import 'package:PiliPlus/models/dynamics/dyn_topic_top/top_details.dart';
@@ -12,6 +14,7 @@ import 'package:PiliPlus/models/dynamics/vote_model.dart';
import 'package:PiliPlus/models/space_article/item.dart';
import 'package:PiliPlus/utils/accounts/account.dart';
import 'package:PiliPlus/utils/storage.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:PiliPlus/utils/wbi_sign.dart';
import 'package:dio/dio.dart';
@@ -131,6 +134,96 @@ class DynamicsHttp {
}
}
static Future createDynamic({
dynamic mid,
dynamic dynIdStr, // repost dyn
dynamic rid, // repost video
dynamic dynType,
dynamic rawText,
List? pics,
int? publishTime,
ReplyOptionType? replyOption,
int? privatePub,
List<Map<String, dynamic>>? extraContent,
Pair<int, String>? topic,
String? title,
}) async {
var res = await Request().post(
Api.createDynamic,
queryParameters: {
'platform': 'web',
'csrf': Accounts.main.csrf,
'x-bili-device-req-json': {"platform": "web", "device": "pc"},
'x-bili-web-req-json': {"spm_id": "333.999"},
},
data: {
"dyn_req": {
"content": {
"contents": [
{
"raw_text": rawText,
"type": 1,
"biz_id": "",
},
if (extraContent != null) ...extraContent,
],
if (title?.isNotEmpty == true) 'title': title,
},
if (privatePub != null || replyOption != null || publishTime != null)
"option": {
if (privatePub != null) 'private_pub': privatePub,
if (publishTime != null) "timer_pub_time": publishTime,
if (replyOption == ReplyOptionType.close)
"close_comment": 1
else if (replyOption == ReplyOptionType.choose)
"up_choose_comment": 1,
},
"scene": rid != null
? 5
: dynIdStr != null
? 4
: pics != null
? 2
: 1,
if (pics != null) 'pics': pics,
"attach_card": null,
"upload_id":
"${rid != null ? 0 : mid}_${DateTime.now().millisecondsSinceEpoch ~/ 1000}_${Utils.random.nextInt(9000) + 1000}",
"meta": {
"app_meta": {"from": "create.dynamic.web", "mobi_app": "web"}
},
if (topic != null)
"topic": {
"id": topic.first,
"name": topic.second,
"from_source": "dyn.web.list",
"from_topic_id": 0,
}
},
if (dynIdStr != null || rid != null)
"web_repost_src": {
if (dynIdStr != null) "dyn_id_str": dynIdStr,
if (rid != null)
"revs_id": {
"dyn_type": dynType,
"rid": rid,
}
}
},
);
if (res.data['code'] == 0) {
return {
'status': true,
'data': res.data['data'],
};
} else {
return {
'status': false,
'msg': res.data['message'],
};
}
}
//
static Future dynamicDetail({
dynamic id,

View File

@@ -1,10 +1,7 @@
import 'dart:math';
import 'package:PiliPlus/http/api.dart';
import 'package:PiliPlus/http/constants.dart';
import 'package:PiliPlus/http/init.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/common/reply/reply_option_type.dart';
import 'package:PiliPlus/models/msg/account.dart';
import 'package:PiliPlus/models/msg/im_user_infos/datum.dart';
import 'package:PiliPlus/models/msg/msg_dnd/uid_setting.dart';
@@ -106,86 +103,6 @@ class MsgHttp {
}
}
static Future createDynamic({
dynamic mid,
dynamic dynIdStr, // repost dyn
dynamic rid, // repost video
dynamic dynType,
dynamic rawText,
List? pics,
int? publishTime,
ReplyOptionType? replyOption,
int? privatePub,
List<Map<String, dynamic>>? extraContent,
}) async {
var res = await Request().post(
Api.createDynamic,
queryParameters: {
'platform': 'web',
'csrf': Accounts.main.csrf,
'x-bili-device-req-json': {"platform": "web", "device": "pc"},
'x-bili-web-req-json': {"spm_id": "333.999"},
},
data: {
"dyn_req": {
"content": {
"contents": [
{
"raw_text": rawText,
"type": 1,
"biz_id": "",
},
if (extraContent != null) ...extraContent,
]
},
if (privatePub != null || replyOption != null || publishTime != null)
"option": {
if (privatePub != null) 'private_pub': privatePub,
if (publishTime != null) "timer_pub_time": publishTime,
if (replyOption == ReplyOptionType.close)
"close_comment": 1
else if (replyOption == ReplyOptionType.choose)
"up_choose_comment": 1,
},
"scene": rid != null
? 5
: dynIdStr != null
? 4
: pics != null
? 2
: 1,
if (pics != null) 'pics': pics,
"attach_card": null,
"upload_id":
"${rid != null ? 0 : mid}_${DateTime.now().millisecondsSinceEpoch ~/ 1000}_${Random().nextInt(9000) + 1000}",
"meta": {
"app_meta": {"from": "create.dynamic.web", "mobi_app": "web"}
}
},
if (dynIdStr != null || rid != null)
"web_repost_src": {
if (dynIdStr != null) "dyn_id_str": dynIdStr,
if (rid != null)
"revs_id": {
"dyn_type": dynType,
"rid": rid,
}
}
},
);
if (res.data['code'] == 0) {
return {
'status': true,
'data': res.data['data'],
};
} else {
return {
'status': false,
'msg': res.data['message'],
};
}
}
static Future uploadImage({
required dynamic path,
required String bucket,

View File

@@ -8,6 +8,7 @@ import 'package:PiliPlus/models/pgc/info.dart';
import 'package:PiliPlus/models/search/result.dart';
import 'package:PiliPlus/models/search/search_trending/trending_data.dart';
import 'package:PiliPlus/models/search/suggest.dart';
import 'package:PiliPlus/models/topic_pub_search/data.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:PiliPlus/utils/storage.dart';
import 'package:flutter/material.dart';
@@ -259,4 +260,29 @@ class SearchHttp {
return Error(res.data['message']);
}
}
static Future<LoadingState<TopicPubSearchData>> topicPubSearch({
required String keywords,
String content = '',
required int pageNum,
}) async {
final res = await Request().get(
Api.topicPubSearch,
queryParameters: {
'keywords': keywords,
'content': content,
if (pageNum == 1) ...{
'page_size': 20,
'page_num': 1,
} else
'offset': 20 * (pageNum - 1),
'web_location': 333.1365,
},
);
if (res.data['code'] == 0) {
return Success(TopicPubSearchData.fromJson(res.data['data']));
} else {
return Error(res.data['message']);
}
}
}