Fix bugs
This commit is contained in:
@@ -59,7 +59,6 @@ class MainActivity : FlutterFragmentActivity(), ServiceConnection.Callback {
|
|||||||
|
|
||||||
fun startService() {
|
fun startService() {
|
||||||
if (!ServiceNotification.checkPermission()) {
|
if (!ServiceNotification.checkPermission()) {
|
||||||
// Log.d(TAG, "missing notification permission")
|
|
||||||
grantNotificationPermission()
|
grantNotificationPermission()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -81,15 +80,26 @@ class MainActivity : FlutterFragmentActivity(), ServiceConnection.Callback {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private suspend fun prepare() = withContext(Dispatchers.Main) {
|
||||||
|
try {
|
||||||
|
val intent = VpnService.prepare(this@MainActivity)
|
||||||
|
if (intent != null) {
|
||||||
|
startActivityForResult(intent, VPN_PERMISSION_REQUEST_CODE)
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
onServiceAlert(Alert.RequestVPNPermission, e.message)
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onServiceStatusChanged(status: Status) {
|
override fun onServiceStatusChanged(status: Status) {
|
||||||
Log.d(TAG, "service status changed: $status")
|
|
||||||
serviceStatus.postValue(status)
|
serviceStatus.postValue(status)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun onServiceAlert(type: Alert, message: String?) {
|
override fun onServiceAlert(type: Alert, message: String?) {
|
||||||
Log.d(TAG, "service alert: $type")
|
|
||||||
serviceAlerts.postValue(ServiceEvent(Status.Stopped, type, message))
|
serviceAlerts.postValue(ServiceEvent(Status.Stopped, type, message))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,22 +164,6 @@ class MainActivity : FlutterFragmentActivity(), ServiceConnection.Callback {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun prepare() = withContext(Dispatchers.Main) {
|
|
||||||
try {
|
|
||||||
val intent = VpnService.prepare(this@MainActivity)
|
|
||||||
if (intent != null) {
|
|
||||||
// prepareLauncher.launch(intent)
|
|
||||||
startActivityForResult(intent, VPN_PERMISSION_REQUEST_CODE)
|
|
||||||
true
|
|
||||||
} else {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
} catch (e: Exception) {
|
|
||||||
onServiceAlert(Alert.RequestVPNPermission, e.message)
|
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||||
super.onActivityResult(requestCode, resultCode, data)
|
super.onActivityResult(requestCode, resultCode, data)
|
||||||
if (requestCode == VPN_PERMISSION_REQUEST_CODE) {
|
if (requestCode == VPN_PERMISSION_REQUEST_CODE) {
|
||||||
|
|||||||
@@ -172,5 +172,9 @@ object DefaultNetworkListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun unregister() = Application.connectivity.unregisterNetworkCallback(Callback)
|
private fun unregister() {
|
||||||
|
runCatching {
|
||||||
|
Application.connectivity.unregisterNetworkCallback(Callback)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,7 @@ class ProxyService : Service(), PlatformInterfaceWrapper {
|
|||||||
|
|
||||||
private val service = BoxService(this, this)
|
private val service = BoxService(this, this)
|
||||||
|
|
||||||
override fun onStartCommand(intent: Intent, flags: Int, startId: Int) =
|
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int) =
|
||||||
service.onStartCommand(intent, flags, startId)
|
service.onStartCommand(intent, flags, startId)
|
||||||
|
|
||||||
override fun onBind(intent: Intent) = service.onBind(intent)
|
override fun onBind(intent: Intent) = service.onBind(intent)
|
||||||
|
|||||||
@@ -63,10 +63,11 @@ class AppUpdateNotifier extends _$AppUpdateNotifier with AppLogger {
|
|||||||
return state = AppUpdateState.error(err);
|
return state = AppUpdateState.error(err);
|
||||||
},
|
},
|
||||||
(remote) {
|
(remote) {
|
||||||
|
if (remote.version.compareTo(currentVersion) > 0) {
|
||||||
if (remote.version == _ignoreReleasePref.getValue()) {
|
if (remote.version == _ignoreReleasePref.getValue()) {
|
||||||
loggy.debug("ignored release [${remote.version}]");
|
loggy.debug("ignored release [${remote.version}]");
|
||||||
return state = AppUpdateStateIgnored(remote);
|
return state = AppUpdateStateIgnored(remote);
|
||||||
} else if (remote.version.compareTo(currentVersion) > 0) {
|
}
|
||||||
loggy.debug("new version available: $remote");
|
loggy.debug("new version available: $remote");
|
||||||
return state = AppUpdateState.available(remote);
|
return state = AppUpdateState.available(remote);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,9 +13,10 @@ class WindowController extends _$WindowController
|
|||||||
@override
|
@override
|
||||||
Future<bool> build() async {
|
Future<bool> build() async {
|
||||||
await windowManager.ensureInitialized();
|
await windowManager.ensureInitialized();
|
||||||
|
const size = Size(868, 668);
|
||||||
const windowOptions = WindowOptions(
|
const windowOptions = WindowOptions(
|
||||||
size: Size(868, 768),
|
size: size,
|
||||||
minimumSize: Size(868, 648),
|
minimumSize: size,
|
||||||
center: true,
|
center: true,
|
||||||
);
|
);
|
||||||
await windowManager.setPreventClose(true);
|
await windowManager.setPreventClose(true);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'package:flutter/gestures.dart';
|
import 'package:flutter/gestures.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||||
import 'package:gap/gap.dart';
|
import 'package:gap/gap.dart';
|
||||||
import 'package:hiddify/core/core_providers.dart';
|
import 'package:hiddify/core/core_providers.dart';
|
||||||
import 'package:hiddify/core/prefs/prefs.dart';
|
import 'package:hiddify/core/prefs/prefs.dart';
|
||||||
@@ -18,6 +19,8 @@ class IntroPage extends HookConsumerWidget with PresLogger {
|
|||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final t = ref.watch(translationsProvider);
|
final t = ref.watch(translationsProvider);
|
||||||
|
|
||||||
|
final isStarting = useState(false);
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
body: CustomScrollView(
|
body: CustomScrollView(
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
@@ -68,6 +71,8 @@ class IntroPage extends HookConsumerWidget with PresLogger {
|
|||||||
),
|
),
|
||||||
child: FilledButton(
|
child: FilledButton(
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
|
if (isStarting.value) return;
|
||||||
|
isStarting.value = true;
|
||||||
if (!ref.read(enableAnalyticsProvider)) {
|
if (!ref.read(enableAnalyticsProvider)) {
|
||||||
loggy.info("disabling analytics per user request");
|
loggy.info("disabling analytics per user request");
|
||||||
try {
|
try {
|
||||||
@@ -84,7 +89,12 @@ class IntroPage extends HookConsumerWidget with PresLogger {
|
|||||||
.read(introCompletedProvider.notifier)
|
.read(introCompletedProvider.notifier)
|
||||||
.update(true);
|
.update(true);
|
||||||
},
|
},
|
||||||
child: Text(t.intro.start),
|
child: isStarting.value
|
||||||
|
? LinearProgressIndicator(
|
||||||
|
backgroundColor: Colors.transparent,
|
||||||
|
color: Theme.of(context).colorScheme.onSurface,
|
||||||
|
)
|
||||||
|
: Text(t.intro.start),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ bool canSendEvent(dynamic throwable) {
|
|||||||
UnexpectedFailure(:final error) => canSendEvent(error),
|
UnexpectedFailure(:final error) => canSendEvent(error),
|
||||||
DioException _ => false,
|
DioException _ => false,
|
||||||
SocketException _ => false,
|
SocketException _ => false,
|
||||||
|
HttpException _ => false,
|
||||||
|
HandshakeException _ => false,
|
||||||
ExpectedFailure _ => false,
|
ExpectedFailure _ => false,
|
||||||
ExpectedMeasuredFailure _ => false,
|
ExpectedMeasuredFailure _ => false,
|
||||||
_ => true,
|
_ => true,
|
||||||
|
|||||||
Reference in New Issue
Block a user