feat: Update API endpoint usage in repositories to remove redundant path property
- Refactored multiple repository implementations across client and staff features to directly use endpoint objects without accessing the `path` property. - Introduced a new `FeatureGate` class for client-side feature gating based on user scopes, allowing for better access control to API endpoints. - Added `ApiEndpoint` class to represent API endpoints with their paths and required scopes for future feature gating.
This commit is contained in:
@@ -17,7 +17,7 @@ class BillingRepositoryImpl implements BillingRepository {
|
||||
@override
|
||||
Future<List<BillingAccount>> getBankAccounts() async {
|
||||
final ApiResponse response =
|
||||
await _apiService.get(ClientEndpoints.billingAccounts.path);
|
||||
await _apiService.get(ClientEndpoints.billingAccounts);
|
||||
final List<dynamic> items =
|
||||
(response.data as Map<String, dynamic>)['items'] as List<dynamic>;
|
||||
return items
|
||||
@@ -29,7 +29,7 @@ class BillingRepositoryImpl implements BillingRepository {
|
||||
@override
|
||||
Future<List<Invoice>> getPendingInvoices() async {
|
||||
final ApiResponse response =
|
||||
await _apiService.get(ClientEndpoints.billingInvoicesPending.path);
|
||||
await _apiService.get(ClientEndpoints.billingInvoicesPending);
|
||||
final List<dynamic> items =
|
||||
(response.data as Map<String, dynamic>)['items'] as List<dynamic>;
|
||||
return items
|
||||
@@ -41,7 +41,7 @@ class BillingRepositoryImpl implements BillingRepository {
|
||||
@override
|
||||
Future<List<Invoice>> getInvoiceHistory() async {
|
||||
final ApiResponse response =
|
||||
await _apiService.get(ClientEndpoints.billingInvoicesHistory.path);
|
||||
await _apiService.get(ClientEndpoints.billingInvoicesHistory);
|
||||
final List<dynamic> items =
|
||||
(response.data as Map<String, dynamic>)['items'] as List<dynamic>;
|
||||
return items
|
||||
@@ -53,7 +53,7 @@ class BillingRepositoryImpl implements BillingRepository {
|
||||
@override
|
||||
Future<int> getCurrentBillCents() async {
|
||||
final ApiResponse response =
|
||||
await _apiService.get(ClientEndpoints.billingCurrentBill.path);
|
||||
await _apiService.get(ClientEndpoints.billingCurrentBill);
|
||||
final Map<String, dynamic> data =
|
||||
response.data as Map<String, dynamic>;
|
||||
return (data['currentBillCents'] as num).toInt();
|
||||
@@ -62,7 +62,7 @@ class BillingRepositoryImpl implements BillingRepository {
|
||||
@override
|
||||
Future<int> getSavingsCents() async {
|
||||
final ApiResponse response =
|
||||
await _apiService.get(ClientEndpoints.billingSavings.path);
|
||||
await _apiService.get(ClientEndpoints.billingSavings);
|
||||
final Map<String, dynamic> data =
|
||||
response.data as Map<String, dynamic>;
|
||||
return (data['savingsCents'] as num).toInt();
|
||||
@@ -74,7 +74,7 @@ class BillingRepositoryImpl implements BillingRepository {
|
||||
required String endDate,
|
||||
}) async {
|
||||
final ApiResponse response = await _apiService.get(
|
||||
ClientEndpoints.billingSpendBreakdown.path,
|
||||
ClientEndpoints.billingSpendBreakdown,
|
||||
params: <String, dynamic>{
|
||||
'startDate': startDate,
|
||||
'endDate': endDate,
|
||||
@@ -90,13 +90,13 @@ class BillingRepositoryImpl implements BillingRepository {
|
||||
|
||||
@override
|
||||
Future<void> approveInvoice(String id) async {
|
||||
await _apiService.post(ClientEndpoints.invoiceApprove(id).path);
|
||||
await _apiService.post(ClientEndpoints.invoiceApprove(id));
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> disputeInvoice(String id, String reason) async {
|
||||
await _apiService.post(
|
||||
ClientEndpoints.invoiceDispute(id).path,
|
||||
ClientEndpoints.invoiceDispute(id),
|
||||
data: <String, dynamic>{'reason': reason},
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user