diff --git a/lib/common/core/user_util.dart b/lib/common/core/user_util.dart index fea43a2..aba2f85 100644 --- a/lib/common/core/user_util.dart +++ b/lib/common/core/user_util.dart @@ -9,8 +9,8 @@ import 'package:wow_english/utils/sp_util.dart'; import '../../utils/audio_player_util.dart'; class UserUtil { - static const String _prefsKeyUserInfo = "key_user_info"; + static const String _appReviewPhoneNumber = "18257199148"; static UserEntity? _userEntity; @@ -65,7 +65,8 @@ class UserUtil { }*/ UmengCommonSdk.onProfileSignOff(); AudioPlayerUtil.getInstance().pause(); - pushNamedAndRemoveUntil(AppRouteName.login, (route) => false, arguments: {'showPasswordPage': showPasswordLoginPage}); + pushNamedAndRemoveUntil(AppRouteName.login, (route) => false, + arguments: {'showPasswordPage': showPasswordLoginPage}); } // 是否有权限 @@ -78,6 +79,11 @@ class UserUtil { return getUserToken().isNotEmpty; } + // 是否为应用市场审核账号 + static bool isAppReviewAccount() { + return getUser()?.phoneNum == _appReviewPhoneNumber; + } + static String getUserToken() { return _userEntity?.token ?? ''; } diff --git a/lib/pages/home/view.dart b/lib/pages/home/view.dart index 57ab494..19874bc 100644 --- a/lib/pages/home/view.dart +++ b/lib/pages/home/view.dart @@ -169,7 +169,8 @@ class _HomePageView extends StatelessWidget { }, child: Offstage( offstage: AppConfigHelper.shouldHidePay() || - !UserUtil.isLogined(), + !UserUtil.isLogined() || + UserUtil.isAppReviewAccount(), child: const ShakeImage(), )); }), diff --git a/lib/pages/section/bloc/section_bloc.dart b/lib/pages/section/bloc/section_bloc.dart index afcb1d7..707fde1 100644 --- a/lib/pages/section/bloc/section_bloc.dart +++ b/lib/pages/section/bloc/section_bloc.dart @@ -5,9 +5,11 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:wow_english/common/core/user_util.dart'; import 'package:wow_english/common/request/dao/lesson_dao.dart'; import 'package:wow_english/common/request/exception.dart'; import 'package:wow_english/common/request/dao/listen_dao.dart'; +import 'package:wow_english/pages/section/section_type.dart'; import 'package:wow_english/utils/audio_player_util.dart'; import 'package:wow_english/utils/loading.dart'; import 'package:wow_english/utils/toast_util.dart'; @@ -73,7 +75,7 @@ class SectionBloc extends Bloc { await LessonDao.courseSection(courseUnitId: event.courseUnitId); if (courseSectionEntities != null) { _courseSectionDatasMap[event.courseUnitId] = - await LessonDao.courseSection(courseUnitId: event.courseUnitId); + _filterReviewContent(courseSectionEntities); emitter(LessonDataLoadState()); } }); @@ -203,6 +205,31 @@ class SectionBloc extends Bloc { return null; } + List _filterReviewContent( + List courseSections) { + if (!UserUtil.isAppReviewAccount()) { + return courseSections; + } + return courseSections + .where((section) => section.courseType != SectionType.pictureBook.value) + .toList(); + } + + CourseSectionEntity? _findNextVisibleCourseSection( + CourseSectionEntity currentSection) { + if (!UserUtil.isAppReviewAccount()) { + return findCourseSectionBySort(currentSection.sortOrder + 1); + } + + final currentUnitSections = + _courseSectionDatasMap[currentSection.courseUnitId]; + final nextSections = currentUnitSections + ?.where((section) => section.sortOrder > currentSection.sortOrder) + .toList() + ?..sort((a, b) => a.sortOrder.compareTo(b.sortOrder)); + return nextSections?.firstOrNull; + } + ///根据courseLessonId查找对应的CourseUnitDetail CourseUnitDetail? findCourseUnitDetailById(int courseLessonId) { final curCourseSectionEntity = findCourseSectionById(courseLessonId); @@ -224,7 +251,9 @@ class SectionBloc extends Bloc { try { ///查找当前unit的下一个section CourseSectionEntity? nextCourseSectionEntity = - findCourseSectionBySort(curSectionSort + 1); + curCourseSectionEntity == null + ? findCourseSectionBySort(curSectionSort + 1) + : _findNextVisibleCourseSection(curCourseSectionEntity); return checkCourseSectionLocked( courseLessonId, nextCourseSectionEntity, emitter); } catch (e) { @@ -251,6 +280,7 @@ class SectionBloc extends Bloc { List? tempSectionEntities = await LessonDao.courseSection(courseUnitId: courseUnitId); if (tempSectionEntities != null) { + tempSectionEntities = _filterReviewContent(tempSectionEntities); _courseSectionDatasMap[courseUnitId] = tempSectionEntities; emitter(LessonDataLoadState()); } @@ -356,8 +386,12 @@ class SectionBloc extends Bloc { if (courseSectionEntity == null) { ///如果没下载过,请求数据 await loading(() async { - _courseSectionDatasMap[courseUnitId] = + final courseSections = await LessonDao.courseSection(courseUnitId: courseUnitId); + if (courseSections != null) { + _courseSectionDatasMap[courseUnitId] = + _filterReviewContent(courseSections); + } emitter(LessonDataLoadState()); }); }