import 'dart:async'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../../core/network/dio_client.dart'; import '../domain/sales_channel.dart'; class SalesChannelsNotifier extends AsyncNotifier> { @override FutureOr> build() async { return _fetchChannels(); } Future> _fetchChannels() async { try { final response = await DioClient().dio.get('/sales-channels'); if (response.statusCode == 200) { final List data = response.data; return data.map((e) => SalesChannel.fromJson(e)).toList(); } return []; } catch (e) { print('Error fetching sales channels: $e'); return []; } } Future refresh() async { state = const AsyncValue.loading(); try { final channels = await _fetchChannels(); state = AsyncValue.data(channels); } catch (e, stack) { state = AsyncValue.error(e, stack); } } Future createChannel(SalesChannel channel) async { try { final response = await DioClient().dio.post('/sales-channels', data: channel.toJson()); await refresh(); if (response.data != null) { return SalesChannel.fromJson(response.data); } return null; } catch (e) { throw Exception('Failed to create sales channel: $e'); } } Future updateChannel(int id, SalesChannel channel) async { try { final response = await DioClient().dio.put('/sales-channels/$id', data: channel.toJson()); await refresh(); if (response.data != null) { return SalesChannel.fromJson(response.data); } return null; } catch (e) { throw Exception('Failed to update sales channel: $e'); } } Future deleteChannel(int id) async { try { await DioClient().dio.delete('/sales-channels/$id'); await refresh(); } catch (e) { throw Exception('Failed to delete sales channel: $e'); } } } final salesChannelsProvider = AsyncNotifierProvider>(() { return SalesChannelsNotifier(); });