mirror of
https://github.com/inventree/inventree-app.git
synced 2025-04-28 13:36:50 +00:00
API improvements
- Simple function connect() which loads saves settings from preferences file
This commit is contained in:
parent
6d3db243c3
commit
055cc37e68
45
lib/api.dart
45
lib/api.dart
@ -4,6 +4,7 @@ import 'dart:io';
|
|||||||
|
|
||||||
import 'package:path/path.dart' as path;
|
import 'package:path/path.dart' as path;
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -50,18 +51,32 @@ class InvenTreeAPI {
|
|||||||
_token = "";
|
_token = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<bool> connect(String address, String username, String password) async {
|
Future<bool> connect() async {
|
||||||
|
|
||||||
|
var prefs = await SharedPreferences.getInstance();
|
||||||
|
|
||||||
|
String server = prefs.getString("server");
|
||||||
|
String username = prefs.getString("username");
|
||||||
|
String password = prefs.getString("password");
|
||||||
|
|
||||||
|
return connectToServer(server, username, password);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> connectToServer(String address, String username, String password) async {
|
||||||
|
|
||||||
/* Address is the base address for the InvenTree server,
|
/* Address is the base address for the InvenTree server,
|
||||||
* e.g. http://127.0.0.1:8000
|
* e.g. http://127.0.0.1:8000
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
String errorMessage = "";
|
||||||
|
|
||||||
address = address.trim();
|
address = address.trim();
|
||||||
username = username.trim();
|
username = username.trim();
|
||||||
|
|
||||||
if (address.isEmpty || username.isEmpty || password.isEmpty) {
|
if (address.isEmpty || username.isEmpty || password.isEmpty) {
|
||||||
print("Server error: Empty details supplied");
|
errorMessage = "Server Error: Empty details supplied";
|
||||||
return false;
|
print(errorMessage);
|
||||||
|
throw errorMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure we are pointing to the correct endpoint
|
// Ensure we are pointing to the correct endpoint
|
||||||
@ -90,10 +105,16 @@ class InvenTreeAPI {
|
|||||||
|
|
||||||
// TODO - Add connection timeout
|
// TODO - Add connection timeout
|
||||||
|
|
||||||
var response = await get("").catchError((error) {
|
var response = await get("").timeout(Duration(seconds: 10)).catchError((error) {
|
||||||
print("Error connecting to server:");
|
|
||||||
print(error);
|
if (error is SocketException) {
|
||||||
return false;
|
errorMessage = "Could not connect to server.";
|
||||||
|
print(errorMessage);
|
||||||
|
throw errorMessage;
|
||||||
|
} else {
|
||||||
|
// Unknown error type, re-throw error
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (response.statusCode != 200) {
|
if (response.statusCode != 200) {
|
||||||
@ -107,16 +128,18 @@ class InvenTreeAPI {
|
|||||||
|
|
||||||
// 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");
|
errorMessage = "Server resonse contained incorrect data";
|
||||||
return false;
|
print(errorMessage);
|
||||||
|
throw errorMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
print("Server: " + data["server"]);
|
print("Server: " + data["server"]);
|
||||||
print("Version: " + data["version"]);
|
print("Version: " + data["version"]);
|
||||||
|
|
||||||
// Request token from the server
|
// Request token from the server if we do not already have one
|
||||||
if (_token.isNotEmpty) {
|
if (_token.isNotEmpty) {
|
||||||
print("Discarding old token - $_token");
|
print("Already have token - $_token");
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clear out the token
|
// Clear out the token
|
||||||
|
@ -58,6 +58,8 @@ class _InvenTreeLoginSettingsState extends State<InvenTreeLoginSettingsWidget> {
|
|||||||
|
|
||||||
final Size screenSize = MediaQuery.of(context).size;
|
final Size screenSize = MediaQuery.of(context).size;
|
||||||
|
|
||||||
|
load();
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text("Login Settings"),
|
title: Text("Login Settings"),
|
||||||
@ -136,7 +138,6 @@ class _InvenTreeLoginSettingsState extends State<InvenTreeLoginSettingsWidget> {
|
|||||||
|
|
||||||
await InvenTreeUserPreferences().saveLoginDetails(_addr, _user, _pass);
|
await InvenTreeUserPreferences().saveLoginDetails(_addr, _user, _pass);
|
||||||
|
|
||||||
print("Saved");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -24,15 +24,11 @@ class InvenTreeUserPreferences {
|
|||||||
|
|
||||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||||
|
|
||||||
print("Done!");
|
|
||||||
|
|
||||||
var server = prefs.getString(_SERVER) ?? '';
|
var server = prefs.getString(_SERVER) ?? '';
|
||||||
var username = prefs.getString(_USERNAME) ?? '';
|
var username = prefs.getString(_USERNAME) ?? '';
|
||||||
var password = prefs.getString(_PASSWORD) ?? '';
|
var password = prefs.getString(_PASSWORD) ?? '';
|
||||||
|
|
||||||
print("Connecting to server");
|
await InvenTreeAPI().connectToServer(server, username, password);
|
||||||
|
|
||||||
await InvenTreeAPI().connect(server, username, password);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void saveLoginDetails(String server, String username, String password) async {
|
void saveLoginDetails(String server, String username, String password) async {
|
||||||
@ -44,6 +40,6 @@ class InvenTreeUserPreferences {
|
|||||||
await prefs.setString(_PASSWORD, password);
|
await prefs.setString(_PASSWORD, password);
|
||||||
|
|
||||||
// Reconnect the API
|
// Reconnect the API
|
||||||
await InvenTreeAPI().connect(server, username, password);
|
await InvenTreeAPI().connectToServer(server, username, password);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -88,6 +88,7 @@ class InvenTreeDrawer extends StatelessWidget {
|
|||||||
new Divider(),
|
new Divider(),
|
||||||
new ListTile(
|
new ListTile(
|
||||||
title: new Text("Parts"),
|
title: new Text("Parts"),
|
||||||
|
leading: new Icon(Icons.category),
|
||||||
onTap: _showParts,
|
onTap: _showParts,
|
||||||
),
|
),
|
||||||
new ListTile(
|
new ListTile(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user