opt: share article

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-04-27 21:55:21 +08:00
parent 6d7b0e8dd5
commit 8fe6e3f4b7
4 changed files with 48 additions and 3 deletions

View File

@@ -786,4 +786,6 @@ class Api {
static const String articleView = '/x/article/view';
static const String opusDetail = '/x/polymer/web-dynamic/v1/opus/detail';
static const String feedInfoWeb = '${HttpString.tUrl}/x/im/feed/infoweb';
}

View File

@@ -570,4 +570,26 @@ class MsgHttp {
static String getDevId() {
return Uuid().v4();
}
static Future feedInfoWeb({
List? aids,
List? epIds,
List? articleIds,
}) async {
var res = await Request().get(
Api.feedInfoWeb,
queryParameters: {
if (aids != null) 'aids': aids.join(','),
if (epIds != null) 'ep_ids': epIds.join(','),
if (articleIds != null) 'article_ids': articleIds.join(','),
'build': 0,
'mobi_app': 'web',
},
);
if (res.data['code'] == 0) {
return {'status': true, 'data': res.data['data']};
} else {
return {'status': false, 'msg': res.data['message']};
}
}
}

View File

@@ -1,6 +1,7 @@
import 'package:PiliPlus/grpc/app/main/community/reply/v1/reply.pb.dart';
import 'package:PiliPlus/http/dynamics.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/http/msg.dart';
import 'package:PiliPlus/http/user.dart';
import 'package:PiliPlus/http/video.dart';
import 'package:PiliPlus/models/dynamics/article_content_model.dart'
@@ -141,7 +142,7 @@ class ArticleController extends ReplyController<MainListReply> {
// stats
Future _getArticleInfo() async {
final res = await DynamicsHttp.articleInfo(cvId: id);
final res = await DynamicsHttp.articleInfo(cvId: commentId);
if (res['status']) {
stats.value = ModuleStatModel(
comment: DynamicStat(count: res['data']?['stats']?['reply']),
@@ -233,6 +234,19 @@ class ArticleController extends ReplyController<MainListReply> {
SmartDialog.showToast(res['msg']);
}
}
Future getArticleCover() async {
final res = await MsgHttp.feedInfoWeb(articleIds: [commentId]);
if (res['status']) {
summary.cover = ((res['data']?['article'] as List?)
?.firstOrNull?['image_urls'] as List?)
?.firstOrNull;
// debugPrint('cover: ${summary.cover}');
return summary.cover != null;
} else {
SmartDialog.showToast(res['msg']);
}
}
}
class Summary {

View File

@@ -620,10 +620,17 @@ class _ArticlePageState extends State<ArticlePage>
],
),
),
if (_articleCtr.type == 'read' && _articleCtr.stats.value != null)
if (_articleCtr.commentType == 12 &&
_articleCtr.stats.value != null)
PopupMenuItem(
onTap: () {
onTap: () async {
try {
if (_articleCtr.summary.cover == null) {
final res = await _articleCtr.getArticleCover();
if (res != true) {
return;
}
}
PageUtils.pmShare(
content: {
"id": _articleCtr.commentId,