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

server / username / password now saved to local preferences

This commit is contained in:
Oliver Walters 2020-04-03 14:25:28 +11:00
parent 2ec662fdef
commit ee7ab5308e
3 changed files with 29 additions and 55 deletions

View File

@ -59,6 +59,11 @@ class InvenTreeAPI {
address = address.trim(); address = address.trim();
username = username.trim(); username = username.trim();
if (address.isEmpty || username.isEmpty || password.isEmpty) {
print("Server error: Empty details supplied");
return false;
}
// Ensure we are pointing to the correct endpoint // Ensure we are pointing to the correct endpoint
if (!address.endsWith("api/") || !address.endsWith("api")) { if (!address.endsWith("api/") || !address.endsWith("api")) {
address = path.join(address, "api"); address = path.join(address, "api");

View File

@ -1,6 +1,8 @@
import 'package:InvenTree/widget/category_display.dart'; import 'package:InvenTree/widget/category_display.dart';
import 'package:InvenTree/widget/location_display.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
// import 'package:preferences/preferences.dart'; // import 'package:preferences/preferences.dart';
import 'settings.dart'; import 'settings.dart';
@ -13,11 +15,10 @@ void main() async {
// await PrefService.init(prefix: "inventree_"); // await PrefService.init(prefix: "inventree_");
String username = "username"; WidgetsFlutterBinding.ensureInitialized();
String password = "password";
String server = "http://127.0.0.1:8000";
InvenTreeAPI().connect(server, username, password); // Load login details
InvenTreeUserPreferences().loadLoginDetails();
runApp(MyApp()); runApp(MyApp());
} }
@ -95,46 +96,16 @@ class MyHomePage extends StatefulWidget {
} }
class _MyHomePageState extends State<MyHomePage> { class _MyHomePageState extends State<MyHomePage> {
// List of parts
List<InvenTreePart> _parts = List<InvenTreePart>();
String _filter = '';
List<InvenTreePart> get parts {
if (_filter.isNotEmpty) {
List<InvenTreePart> filtered = List<InvenTreePart>();
for (var part in _parts) {
var name = part.name.toLowerCase() + ' ' + part.description.toLowerCase();
bool match = true;
for (var txt in _filter.split(' ')) {
if (!name.contains(txt)) {
match = false;
break;
}
}
if (match) {
filtered.add(part);
}
}
return filtered;
} else {
// No filtering
return _parts;
}
}
_MyHomePageState() : super(); _MyHomePageState() : super();
void _login() { void _login() {
//Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreeSettingsWidget())); Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreeSettingsWidget()));
}
void _goHome() {
// Reset the stack, go to "home"
Navigator.pushNamed(context, "/");
} }
void _showParts() { void _showParts() {
@ -175,6 +146,7 @@ class _MyHomePageState extends State<MyHomePage> {
fit: BoxFit.scaleDown, fit: BoxFit.scaleDown,
), ),
title: new Text("InvenTree"), title: new Text("InvenTree"),
onTap: _goHome,
), ),
new Divider(), new Divider(),
new ListTile( new ListTile(
@ -217,20 +189,9 @@ class _MyHomePageState extends State<MyHomePage> {
// horizontal). // horizontal).
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
TextField(
decoration: InputDecoration(
hintText: 'Filter Results',
),
onChanged: (text) {
setState(() {
_filter = text.trim().toLowerCase();
});
},
),
Text( Text(
'hello world', 'InvenTree',
), ),
Expanded(child: ProductList(parts)),
], ],
), ),
), ),

View File

@ -19,16 +19,24 @@ class InvenTreeUserPreferences {
// Load saved login details, and attempt connection // Load saved login details, and attempt connection
void loadLoginDetails() async { void loadLoginDetails() async {
print("Loading login details");
SharedPreferences prefs = await SharedPreferences.getInstance(); SharedPreferences prefs = await SharedPreferences.getInstance();
var server = prefs.getString(_SERVER); print("Done!");
var username = prefs.getString(_USERNAME);
var password = prefs.getString(_PASSWORD); var server = prefs.getString(_SERVER) ?? '';
var username = prefs.getString(_USERNAME) ?? '';
var password = prefs.getString(_PASSWORD) ?? '';
print("Connecting to server");
await InvenTreeAPI().connect(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 {
SharedPreferences prefs = await SharedPreferences.getInstance(); SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString(_SERVER, server); await prefs.setString(_SERVER, server);