mirror of
https://github.com/localsend/localsend.git
synced 2026-04-29 03:00:23 -04:00
fix: internet permission
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.localsend.localsend_app">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
|
||||
|
||||
@@ -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<HomePage> {
|
||||
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
|
||||
|
||||
@@ -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<SettingsTab> {
|
||||
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<SettingsTab> {
|
||||
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,
|
||||
|
||||
@@ -84,20 +84,16 @@ class ServerNotifier extends StateNotifier<ServerState?> {
|
||||
|
||||
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;
|
||||
|
||||
@@ -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),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user