feat: add an owner + sell screen
This commit is contained in:
parent
d2cbb43bcb
commit
073f8bd334
15 changed files with 354 additions and 82 deletions
1
lib/data/repositories/book_instance_repository.dart
Normal file
1
lib/data/repositories/book_instance_repository.dart
Normal file
|
|
@ -0,0 +1 @@
|
|||
class BookInstanceRepository {}
|
||||
1
lib/data/repositories/book_repository.dart
Normal file
1
lib/data/repositories/book_repository.dart
Normal file
|
|
@ -0,0 +1 @@
|
|||
class BookRepository {}
|
||||
|
|
@ -1,8 +1,5 @@
|
|||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:rxdart/rxdart.dart';
|
||||
import 'package:seshat/data/services/api_client.dart';
|
||||
import 'package:seshat/data/services/websocket_client.dart';
|
||||
import 'package:seshat/domain/models/owner.dart';
|
||||
|
|
@ -17,22 +14,25 @@ class OwnerRepository {
|
|||
|
||||
final ApiClient _apiClient;
|
||||
final WebsocketClient _wsClient;
|
||||
final BehaviorSubject<Owner> _ownersController = BehaviorSubject<Owner>(
|
||||
sync: true,
|
||||
);
|
||||
late final StreamSubscription sub;
|
||||
List<Owner>? _cachedOwners;
|
||||
|
||||
Future<Result<Owner>> postOwner(
|
||||
/// Adds an [Owner] to the database, and gets the resulting [Owner].
|
||||
Future<Result<Owner>> addOwner(
|
||||
String firstName,
|
||||
String lastName,
|
||||
String contact,
|
||||
) async {
|
||||
return Result.ok(
|
||||
Owner(firstName: firstName, lastName: lastName, contact: contact, id: 50),
|
||||
);
|
||||
var response = await _apiClient.addOwner(firstName, lastName, contact);
|
||||
switch (response) {
|
||||
case Ok():
|
||||
return Result.ok(response.value);
|
||||
case Error():
|
||||
return Result.error(response.error);
|
||||
}
|
||||
}
|
||||
|
||||
/// Fetches all the [Owner]s from the database, and subscribes to updates
|
||||
Future<Result<List<Owner>>> getOwners() async {
|
||||
if (_cachedOwners == null) {
|
||||
final result = await _apiClient.getOwners();
|
||||
|
|
@ -43,9 +43,7 @@ class OwnerRepository {
|
|||
}
|
||||
|
||||
sub = _wsClient.owners.listen((owner) {
|
||||
debugPrint("\n\n\n\n[3] Added : $owner\n\n\n\n");
|
||||
_cachedOwners!.add(owner);
|
||||
_ownersController.add(owner);
|
||||
});
|
||||
|
||||
return result;
|
||||
|
|
@ -54,8 +52,6 @@ class OwnerRepository {
|
|||
}
|
||||
}
|
||||
|
||||
Stream<Owner> get liveOwners => _ownersController.stream;
|
||||
|
||||
dispose() {
|
||||
sub.cancel();
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue