From 965ae87fedd9967fd06e239978fe1a0ad67ce0fe Mon Sep 17 00:00:00 2001 From: Tien Do Nam Date: Fri, 30 Dec 2022 04:09:32 +0100 Subject: [PATCH] fix: internet permission --- CHANGELOG.md | 1 + android/app/src/main/AndroidManifest.xml | 2 ++ lib/pages/home_page.dart | 13 +++++--- lib/pages/tabs/settings_tab.dart | 37 ++++++++++++++--------- lib/provider/network/server_provider.dart | 24 ++++++--------- lib/util/snackbar.dart | 7 +++-- 6 files changed, 49 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96fda1f3..84bc8c7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ - feat(android): add media picker - feat(iOS): merge image and video to common media picker +- fix(android): missing internet permission ## 1.0.0 (2022-12-29) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 98cc8c95..123a92eb 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,8 @@ + + diff --git a/lib/pages/home_page.dart b/lib/pages/home_page.dart index ad0af29b..957ca20a 100644 --- a/lib/pages/home_page.dart +++ b/lib/pages/home_page.dart @@ -7,6 +7,7 @@ import 'package:localsend_app/pages/tabs/settings_tab.dart'; import 'package:localsend_app/provider/network/server_provider.dart'; import 'package:localsend_app/provider/settings_provider.dart'; import 'package:localsend_app/theme.dart'; +import 'package:localsend_app/util/snackbar.dart'; enum _Tab { receive(Icons.wifi), @@ -53,10 +54,14 @@ class _HomePageState extends ConsumerState { updateSystemOverlayStyle(context); final settings = ref.read(settingsProvider); - await ref.read(serverProvider.notifier).startServer( - alias: settings.alias, - port: settings.port, - ); + try { + await ref.read(serverProvider.notifier).startServer( + alias: settings.alias, + port: settings.port, + ); + } catch (e) { + context.showSnackBar(e.toString()); + } } @override diff --git a/lib/pages/tabs/settings_tab.dart b/lib/pages/tabs/settings_tab.dart index cedb8c31..4bac012b 100644 --- a/lib/pages/tabs/settings_tab.dart +++ b/lib/pages/tabs/settings_tab.dart @@ -8,6 +8,7 @@ import 'package:localsend_app/provider/settings_provider.dart'; import 'package:localsend_app/provider/version_provider.dart'; import 'package:localsend_app/theme.dart'; import 'package:localsend_app/util/sleep.dart'; +import 'package:localsend_app/util/snackbar.dart'; import 'package:localsend_app/widget/custom_dropdown_button.dart'; import 'package:localsend_app/widget/local_send_logo.dart'; import 'package:routerino/routerino.dart'; @@ -126,10 +127,14 @@ class _SettingsTabState extends ConsumerState { if (serverState == null) IconButton( onPressed: () async { - await ref.read(serverProvider.notifier).startServer( - alias: settings.alias, - port: settings.port, - ); + try { + await ref.read(serverProvider.notifier).startServer( + alias: settings.alias, + port: settings.port, + ); + } catch (e) { + context.showSnackBar(e.toString()); + } }, tooltip: t.general.start, icon: const Icon(Icons.play_arrow), @@ -137,17 +142,21 @@ class _SettingsTabState extends ConsumerState { else IconButton( onPressed: () async { - final newServerState = await ref.read(serverProvider.notifier).restartServer( - alias: settings.alias, - port: settings.port, - ); + try { + final newServerState = await ref.read(serverProvider.notifier).restartServer( + alias: settings.alias, + port: settings.port, + ); - if (newServerState != null) { - // the new state is always valid, so we can "repair" user's setting - _aliasController.text = newServerState.alias; - _portController.text = newServerState.port.toString(); - await ref.read(settingsProvider.notifier).setAlias(newServerState.alias); - await ref.read(settingsProvider.notifier).setPort(newServerState.port); + if (newServerState != null) { + // the new state is always valid, so we can "repair" user's setting + _aliasController.text = newServerState.alias; + _portController.text = newServerState.port.toString(); + await ref.read(settingsProvider.notifier).setAlias(newServerState.alias); + await ref.read(settingsProvider.notifier).setPort(newServerState.port); + } + } catch (e) { + context.showSnackBar(e.toString()); } }, tooltip: t.general.restart, diff --git a/lib/provider/network/server_provider.dart b/lib/provider/network/server_provider.dart index 52261642..4ff0a020 100644 --- a/lib/provider/network/server_provider.dart +++ b/lib/provider/network/server_provider.dart @@ -84,20 +84,16 @@ class ServerNotifier extends StateNotifier { final securityContextResult = generateSecurityContext(); - try { - newServerState = ServerState( - httpServer: await serve(router, '0.0.0.0', port, securityContext: SecurityContext() - ..usePrivateKeyBytes(securityContextResult.privateKey.codeUnits) - ..useCertificateChainBytes(securityContextResult.certificate.codeUnits) - ), - alias: alias, - port: port, - receiveState: null, - ); - print('Server started. (Port: ${newServerState.port})'); - } catch (e) { - print(e); - } + newServerState = ServerState( + httpServer: await serve(router, '0.0.0.0', port, securityContext: SecurityContext() + ..usePrivateKeyBytes(securityContextResult.privateKey.codeUnits) + ..useCertificateChainBytes(securityContextResult.certificate.codeUnits) + ), + alias: alias, + port: port, + receiveState: null, + ); + print('Server started. (Port: ${newServerState.port})'); state = newServerState; return newServerState; diff --git a/lib/util/snackbar.dart b/lib/util/snackbar.dart index 50cd94c1..e7a8541b 100644 --- a/lib/util/snackbar.dart +++ b/lib/util/snackbar.dart @@ -4,9 +4,10 @@ extension SnackbarExt on BuildContext { void showSnackBar(String text) { final scaffold = ScaffoldMessenger.of(this); scaffold.removeCurrentSnackBar(); - scaffold.showSnackBar(SnackBar( - content: Text(text), - backgroundColor: Colors.lightGreen.shade900), + scaffold.showSnackBar( + SnackBar( + content: Text(text), + ), ); } }