|
|
|
import 'package:doublefeel_flutter/app/modules/friends/controllers/friend_trend_controller.dart';
|
|
|
|
import 'package:doublefeel_flutter/app/modules/friends/controllers/friends_controller.dart';
|
|
|
|
import 'package:doublefeel_flutter/core/constants/event_const.dart';
|
|
|
|
import 'package:doublefeel_flutter/core/constants/intent_keys.dart';
|
|
|
|
import 'package:doublefeel_flutter/core/network/api/click_event_api.dart';
|
|
|
|
import 'package:doublefeel_flutter/core/network/api/friend_api.dart';
|
|
|
|
import 'package:doublefeel_flutter/core/result/app_result.dart';
|
|
|
|
import 'package:doublefeel_flutter/core/services/thinking_data_service.dart';
|
|
...
|
...
|
@@ -7,14 +10,13 @@ import 'package:doublefeel_flutter/core/services/user_state_service.dart'; |
|
|
|
import 'package:doublefeel_flutter/data/local/local_storage.dart';
|
|
|
|
import 'package:doublefeel_flutter/pigeon/platform_api.g.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter/services.dart';
|
|
|
|
import 'package:flutter/scheduler.dart';
|
|
|
|
|
|
|
|
import 'package:flutter/services.dart';
|
|
|
|
import 'package:get/get.dart';
|
|
|
|
|
|
|
|
import '../../../routes/app_pages.dart';
|
|
|
|
import '../../purchase/purchase_route_args.dart';
|
|
|
|
import '../../app_review_prompt/logic/app_review_prompt_logic.dart';
|
|
|
|
import '../../purchase/purchase_route_args.dart';
|
|
|
|
import '../../report_common/models/report_period.dart';
|
|
|
|
import 'today_controller.dart';
|
|
|
|
import 'trend/trend_controller.dart';
|
|
...
|
...
|
@@ -81,8 +83,29 @@ class HomeController extends GetxController { |
|
|
|
return url.isNotEmpty;
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<void> maybeShowAppReviewPrompt(BuildContext context) {
|
|
|
|
return _appReviewPromptLogic.maybeShowPrompt(context);
|
|
|
|
Future<void> maybeShowAppReviewPrompt(BuildContext context) async {
|
|
|
|
if (!_appReviewPromptLogic.canShowPrompt(context)) return;
|
|
|
|
|
|
|
|
final canShowPrompt = await _hasReviewPromptClickEvent();
|
|
|
|
if (!canShowPrompt) return;
|
|
|
|
|
|
|
|
await _appReviewPromptLogic.maybeShowPrompt(context);
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<bool> _hasReviewPromptClickEvent() async {
|
|
|
|
if (!Get.isRegistered<ClickEventApi>()) return false;
|
|
|
|
|
|
|
|
final result = await Get.find<ClickEventApi>().getClickEvent();
|
|
|
|
return switch (result) {
|
|
|
|
AppSuccess(:final data) =>
|
|
|
|
data.list?.any(
|
|
|
|
(item) =>
|
|
|
|
EventConst.keys.contains(item.eventName) &&
|
|
|
|
(item.clickCnt ?? 0) > 0,
|
|
|
|
) ??
|
|
|
|
false,
|
|
|
|
AppFailure() => false,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<bool> maybeShowMembershipOffer() async {
|
|
...
|
...
|
@@ -102,7 +125,10 @@ class HomeController extends GetxController { |
|
|
|
);
|
|
|
|
await Get.toNamed(
|
|
|
|
Routes.PURCHASE,
|
|
|
|
arguments: {PurchaseRouteArgs.showCloseButton: true},
|
|
|
|
arguments: {
|
|
|
|
PurchaseRouteArgs.showCloseButton: true,
|
|
|
|
IntentKeys.channelType: "登录全屏推送",
|
|
|
|
},
|
|
|
|
);
|
|
|
|
return true;
|
|
|
|
}
|
|
...
|
...
|
@@ -120,7 +146,7 @@ class HomeController extends GetxController { |
|
|
|
} else if (previousIndex == friendsTabIndex && index != friendsTabIndex) {
|
|
|
|
Get.find<FriendsController>().markPageHidden();
|
|
|
|
}
|
|
|
|
switch (index) {
|
|
|
|
switch (index) {
|
|
|
|
case 0:
|
|
|
|
Get.find<TodayController>().refreshTab();
|
|
|
|
break;
|
|
...
|
...
|
@@ -149,6 +175,7 @@ class HomeController extends GetxController { |
|
|
|
final params = uri.queryParameters; // {"tab": "today"} 等
|
|
|
|
|
|
|
|
_dispatchRoute(path, params);
|
|
|
|
_executePostClickEvent(path, params);
|
|
|
|
} catch (_) {}
|
|
|
|
}
|
|
|
|
|
|
...
|
...
|
@@ -199,6 +226,24 @@ class HomeController extends GetxController { |
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void _executePostClickEvent(String path, Map<String, String> params) {
|
|
|
|
try {
|
|
|
|
var isHrvChange = params['is_hrv_change'] == "1";
|
|
|
|
if (isHrvChange) {
|
|
|
|
final clickEventApi = Get.find<ClickEventApi>();
|
|
|
|
if (!Get.isRegistered<ClickEventApi>()) return;
|
|
|
|
switch (path) {
|
|
|
|
case AppRoutes.home:
|
|
|
|
clickEventApi.postClickEvent(EventConst.hrvChangeClick);
|
|
|
|
break;
|
|
|
|
case Routes.FRIEND_HOME:
|
|
|
|
clickEventApi.postClickEvent(EventConst.friendHrvChangeClick);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (e) {}
|
|
|
|
}
|
|
|
|
|
|
|
|
/// 根据 tab 名称切换首页底部 tab
|
|
|
|
void _switchHomeTab(String? tab, Map<String, String> params) {
|
|
|
|
switch (tab) {
|
...
|
...
|
|