diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index eeaf6a1dd40efaa966a0b579a3c86265e4f5d58c..622ce0068a9f219334bed6c9789c8526e030e964 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -38,4 +38,5 @@ android:name="flutterEmbedding" android:value="2" /> </application> + <uses-permission android:name="android.permission.INTERNET"/> </manifest> diff --git a/android/gradle.properties b/android/gradle.properties index aa51064abebb79ba519e600afb7af23779154d4e..135006f9c1386c8757595c43e890e911f732f5a3 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,5 +1,5 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true -app.versionName=0.0.5 -app.versionCode=5 +app.versionName=0.0.6 +app.versionCode=6 diff --git a/fastlane/metadata/android/en-US/changelogs/6.txt b/fastlane/metadata/android/en-US/changelogs/6.txt new file mode 100644 index 0000000000000000000000000000000000000000..09ecaeb309b648c6f500cf7f17059227268fb11a --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/6.txt @@ -0,0 +1 @@ +Get and display API status diff --git a/fastlane/metadata/android/fr-FR/changelogs/6.txt b/fastlane/metadata/android/fr-FR/changelogs/6.txt new file mode 100644 index 0000000000000000000000000000000000000000..34a5b2f67253f41ed51d935f2f992798c88b6730 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/6.txt @@ -0,0 +1 @@ +Récupère et affiche le statut de l'API diff --git a/lib/provider/data.dart b/lib/provider/data.dart index 18ce63cdcd35a6c3a9cbc7f8cd2304798bbd4885..4cc81c0733269f8d6da94c82881bd2a413e69b79 100644 --- a/lib/provider/data.dart +++ b/lib/provider/data.dart @@ -4,11 +4,14 @@ import 'package:shared_preferences/shared_preferences.dart'; class Data extends ChangeNotifier { // Application settings - String _apiurl = ''; + String _apiHost = ''; + String _apiStatus = ''; + + String defaultApiHost = '127.0.0.1'; getParameterValue(String parameterCode) { switch(parameterCode) { - case 'apiurl': { return _apiurl; } + case 'apiHost': { return _apiHost; } break; } } @@ -16,7 +19,7 @@ class Data extends ChangeNotifier { setParameterValue(String parameterCode, String parameterValue) async { print('set parameter "' + parameterCode + '" to value "' + parameterValue + '"'); switch(parameterCode) { - case 'apiurl': { updateApiUrl(parameterValue); } + case 'apiHost': { updateApiHost(parameterValue); } break; } final prefs = await SharedPreferences.getInstance(); @@ -25,12 +28,19 @@ class Data extends ChangeNotifier { void initParametersValues() async { final prefs = await SharedPreferences.getInstance(); - setParameterValue('apiurl', prefs.getString('apiurl') ?? 'http://127.0.0.1/plotter'); + setParameterValue('apiHost', prefs.getString('apiHost') ?? this.defaultApiHost); + } + + String get apiHost => _apiHost; + void updateApiHost(String apiHost) { + _apiHost = apiHost; + notifyListeners(); } - String get apiurl => _apiurl; - void updateApiUrl(String apiurl) { - _apiurl = apiurl; + String get apiStatus => _apiStatus; + void updateApiStatus(String apiStatus) { + print('new API status: ' + apiStatus); + _apiStatus = apiStatus; notifyListeners(); } } diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 221870f09412f50b3e2670c9b94287f98218c604..15439f75078b5da02eec770e4886bec02b52a4c2 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -3,6 +3,7 @@ import 'package:provider/provider.dart'; import '../provider/data.dart'; import '../screens/settings.dart'; +import '../utils/api.dart'; class Home extends StatefulWidget { static const String id = 'home'; @@ -49,7 +50,17 @@ class _HomeState extends State<Home> { ), body: SafeArea( child: Center( - child: Text('🤖') + child: Column( + children: [ + FlatButton( + child: Container( + child: Text('get API status'), + ), + onPressed: () => Api.updateApiStatus(myProvider), + ), + Text(myProvider.apiStatus) + ], + ) ), ) ); diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index 6e5ce164fc405b534e8ba23b4c136425f610c805..f8d35931792415250fd6c585f7eeb11b988d23f4 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -12,11 +12,11 @@ class SettingsPage extends StatefulWidget { } class _SettingsPageState extends State<SettingsPage> { - TextEditingController apiUrlFieldController = TextEditingController(); + TextEditingController apiHostFieldController = TextEditingController(); @override void dispose() { - apiUrlFieldController.dispose(); + apiHostFieldController.dispose(); super.dispose(); } @@ -24,7 +24,7 @@ class _SettingsPageState extends State<SettingsPage> { Widget build(BuildContext context) { Data myProvider = Provider.of<Data>(context); - apiUrlFieldController.text = myProvider.getParameterValue('apiurl'); + apiHostFieldController.text = myProvider.getParameterValue('apiHost'); return Scaffold( appBar: AppBar( @@ -34,7 +34,7 @@ class _SettingsPageState extends State<SettingsPage> { IconButton( icon: Icon(Icons.save), onPressed: () { - myProvider.setParameterValue('apiurl', apiUrlFieldController.text); + myProvider.setParameterValue('apiHost', apiHostFieldController.text); Navigator.pop(context); }, ) @@ -49,10 +49,10 @@ class _SettingsPageState extends State<SettingsPage> { body: Padding( padding: const EdgeInsets.all(16.0), child: TextFormField( - controller: apiUrlFieldController, + controller: apiHostFieldController, decoration: InputDecoration( border: UnderlineInputBorder(), - labelText: 'API URL', + labelText: 'API Host', ), ), ), diff --git a/lib/utils/api.dart b/lib/utils/api.dart new file mode 100644 index 0000000000000000000000000000000000000000..043e76e09abbdd973e16b1f58c94b6333903c0f6 --- /dev/null +++ b/lib/utils/api.dart @@ -0,0 +1,22 @@ +import 'dart:convert'; +import 'package:http/http.dart' as http; + +import '../provider/data.dart'; + +class Api { + + static Future<void> updateApiStatus(Data myProvider) async { + final response = await http.get( + Uri.http( + myProvider.apiHost, + 'status' + ) + ); + + String responseData = utf8.decode(response.bodyBytes); + Map<String, dynamic> status = json.decode(responseData); + + myProvider.updateApiStatus(status['status']); + } + +} diff --git a/pubspec.lock b/pubspec.lock index 8641dc55090fdf970eb51cc869323f27bb056ecc..9f4caa278c85174f1282ba3b853ced359d90f2ca 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -79,6 +79,20 @@ packages: description: flutter source: sdk version: "0.0.0" + http: + dependency: "direct main" + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.4" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.0" js: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index db24663fb4dd046be4d049f06191c7f7856ab219..131fd0d0e2e2b922ebefed7f64b3310adf468f32 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -11,6 +11,7 @@ dependencies: sdk: flutter provider: ^6.0.2 shared_preferences: ^2.0.6 + http: dev_dependencies: flutter_test: