Skip to content
Snippets Groups Projects
Commit d681fb05 authored by vjrj's avatar vjrj
Browse files

Fix for VPN issue #45

parent 89040bed
No related branches found
No related tags found
No related merge requests found
import 'dart:io'; import 'dart:io';
import 'package:check_vpn_connection/check_vpn_connection.dart';
import 'package:connectivity_wrapper/connectivity_wrapper.dart'; import 'package:connectivity_wrapper/connectivity_wrapper.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/material.dart';
import '../ui_helpers.dart'; import '../ui_helpers.dart';
...@@ -20,14 +21,14 @@ class ConnectivityWidgetWrapperWrapper extends ConnectivityWidgetWrapper { ...@@ -20,14 +21,14 @@ class ConnectivityWidgetWrapperWrapper extends ConnectivityWidgetWrapper {
? <AddressCheckOptions>[] ? <AddressCheckOptions>[]
: List<AddressCheckOptions>.unmodifiable( : List<AddressCheckOptions>.unmodifiable(
<AddressCheckOptions>[ <AddressCheckOptions>[
AddressCheckOptions( /* AddressCheckOptions(
hostname: 'duniter.org', hostname: 'duniter.org',
port: 443, port: 443,
), ),
AddressCheckOptions( AddressCheckOptions(
hostname: 'moneda-libre.org', hostname: 'moneda-libre.org',
port: 443, port: 443,
), ), */
// Cloudflare // Cloudflare
AddressCheckOptions( AddressCheckOptions(
address: InternetAddress( address: InternetAddress(
...@@ -88,9 +89,33 @@ class ConnectivityWidgetWrapperWrapper extends ConnectivityWidgetWrapper { ...@@ -88,9 +89,33 @@ class ConnectivityWidgetWrapperWrapper extends ConnectivityWidgetWrapper {
); );
} }
@override
Widget build(BuildContext context) {
return FutureBuilder<bool>(
future: CheckVpnConnection.isVpnActive(),
builder: (BuildContext context, AsyncSnapshot<bool> snapshot) {
if (snapshot.hasData && snapshot.data != null) {
final bool isVpnActive = snapshot.data!;
if (isVpnActive) {
return child;
} else {
return super.build(context);
}
} else {
return super.build(context);
}
});
}
// This package does not work in IOS so we just return true // This package does not work in IOS so we just return true
// Also does not detect well in web production mode // Also does not detect well in web production mode
static Future<bool> get isConnected => kIsWeb || isIOS static Future<bool> get isConnected async {
? Future<bool>.value(true) final bool vpn = await CheckVpnConnection.isVpnActive();
: ConnectivityWrapper.instance.isConnected; if (vpn) {
return true;
}
return kIsWeb || isIOS
? Future<bool>.value(true)
: ConnectivityWrapper.instance.isConnected;
}
} }
...@@ -201,6 +201,14 @@ packages: ...@@ -201,6 +201,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.1" version: "1.3.1"
check_vpn_connection:
dependency: "direct main"
description:
name: check_vpn_connection
sha256: "68029b66124eb5de2bc877f516ad9773f8b57e0a9ccf5c64609bb7cb8f14f3a0"
url: "https://pub.dev"
source: hosted
version: "0.0.2"
checked_yaml: checked_yaml:
dependency: transitive dependency: transitive
description: description:
......
...@@ -93,6 +93,7 @@ dependencies: ...@@ -93,6 +93,7 @@ dependencies:
uni_links: ^0.5.1 uni_links: ^0.5.1
feedback: ^2.6.0 feedback: ^2.6.0
sentry_dart_plugin: ^1.5.0 sentry_dart_plugin: ^1.5.0
check_vpn_connection: ^0.0.2
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment