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