From 125168cfb9d4cbe46d4fdb794145dc2f7b5c70c3 Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Tue, 14 Jan 2025 15:49:31 +0800 Subject: [PATCH] mod: show total ss Signed-off-by: bggRGjQaUbCoE --- .../season_series/season_series_page.dart | 7 +++- .../widget/season_series_card.dart | 3 -- .../member_contribute_ctr.dart | 31 +++++++++------ lib/pages/member/new/controller.dart | 39 ++++++++++--------- 4 files changed, 47 insertions(+), 33 deletions(-) diff --git a/lib/pages/member/new/content/member_contribute/content/season_series/season_series_page.dart b/lib/pages/member/new/content/member_contribute/content/season_series/season_series_page.dart index 37c511bc..620f837e 100644 --- a/lib/pages/member/new/content/member_contribute/content/season_series/season_series_page.dart +++ b/lib/pages/member/new/content/member_contribute/content/season_series/season_series_page.dart @@ -23,14 +23,19 @@ class SeasonSeriesPage extends StatefulWidget { State createState() => _SeasonSeriesPageState(); } -class _SeasonSeriesPageState extends State { +class _SeasonSeriesPageState extends State + with AutomaticKeepAliveClientMixin { late final _controller = Get.put( SeasonSeriesController(widget.mid), tag: widget.heroTag, ); + @override + bool get wantKeepAlive => true; + @override Widget build(BuildContext context) { + super.build(context); return Obx(() => _buildBody(_controller.loadingState.value)); } diff --git a/lib/pages/member/new/content/member_contribute/content/season_series/widget/season_series_card.dart b/lib/pages/member/new/content/member_contribute/content/season_series/widget/season_series_card.dart index debbde6d..7cb7243f 100644 --- a/lib/pages/member/new/content/member_contribute/content/season_series/widget/season_series_card.dart +++ b/lib/pages/member/new/content/member_contribute/content/season_series/widget/season_series_card.dart @@ -2,11 +2,8 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/image_save.dart'; import 'package:PiliPlus/common/widgets/network_img_layer.dart'; -import 'package:PiliPlus/pages/member/new/content/member_contribute/content/video/member_video.dart'; -import 'package:PiliPlus/pages/member/new/content/member_contribute/member_contribute.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; -import 'package:get/get.dart'; class SeasonSeriesCard extends StatelessWidget { const SeasonSeriesCard({ diff --git a/lib/pages/member/new/content/member_contribute/member_contribute_ctr.dart b/lib/pages/member/new/content/member_contribute/member_contribute_ctr.dart index a1155701..7313f82f 100644 --- a/lib/pages/member/new/content/member_contribute/member_contribute_ctr.dart +++ b/lib/pages/member/new/content/member_contribute/member_contribute_ctr.dart @@ -32,17 +32,26 @@ class MemberContributeCtr extends CommonController if (contribute.items?.isNullOrEmpty == false && contribute.items!.length > 1) { items = contribute.items; - if (_ctr.ugcSeasonCount != null) { - int currentSeasonCount = - items!.where((item) => item.param == 'season_video').length; - if (currentSeasonCount < _ctr.ugcSeasonCount!) { - items!.add( - Item( - param: 'ugcSeason', - title: '全部合集/列表', - ), - ); - } + // if (_ctr.ugcSeasonCount != null) { + // int currentSeasonCount = + // items!.where((item) => item.param == 'season_video').length; + // if (currentSeasonCount < _ctr.ugcSeasonCount!) { + // items!.add( + // Item( + // param: 'ugcSeason', + // title: '全部合集/列表', + // ), + // ); + // } + // } + // show if exist + if (_ctr.hasSeasonOrSeries == true) { + items!.add( + Item( + param: 'ugcSeason', + title: '全部合集/列表', + ), + ); } tabs = items!.map((item) => Tab(text: item.title)).toList(); tabController = TabController( diff --git a/lib/pages/member/new/controller.dart b/lib/pages/member/new/controller.dart index 640c41e2..115584b5 100644 --- a/lib/pages/member/new/controller.dart +++ b/lib/pages/member/new/controller.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/member.dart'; import 'package:PiliPlus/http/video.dart'; +import 'package:PiliPlus/models/space/data.dart'; import 'package:PiliPlus/models/space/tab2.dart'; import 'package:PiliPlus/pages/common/common_controller.dart'; import 'package:PiliPlus/utils/storage.dart'; @@ -31,7 +32,7 @@ class MemberControllerNew extends CommonController List? tab2; RxInt contributeInitialIndex = 0.obs; double? top; - int? ugcSeasonCount; + bool? hasSeasonOrSeries; @override void onInit() { @@ -47,26 +48,28 @@ class MemberControllerNew extends CommonController @override bool customHandleResponse(Success response) { - username = response.response?.card?.name ?? ''; - isFollow.value = response.response?.card?.relation?.isFollow == 1; - relation.value = response.response?.relSpecial == 1 - ? 2 - : response.response?.relation ?? 1; - tab2 = response.response.tab2; - live = response.response?.live; - silence = response.response?.card?.silence; - ugcSeasonCount = response.response?.ugcSeason?.count; - if (response.response?.card?.endTime != null) { - if (response.response.card.endTime == 0) { + Data data = response.response; + username = data.card?.name ?? ''; + isFollow.value = data.card?.relation?.isFollow == 1; + relation.value = data.relSpecial == 1 ? 2 : data.relation ?? 1; + tab2 = data.tab2; + live = data.live; + silence = data.card?.silence; + if ((data.ugcSeason?.count != null && data.ugcSeason?.count != 0) || + data.series?.item?.isNotEmpty == true) { + hasSeasonOrSeries = true; + } + if (data.card?.endTime != null) { + if (data.card!.endTime == 0) { endTime = ': 永久封禁'; - } else if (response.response.card.endTime > + } else if (data.card!.endTime! > DateTime.now().millisecondsSinceEpoch ~/ 1000) { endTime = - ':至 ${DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.fromMillisecondsSinceEpoch(response.response.card.endTime * 1000))}'; + ':至 ${DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.fromMillisecondsSinceEpoch(data.card!.endTime! * 1000))}'; } } if (tab2 != null && tab2!.isNotEmpty) { - if (!response.response.tab.toJson().values.contains(true) && + if (!data.tab!.toJson().values.contains(true) && tab2!.first.param == 'home') { // remove empty home tab tab2!.removeAt(0); @@ -80,11 +83,11 @@ class MemberControllerNew extends CommonController }); } if (initialIndex == -1) { - if (response.response.defaultTab == 'video') { - response.response.defaultTab = 'dynamic'; + if (data.defaultTab == 'video') { + data.defaultTab = 'dynamic'; } initialIndex = tab2!.indexWhere((item) { - return item.param == response.response.defaultTab; + return item.param == data.defaultTab; }); } tabs = tab2!.map((item) => Tab(text: item.title ?? '')).toList();