fix: improve transfer recognition and local data safety

This commit is contained in:
2026-07-26 21:36:46 +08:00
parent 7df25edd96
commit 882293343e
21 changed files with 505 additions and 128 deletions
@@ -3,8 +3,8 @@ import 'package:go_router/go_router.dart';
import 'package:miaoji_zhang/shared/api/api_client.dart';
import 'package:miaoji_zhang/shared/api/auth_api.dart';
import 'package:miaoji_zhang/shared/api/config_api.dart';
import 'package:miaoji_zhang/features/auth/local_data_recovery.dart';
import 'package:miaoji_zhang/shared/services/current_ledger_store.dart';
import 'package:miaoji_zhang/shared/services/guest_merge_service.dart';
import 'package:miaoji_zhang/shared/services/local_database.dart';
import 'package:miaoji_zhang/shared/services/session_store.dart';
import 'package:miaoji_zhang/shared/services/push_service.dart';
@@ -59,36 +59,14 @@ class _LoginPageState extends State<LoginPage> {
: null;
setState(() => _loading = true);
try {
final closureCancelled = await AuthApi.login(
_user.text.trim(),
_pass.text,
);
final profile = await AuthApi.me();
final result = await AuthApi.login(_user.text.trim(), _pass.text);
final profile = result.profile;
await PushService.instance.refresh();
await CurrentLedgerStore.instance.ensureLoaded(force: true);
if (!mounted) return;
if (guestSnapshot?['hasData'] == true) {
final shouldMerge = await showJzConfirmSheet(
context,
title: '发现游客数据',
message: '是否将本机游客账单、分类和预算导入当前账号?数据会放入独立的“游客数据”账本,原游客数据仍保留在本机。',
confirmLabel: '导入数据',
);
if (shouldMerge) {
try {
final result = await GuestMergeService.merge(guestSnapshot!);
if (mounted) {
_showMessage('已导入 ${result.transactionCount} 笔游客账单');
}
} catch (error) {
if (mounted) {
_showMessage('游客数据暂未导入:${apiErrorMessage(error)}');
}
}
}
}
await offerLocalDataRecovery(context, guestSnapshot: guestSnapshot);
if (!mounted) return;
if (closureCancelled) _showMessage('已取消账号注销,欢迎回来');
if (result.accountClosureCancelled) _showMessage('已取消账号注销,欢迎回来');
final destination = !profile.onboardingDone
? '/onboarding'
: profile.appMode == 'ai'