// Author: fruit.com.cn import 'dart:async'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../l10n/app_localizations.dart'; import '../data/services/download_controller.dart'; import '../platform/haptics.dart'; import 'auth_gate.dart'; /// 详情页与播放页共用的下载授权入口。 /// /// 未登录先走登录闸;业务拒绝时直接展示后端 message。 Future requestEpisodeDownload( BuildContext context, String episodeId, ) async { if (!await ensureSignedIn(context)) return; if (!context.mounted) return; unawaited(context.read().lightImpact()); final downloads = context.read(); final result = await downloads.grant(episodeId); if (!context.mounted) return; final l10n = AppLocalizations.of(context)!; final hasBackendMessage = result.message?.trim().isNotEmpty ?? false; if (result.ok) { unawaited( downloads.startDownload(episodeId, license: result.license), ); } final message = result.ok ? l10n.downloadGranted : hasBackendMessage ? result.message! : l10n.downloadGrantFailed; ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(message))); }