- 同步商城 H5 登录态与原生 token - 完善商城/原生 tab 切换、动画及返回交互 - 修复七鱼客服键盘避让和状态栏恢复 - 调整开屏跳过按钮与登录入口交互
37 lines
1.1 KiB
Dart
37 lines
1.1 KiB
Dart
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import '../../mall/application/mall_tab_config.dart';
|
|
import '../data/ads_api_client.dart';
|
|
import 'splash_ad_controller.dart';
|
|
|
|
final adConfigForegroundRefresherProvider = Provider(
|
|
(ref) => AdConfigForegroundRefresher(
|
|
() => ref.invalidate(featuredAdsProvider(homeBannerAdPlacement)),
|
|
() => ref.read(splashAdControllerProvider).refresh(),
|
|
() => ref.read(mallTabConfigProvider.notifier).refresh(),
|
|
),
|
|
);
|
|
|
|
class AdConfigForegroundRefresher {
|
|
AdConfigForegroundRefresher(this._banner, this._splash, this._mall);
|
|
final void Function() _banner;
|
|
final Future<void> Function() _splash, _mall;
|
|
Future<void>? _running;
|
|
Future<void> refresh({bool refreshMallTabConfig = true}) =>
|
|
_running ??= _refresh(
|
|
refreshMallTabConfig: refreshMallTabConfig,
|
|
).whenComplete(() => _running = null);
|
|
Future<void> _refresh({required bool refreshMallTabConfig}) async {
|
|
try {
|
|
_banner();
|
|
} catch (_) {}
|
|
try {
|
|
await _splash();
|
|
} catch (_) {}
|
|
if (refreshMallTabConfig) {
|
|
try {
|
|
await _mall();
|
|
} catch (_) {}
|
|
}
|
|
}
|
|
}
|