import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart' show Offset, Session, SessionPageType, SessionSecondaryReply, ThreeDotItem; import 'package:PiliPlus/grpc/im.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/common/common_whisper_controller.dart'; import 'package:get/get.dart'; import 'package:protobuf/protobuf.dart' show PbMap; class WhisperSecController extends CommonWhisperController { WhisperSecController({ required this.sessionPageType, }); PbMap? offset; @override final SessionPageType sessionPageType; Rx?> threeDotItems = Rx?>(null); @override void onInit() { super.onInit(); queryData(); } @override Future onRefresh() { offset = null; return super.onRefresh(); } @override List? getDataList(SessionSecondaryReply response) { if (response.paginationParams.hasMore == false) { isEnd = true; } offset = response.paginationParams.offsets; return response.sessions; } @override bool customHandleResponse( bool isRefresh, Success response) { if (isRefresh) { threeDotItems.value = response.response.threeDotItems; } return false; } @override Future> customGetData() => ImGrpc.sessionSecondary( offset: offset, pageType: sessionPageType, ); }