diff --git a/lib/data/services/api_client.dart b/lib/data/services/api_client.dart index 3bc766a..631c406 100644 --- a/lib/data/services/api_client.dart +++ b/lib/data/services/api_client.dart @@ -1,7 +1,6 @@ import 'dart:convert'; -import 'package:flutter/rendering.dart'; -import 'package:flutter/widgets.dart'; +import 'package:flutter/material.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:http/http.dart'; import 'package:logger/logger.dart'; @@ -312,14 +311,18 @@ class ApiClient { try { final headers = await _getHeaders(); final response = await client.get(Uri.parse(url), headers: headers); - if (response.statusCode == 200) { - final json = jsonDecode(response.body) as List; - return Result.ok(json.map((element) => Bal.fromJSON(element)).toList()); - } else { - throw Exception("Something wrong happened"); + + switch (response.statusCode) { + case 200: + final json = jsonDecode(response.body) as List; + return Result.ok( + json.map((element) => Bal.fromJSON(element)).toList(), + ); + default: + throw "Unknown error with code ${response.statusCode.toString()}"; } } catch (e) { - debugPrint("ERROR: ${e.toString()}"); + log.e(e.toString()); return Result.error(Exception(e)); } finally { client.close(); @@ -361,13 +364,17 @@ class ApiClient { try { final headers = await _getHeaders(); final response = await client.get(Uri.parse(url), headers: headers); - if (response.statusCode == 200) { - final json = jsonDecode(response.body); - return Result.ok(Book.fromJSON(json)); - } else { - throw Exception("The book was not found"); + switch (response.statusCode) { + case 200: + final json = jsonDecode(response.body); + return Result.ok(Book.fromJSON(json)); + case 404: + throw "No book with this id exists in database"; + default: + throw "Unknown error with code ${response.statusCode.toString()}"; } } catch (e) { + log.e(e.toString()); return Result.error(Exception("API $e")); } finally { client.close(); @@ -381,13 +388,17 @@ class ApiClient { try { final headers = await _getHeaders(); final response = await client.get(Uri.parse(url), headers: headers); - if (response.statusCode == 200) { - final json = jsonDecode(response.body); - return Result.ok(Book.fromJSON(json)); - } else { - throw Exception("The book was not found"); + switch (response.statusCode) { + case 200: + final json = jsonDecode(response.body); + return Result.ok(Book.fromJSON(json)); + case 404: + throw "No book with this EAN found in the database of BNF"; + default: + throw "Unknown error with code ${response.statusCode.toString()}"; } } catch (e) { + log.e(e.toString()); return Result.error(Exception("API $e")); } finally { client.close(); @@ -416,13 +427,19 @@ class ApiClient { headers: headers, body: body, ); - if (response.statusCode == 200) { - final json = jsonDecode(response.body) as List; - return Result.ok(json.map((el) => SearchResult.fromJSON(el)).toList()); - } else { - throw "Unknown Error"; + switch (response.statusCode) { + case 200: + final json = jsonDecode(response.body) as List; + return Result.ok( + json.map((el) => SearchResult.fromJSON(el)).toList(), + ); + case 403: + throw "You do not own the BAL"; + default: + throw "Unknown error with code ${response.statusCode.toString()}"; } } catch (e) { + log.e(e.toString()); return Result.error(Exception("API $e")); } finally { client.close(); @@ -440,13 +457,19 @@ class ApiClient { try { final headers = await _getHeaders(); final response = await client.get(Uri.parse(url), headers: headers); - if (response.statusCode == 200) { - final json = jsonDecode(response.body) as List; - return Result.ok(json.map((el) => BookInstance.fromJSON(el)).toList()); - } else { - throw "Unknown Error"; + switch (response.statusCode) { + case 200: + final json = jsonDecode(response.body) as List; + return Result.ok( + json.map((el) => BookInstance.fromJSON(el)).toList(), + ); + case 403: + throw "You do not own the BAL"; + default: + throw "Unknown error with code ${response.statusCode.toString()}"; } } catch (e) { + log.e(e.toString()); return Result.error(Exception("API $e")); } finally { client.close(); @@ -465,12 +488,20 @@ class ApiClient { headers: headers, body: body, ); - if (response.statusCode == 200) { - return Result.ok(response.statusCode); - } else { - throw "Unknown error"; + switch (response.statusCode) { + case 200: + return Result.ok(response.statusCode); + case 403: + throw "You don't own one of the specified books"; + case 404: + throw "One of the books was not found"; + case 409: + throw "One of the books wasn't available"; + default: + throw "Unknown error with code ${response.statusCode.toString()}"; } } catch (e) { + log.e(e.toString()); return Result.error(Exception(e)); } finally { client.close(); @@ -499,13 +530,14 @@ class ApiClient { headers: headers, body: body, ); - if (response.statusCode == 201) { - final json = jsonDecode(response.body); - return Result.ok(BookInstance.fromJSON(json)); - } else if (response.statusCode == 403) { - throw Exception("You don't own that book instance"); - } else { - throw Exception("Something wrong happened"); + switch (response.statusCode) { + case 201: + final json = jsonDecode(response.body); + return Result.ok(BookInstance.fromJSON(json)); + case 403: + throw "You don't own that book instance"; + default: + throw "Unknown error with code ${response.statusCode.toString()}"; } } catch (e) { return Result.error(Exception(e)); @@ -527,13 +559,19 @@ class ApiClient { try { final headers = await _getHeaders(); final response = await client.get(Uri.parse(url), headers: headers); - if (response.statusCode == 200) { - final json = jsonDecode(response.body); - return Result.ok(Owner.fromJSON(json)); - } else { - throw Exception("The owner was not found"); + switch (response.statusCode) { + case 200: + final json = jsonDecode(response.body); + return Result.ok(Owner.fromJSON(json)); + case 403: + throw "You do not own specified owner"; + case 404: + throw "No owner with this id exists"; + default: + throw "Unknown error with code ${response.statusCode.toString()}"; } } catch (e) { + log.e(e.toString()); return Result.error(Exception("API $e")); } finally { client.close(); @@ -547,13 +585,15 @@ class ApiClient { try { final headers = await _getHeaders(); final response = await client.get(Uri.parse(url), headers: headers); - if (response.statusCode == 200) { - final json = jsonDecode(response.body); - return Result.ok(Owner.fromJSON(json)); - } else { - throw "Unknown error"; + switch (response.statusCode) { + case 200: + final json = jsonDecode(response.body); + return Result.ok(Owner.fromJSON(json)); + default: + throw "Unknown error with code ${response.statusCode.toString()}"; } } catch (e) { + log.e(e.toString()); return Result.error(Exception(e)); } finally { client.close(); @@ -568,13 +608,14 @@ class ApiClient { try { final headers = await _getHeaders(); final response = await client.get(Uri.parse(url), headers: headers); - if (response.statusCode == 200) { - final json = jsonDecode(response.body) as List; - return Result.ok( - json.map((element) => Owner.fromJSON(element)).toList(), - ); - } else { - throw Exception("Invalid request"); + switch (response.statusCode) { + case 200: + final json = jsonDecode(response.body) as List; + return Result.ok( + json.map((element) => Owner.fromJSON(element)).toList(), + ); + default: + throw "Unknown error with code ${response.statusCode.toString()}"; } } on Exception catch (error) { return Result.error(error); @@ -604,14 +645,16 @@ class ApiClient { headers: headers, body: jsonEncode(body), ); - if (response.statusCode == 201) { - final json = jsonDecode(response.body); - return Result.ok(Owner.fromJSON(json)); - } else { - throw Exception("Invalid request"); + switch (response.statusCode) { + case 201: + final json = jsonDecode(response.body); + return Result.ok(Owner.fromJSON(json)); + default: + throw "Unknown error with code ${response.statusCode.toString()}"; } - } on Exception catch (error) { - return Result.error(error); + } catch (e) { + log.e(e.toString()); + return Result.error(Exception(e)); } finally { client.close(); } diff --git a/lib/routing/router.dart b/lib/routing/router.dart index c330f51..3c3cdb8 100644 --- a/lib/routing/router.dart +++ b/lib/routing/router.dart @@ -72,11 +72,6 @@ GoRouter router(AuthRepository authRepository) => GoRouter( ); return NoTransitionPage(child: AddPage(viewModel: viewModel)); }, - // routes: [ - // GoRoute(path: Routes.addForm), - // GoRoute(path: Routes.addOwner), - // GoRoute(path: Routes.addPrice), - // ], ), GoRoute( path: Routes.sell,