// ============================================================
// TransferProvider — 转赠 Riverpod Providers
// ============================================================

import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../../../core/network/api_client.dart';

class TransferState {
  final bool isLoading;
  final bool isSuccess;
  final String? error;

  const TransferState({this.isLoading = false, this.isSuccess = false, this.error});

  TransferState copyWith({bool? isLoading, bool? isSuccess, String? error, bool clearError = false}) {
    return TransferState(
      isLoading: isLoading ?? this.isLoading,
      isSuccess: isSuccess ?? this.isSuccess,
      error: clearError ? null : (error ?? this.error),
    );
  }
}

class TransferNotifier extends Notifier<TransferState> {
  @override
  TransferState build() => const TransferState();

  Future<void> transfer({
    required String holdingId,
    required String recipientPhone,
    int quantity = 1,
  }) async {
    state = state.copyWith(isLoading: true, clearError: true, isSuccess: false);
    try {
      final api = ApiClient.instance;
      await api.post('/api/v1/transfers', data: {
        'holdingId': holdingId,
        'recipientPhone': recipientPhone,
        'quantity': quantity,
      });
      state = state.copyWith(isLoading: false, isSuccess: true);
    } catch (e) {
      state = state.copyWith(isLoading: false, error: e.toString());
      rethrow;
    }
  }
}

final transferProvider = NotifierProvider<TransferNotifier, TransferState>(TransferNotifier.new);
