diff --git a/lib/api.dart b/lib/api.dart index 113c6c60..de8e0846 100644 --- a/lib/api.dart +++ b/lib/api.dart @@ -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"); diff --git a/lib/main.dart b/lib/main.dart index 35402df3..9efee0c7 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -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 { - // List of parts - List _parts = List(); - - String _filter = ''; - - List get parts { - - if (_filter.isNotEmpty) { - - List filtered = List(); - 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 { fit: BoxFit.scaleDown, ), title: new Text("InvenTree"), + onTap: _goHome, ), new Divider(), new ListTile( @@ -217,20 +189,9 @@ class _MyHomePageState extends State { // horizontal). mainAxisAlignment: MainAxisAlignment.center, children: [ - TextField( - decoration: InputDecoration( - hintText: 'Filter Results', - ), - onChanged: (text) { - setState(() { - _filter = text.trim().toLowerCase(); - }); - }, - ), Text( - 'hello world', + 'InvenTree', ), - Expanded(child: ProductList(parts)), ], ), ), diff --git a/lib/preferences.dart b/lib/preferences.dart index 616c7f09..784c3ab6 100644 --- a/lib/preferences.dart +++ b/lib/preferences.dart @@ -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);