2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-04-28 05:26:47 +00:00

Work on improving async calls

- Still don't fully grok them
This commit is contained in:
Oliver Walters 2020-03-31 23:07:31 +11:00
parent e75297053b
commit 83fc4b407d
2 changed files with 40 additions and 35 deletions

View File

@ -55,16 +55,8 @@ class InvenTreeAPI {
print("Connecting to " + address + " -> " + username + ":" + password); print("Connecting to " + address + " -> " + username + ":" + password);
bool result = false; await _testConnection();
result = await _testConnection();
if (!result) {
print("Could not connect to server");
return;
}
result = await _getToken();
} }
bool _connected = false; bool _connected = false;
@ -95,40 +87,34 @@ class InvenTreeAPI {
} }
// Request the raw /api/ endpoint to see if there is an InvenTree server listening // Request the raw /api/ endpoint to see if there is an InvenTree server listening
Future<bool> _testConnection() async { Future<void> _testConnection() async {
print("Testing connection to server"); print("Testing connection to server");
final response = await get("").then((http.Response response) { await get("").then((http.Response response) {
final data = json.decode(response.body); final data = json.decode(response.body);
// We expect certain response from the server // We expect certain response from the server
if (!data.containsKey("server") || !data.containsKey("version")) { if (!data.containsKey("server") || !data.containsKey("version")) {
print("Incorrect keys in server response"); print("Incorrect keys in server response");
return false;
} }
print("Server: " + data["server"]); print("Server: " + data["server"]);
print("Version: " + data["version"]); print("Version: " + data["version"]);
// Ok, server is good. Request token!
_getToken();
}).catchError((error) { }).catchError((error) {
print("Error trying connection"); print("Error trying connection");
print(error); print(error);
return false;
}); });
// Here we have received a response object which is valid
// TODO - Add timeout handler
return true;
} }
// Request an API token from the server. // Request an API token from the server.
// A valid username/password combination must be provided // A valid username/password combination must be provided
Future<bool> _getToken() async { Future<String> _getToken() async {
print("Requesting API token from server"); print("Requesting API token from server");
@ -145,6 +131,7 @@ class InvenTreeAPI {
}); });
response.then((http.Response response) { response.then((http.Response response) {
if (response.statusCode != 200) { if (response.statusCode != 200) {
print("Invalid status code: " + response.statusCode.toString()); print("Invalid status code: " + response.statusCode.toString());
return false; return false;
@ -153,19 +140,19 @@ class InvenTreeAPI {
if (!data.containsKey("token")) { if (!data.containsKey("token")) {
print("No token provided in response"); print("No token provided in response");
return false; return "";
} }
// Save the received token // Return the received token
_token = data["token"]; String token = data["token"];
print("Received token: " + _token); print("Received token: " + token);
return true; return token;
} }
}).catchError((error) { }).catchError((error) {
print("Error retrieving token:"); print("Error retrieving token:");
print(error); print(error);
return false; return "";
}); });
} }
@ -231,11 +218,7 @@ class InvenTreeAPI {
print("GET: " + _url); print("GET: " + _url);
final response = await http.get(_url, return http.get(_url, headers: _headers);
headers: _headers,
);
return response;
} }
Map<String, String> _defaultHeaders() { Map<String, String> _defaultHeaders() {

View File

@ -1,13 +1,35 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:preferences/preferences.dart'; // import 'package:preferences/preferences.dart';
import 'settings.dart'; import 'settings.dart';
import 'api.dart'; import 'api.dart';
import 'preferences.dart'; import 'preferences.dart';
import 'inventree_object.dart';
void main() async { void main() async {
await PrefService.init(prefix: "inventree_"); // await PrefService.init(prefix: "inventree_");
String username = "username";
String password = "password";
String server = "http://127.0.0.1:8000";
await InvenTreeAPI().connect(server, username, password);
print("Connected! Requesting data");
InvenTreePart().list(filters: {"category": "2"}).then((var parts) {
print("Received list");
print("Found " + parts.length.toString() + " parts");
for (var part in parts) {
if (part is InvenTreePart) {
print("Part: " + part.name + ", " + part.description);
}
}
});
runApp(MyApp()); runApp(MyApp());
} }
@ -69,7 +91,7 @@ class _MyHomePageState extends State<MyHomePage> {
} }
void _login() { void _login() {
Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreeSettingsWidget())); //Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreeSettingsWidget()));
} }
@override @override