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();
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
if (!address.endsWith("api/") || !address.endsWith("api")) {
address = path.join(address, "api");

View File

@ -1,6 +1,8 @@
import 'package:InvenTree/widget/category_display.dart';
import 'package:InvenTree/widget/location_display.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
// import 'package:preferences/preferences.dart';
import 'settings.dart';
@ -13,11 +15,10 @@ void main() async {
// await PrefService.init(prefix: "inventree_");
String username = "username";
String password = "password";
String server = "http://127.0.0.1:8000";
WidgetsFlutterBinding.ensureInitialized();
InvenTreeAPI().connect(server, username, password);
// Load login details
InvenTreeUserPreferences().loadLoginDetails();
runApp(MyApp());
}
@ -95,46 +96,16 @@ class MyHomePage extends StatefulWidget {
}
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();
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() {
@ -175,6 +146,7 @@ class _MyHomePageState extends State<MyHomePage> {
fit: BoxFit.scaleDown,
),
title: new Text("InvenTree"),
onTap: _goHome,
),
new Divider(),
new ListTile(
@ -217,20 +189,9 @@ class _MyHomePageState extends State<MyHomePage> {
// horizontal).
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextField(
decoration: InputDecoration(
hintText: 'Filter Results',
),
onChanged: (text) {
setState(() {
_filter = text.trim().toLowerCase();
});
},
),
Text(
'hello world',
'InvenTree',
),
Expanded(child: ProductList(parts)),
],
),
),

View File

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