80 lines
2.2 KiB
Dart
80 lines
2.2 KiB
Dart
import 'dart:async';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import '../../../core/network/dio_client.dart';
|
|
import '../domain/business_profile.dart';
|
|
import '../domain/business_feature.dart';
|
|
|
|
class BusinessProfileNotifier extends AsyncNotifier<BusinessProfile?> {
|
|
@override
|
|
FutureOr<BusinessProfile?> build() async {
|
|
return _fetchProfile();
|
|
}
|
|
|
|
Future<BusinessProfile?> _fetchProfile() async {
|
|
final response = await DioClient().dio.get('/business/profile');
|
|
if (response.statusCode == 200) {
|
|
return BusinessProfile.fromJson(response.data);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
Future<void> updateProfile(BusinessProfile profile) async {
|
|
state = const AsyncValue.loading();
|
|
try {
|
|
final response = await DioClient().dio.post(
|
|
'/business/profile',
|
|
data: profile.toJson(),
|
|
);
|
|
|
|
if (response.statusCode == 200) {
|
|
state = AsyncValue.data(BusinessProfile.fromJson(response.data));
|
|
}
|
|
} catch (e, stack) {
|
|
state = AsyncValue.error(e, stack);
|
|
}
|
|
}
|
|
}
|
|
|
|
final businessProfileProvider = AsyncNotifierProvider<BusinessProfileNotifier, BusinessProfile?>(() {
|
|
return BusinessProfileNotifier();
|
|
});
|
|
|
|
class BusinessFeatureNotifier extends AsyncNotifier<BusinessFeature?> {
|
|
@override
|
|
FutureOr<BusinessFeature?> build() async {
|
|
return _fetchFeatures();
|
|
}
|
|
|
|
Future<BusinessFeature?> _fetchFeatures() async {
|
|
try {
|
|
final response = await DioClient().dio.get('/business/features');
|
|
if (response.statusCode == 200) {
|
|
return BusinessFeature.fromJson(response.data);
|
|
}
|
|
} catch (e) {
|
|
// Return default if error
|
|
}
|
|
return BusinessFeature();
|
|
}
|
|
|
|
Future<void> updateFeatures(BusinessFeature feature) async {
|
|
state = const AsyncValue.loading();
|
|
try {
|
|
final response = await DioClient().dio.post(
|
|
'/business/features',
|
|
data: feature.toJson(),
|
|
);
|
|
|
|
if (response.statusCode == 200) {
|
|
state = AsyncValue.data(BusinessFeature.fromJson(response.data));
|
|
}
|
|
} catch (e, stack) {
|
|
state = AsyncValue.error(e, stack);
|
|
}
|
|
}
|
|
}
|
|
|
|
final businessFeatureProvider = AsyncNotifierProvider<BusinessFeatureNotifier, BusinessFeature?>(() {
|
|
return BusinessFeatureNotifier();
|
|
});
|