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:moneymgr_mobile/services/api/api_client.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/utils/extensions.dart';
 | 
			
		||||
import 'package:moneymgr_mobile/utils/hooks.dart';
 | 
			
		||||
@@ -27,8 +28,20 @@ Future<void> _performSynchronization(Ref ref) async {
 | 
			
		||||
      bytes: bytes,
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // TODO continue
 | 
			
		||||
    break;
 | 
			
		||||
    // Then, create the inbox entry
 | 
			
		||||
    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