Can upload expenses to server
This commit is contained in:
		
							
								
								
									
										27
									
								
								moneymgr_mobile/lib/services/api/inbox_api.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								moneymgr_mobile/lib/services/api/inbox_api.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'api_client.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part 'inbox_api.freezed.dart';
 | 
				
			||||||
 | 
					part 'inbox_api.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					abstract class UpdateInboxEntryRequest with _$UpdateInboxEntryRequest {
 | 
				
			||||||
 | 
					  const factory UpdateInboxEntryRequest({
 | 
				
			||||||
 | 
					    // ignore: non_constant_identifier_names
 | 
				
			||||||
 | 
					    required int file_id,
 | 
				
			||||||
 | 
					    required int time,
 | 
				
			||||||
 | 
					    required String? label,
 | 
				
			||||||
 | 
					    required double? amount,
 | 
				
			||||||
 | 
					  }) = _UpdateInboxEntryRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory UpdateInboxEntryRequest.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$UpdateInboxEntryRequestFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extension InboxApi on ApiClient {
 | 
				
			||||||
 | 
					  /// Create a new inbox entry
 | 
				
			||||||
 | 
					  Future<void> createInboxEntry(UpdateInboxEntryRequest entry) async {
 | 
				
			||||||
 | 
					    await execute("/inbox", method: "POST", data: entry.toJson());
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -3,6 +3,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 | 
				
			|||||||
import 'package:logging/logging.dart';
 | 
					import 'package:logging/logging.dart';
 | 
				
			||||||
import 'package:moneymgr_mobile/services/api/api_client.dart';
 | 
					import 'package:moneymgr_mobile/services/api/api_client.dart';
 | 
				
			||||||
import 'package:moneymgr_mobile/services/api/files_api.dart';
 | 
					import 'package:moneymgr_mobile/services/api/files_api.dart';
 | 
				
			||||||
 | 
					import 'package:moneymgr_mobile/services/api/inbox_api.dart';
 | 
				
			||||||
import 'package:moneymgr_mobile/services/storage/expenses.dart';
 | 
					import 'package:moneymgr_mobile/services/storage/expenses.dart';
 | 
				
			||||||
import 'package:moneymgr_mobile/utils/extensions.dart';
 | 
					import 'package:moneymgr_mobile/utils/extensions.dart';
 | 
				
			||||||
import 'package:moneymgr_mobile/utils/hooks.dart';
 | 
					import 'package:moneymgr_mobile/utils/hooks.dart';
 | 
				
			||||||
@@ -27,8 +28,20 @@ Future<void> _performSynchronization(Ref ref) async {
 | 
				
			|||||||
      bytes: bytes,
 | 
					      bytes: bytes,
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // TODO continue
 | 
					    // Then, create the inbox entry
 | 
				
			||||||
    break;
 | 
					    await apiService.createInboxEntry(
 | 
				
			||||||
 | 
					      UpdateInboxEntryRequest(
 | 
				
			||||||
 | 
					        file_id: file.id,
 | 
				
			||||||
 | 
					        time: exp.time,
 | 
				
			||||||
 | 
					        label: exp.label,
 | 
				
			||||||
 | 
					        amount: -1 * exp.cost,
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Lastly delete the local expense
 | 
				
			||||||
 | 
					    ref.watch(expensesProvider).requireValue.deleteExpense(exp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ref.invalidate(expensesProvider);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user