Skip to content

Commit

Permalink
mod: article: add action panel
Browse files Browse the repository at this point in the history
related #235

Signed-off-by: bggRGjQaUbCoE <[email protected]>
  • Loading branch information
bggRGjQaUbCoE committed Feb 16, 2025
1 parent 959bcfa commit 81713a6
Show file tree
Hide file tree
Showing 5 changed files with 328 additions and 58 deletions.
34 changes: 0 additions & 34 deletions lib/pages/dynamics/detail/controller.dart
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
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/models/dynamics/result.dart';
import 'package:PiliPlus/pages/common/reply_controller.dart';
import 'package:PiliPlus/utils/feed_back.dart';
import 'package:PiliPlus/utils/global_data.dart';
import 'package:PiliPlus/utils/storage.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:PiliPlus/http/html.dart';
import 'package:PiliPlus/http/reply.dart';
Expand Down Expand Up @@ -63,33 +58,4 @@ class DynamicDetailController extends ReplyController {
page: currentPage,
banWordForReply: banWordForReply,
);

// 动态点赞
Future onLikeDynamic(VoidCallback callback) async {
feedBack();
String dynamicId = item.idStr!;
// 1 已点赞 2 不喜欢 0 未操作
Like like = item.modules.moduleStat.like;
int count = like.count == '点赞' ? 0 : int.parse(like.count ?? '0');
bool status = like.status!;
int up = status ? 2 : 1;
var res = await DynamicsHttp.likeDynamic(dynamicId: dynamicId, up: up);
if (res['status']) {
SmartDialog.showToast(!status ? '点赞成功' : '取消赞');
if (up == 1) {
item.modules.moduleStat.like.count = (count + 1).toString();
item.modules.moduleStat.like.status = true;
} else {
if (count == 1) {
item.modules.moduleStat.like.count = '点赞';
} else {
item.modules.moduleStat.like.count = (count - 1).toString();
}
item.modules.moduleStat.like.status = false;
}
callback();
} else {
SmartDialog.showToast(res['msg']);
}
}
}
19 changes: 12 additions & 7 deletions lib/pages/dynamics/detail/view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,10 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
physics: const AlwaysScrollableScrollPhysics(),
slivers: [
SliverPadding(
padding: EdgeInsets.only(left: padding / 4),
padding: EdgeInsets.only(
left: padding / 4,
bottom: MediaQuery.paddingOf(context).bottom + 80,
),
sliver: SliverToBoxAdapter(
child: DynamicPanel(
item: _dynamicDetailController.item,
Expand Down Expand Up @@ -541,12 +544,14 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
Expanded(
child: Builder(
builder: (context) => TextButton.icon(
onPressed: () =>
_dynamicDetailController.onLikeDynamic(() {
if (context.mounted) {
(context as Element?)?.markNeedsBuild();
}
}),
onPressed: () => Utils.onLikeDynamic(
_dynamicDetailController.item,
() {
if (context.mounted) {
(context as Element?)?.markNeedsBuild();
}
},
),
icon: Icon(
_dynamicDetailController
.item.modules.moduleStat.like!.status!
Expand Down
27 changes: 26 additions & 1 deletion lib/pages/html/controller.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
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/models/dynamics/result.dart';
import 'package:PiliPlus/pages/common/reply_controller.dart';
import 'package:PiliPlus/utils/global_data.dart';
import 'package:PiliPlus/utils/storage.dart';
import 'package:PiliPlus/utils/url_utils.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:PiliPlus/http/html.dart';
import 'package:PiliPlus/http/reply.dart';
Expand All @@ -16,6 +20,8 @@ class HtmlRenderController extends ReplyController {
late Map response;
int? floor;

Rx<DynamicItemModel> item = DynamicItemModel().obs;

RxBool loaded = false.obs;

late final horizontalPreview = GStorage.horizontalPreview;
Expand All @@ -26,10 +32,29 @@ class HtmlRenderController extends ReplyController {
id = Get.parameters['id']!;
dynamicType = Get.parameters['dynamicType']!;
type = dynamicType == 'picture' ? 11 : 12;

if (RegExp(r'^cv', caseSensitive: false).hasMatch(id)) {
UrlUtils.parseRedirectUrl('https://www.bilibili.com/read/$id/')
.then((url) {
if (url != null) {
_queryDyn(url.split('/').last);
}
});
} else {
_queryDyn(id);
}
reqHtml();
}

_queryDyn(id) {
DynamicsHttp.dynamicDetail(id: id).then((res) {
if (res['status']) {
item.value = res['data'];
} else {
debugPrint('${res['msg']}');
}
});
}

// 请求动态内容
Future reqHtml() async {
late dynamic res;
Expand Down
Loading

0 comments on commit 81713a6

Please sign in to comment.