feat: add a book by scanning
This commit is contained in:
parent
72fd0b66a9
commit
981dce5bfe
14 changed files with 264 additions and 59 deletions
|
|
@ -3,19 +3,30 @@ import 'dart:async';
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mobile_scanner/mobile_scanner.dart';
|
||||
import 'package:seshat/data/repositories/book_instance_repository.dart';
|
||||
import 'package:seshat/data/repositories/book_repository.dart';
|
||||
import 'package:seshat/data/repositories/owner_repository.dart';
|
||||
import 'package:seshat/domain/models/bal.dart';
|
||||
import 'package:seshat/domain/models/book.dart';
|
||||
import 'package:seshat/domain/models/book_instance.dart';
|
||||
import 'package:seshat/domain/models/owner.dart';
|
||||
import 'package:seshat/utils/command.dart';
|
||||
import 'package:seshat/utils/result.dart';
|
||||
|
||||
class AddViewModel extends ChangeNotifier {
|
||||
AddViewModel({required OwnerRepository ownerRepository})
|
||||
: _ownerRepository = ownerRepository {
|
||||
AddViewModel({
|
||||
required OwnerRepository ownerRepository,
|
||||
required BookRepository bookRepository,
|
||||
required BookInstanceRepository bookInstanceRepository,
|
||||
}) : _ownerRepository = ownerRepository,
|
||||
_bookRepository = bookRepository,
|
||||
_bookInstanceRepository = bookInstanceRepository {
|
||||
load = Command0(_load)..execute();
|
||||
}
|
||||
|
||||
final OwnerRepository _ownerRepository;
|
||||
final BookRepository _bookRepository;
|
||||
final BookInstanceRepository _bookInstanceRepository;
|
||||
late final StreamSubscription sub;
|
||||
|
||||
/*
|
||||
|
|
@ -87,15 +98,18 @@ class AddViewModel extends ChangeNotifier {
|
|||
/// Sends an api request with a [bacorde], then gets the [Book] that was
|
||||
/// either created or retrieved. Sens the [Book] back wrapped in a [Result].
|
||||
Future<Result<Book>> scanBook(BarcodeCapture barcode) async {
|
||||
return Result.ok(
|
||||
Book(
|
||||
author: "Patrick K. Dewdney",
|
||||
ean: barcode.barcodes.first.rawValue!,
|
||||
id: 56,
|
||||
priceNew: "50 EUR",
|
||||
title: "Les chiens et la charrue",
|
||||
),
|
||||
);
|
||||
var ean = barcode.barcodes.first.rawValue!;
|
||||
var result = await _bookRepository.getBookByEAN(ean);
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<Result<BookInstance>> sendBook(
|
||||
Book book,
|
||||
Owner owner,
|
||||
Bal bal,
|
||||
double price,
|
||||
) async {
|
||||
return await _bookInstanceRepository.sendBook(book, owner, bal, price);
|
||||
}
|
||||
|
||||
/// Sends an api request with
|
||||
|
|
|
|||
Reference in a new issue