import "package:flutter_riverpod/flutter_riverpod.dart"; import "package:dio/dio.dart"; import "package:flash_mail/data/api/api_client.dart"; import "package:flash_mail/data/models/message/message.dart"; import "package:flash_mail/data/models/message_detail/message_detail.dart"; import "package:flash_mail/data/notifiers/account_notifier.dart"; final emailProvider = StateProvider((ref) => null); final passwordProvider = StateProvider((ref) => null); final dioProvider = Provider( (ref) => Dio( BaseOptions( baseUrl: "https://api.mail.tm", connectTimeout: 2000, ), ), ); final clientProvider = Provider( (ref) => ApiClient(ref.read(dioProvider), ref), ); final accountProvider = StateNotifierProvider( (ref) => AccountNotifier(ref), ); final tokenProvider = StateProvider((ref) => null); final messagesProvider = FutureProvider.autoDispose>((ref) { final email = ref.read(emailProvider); final password = ref.read(passwordProvider); return ref.read(clientProvider).fetchMessages(email!, password!); }); final messageDetailProvider = FutureProvider.family( (ref, id) => ref.read(clientProvider).fetchMessageDetail(id), );