Remove web UI presentation option
This commit is contained in:
parent
6e448d3458
commit
959e89de2b
@ -31,7 +31,6 @@ import 'package:geolocator/geolocator.dart';
|
|||||||
import 'package:battery/battery.dart';
|
import 'package:battery/battery.dart';
|
||||||
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
|
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
|
||||||
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart' as standaloneWebview;
|
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart' as standaloneWebview;
|
||||||
import 'package:webview_flutter/webview_flutter.dart';
|
|
||||||
|
|
||||||
import 'utils/logger.dart';
|
import 'utils/logger.dart';
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@ class ConnectionManager {
|
|||||||
String displayHostname;
|
String displayHostname;
|
||||||
String _webSocketAPIEndpoint;
|
String _webSocketAPIEndpoint;
|
||||||
String httpWebHost;
|
String httpWebHost;
|
||||||
String httpWebHostWithExtAuth;
|
|
||||||
String _token;
|
String _token;
|
||||||
String _tempToken;
|
String _tempToken;
|
||||||
String oauthUrl;
|
String oauthUrl;
|
||||||
@ -52,12 +51,6 @@ class ConnectionManager {
|
|||||||
"${prefs.getString('hassio-protocol')}://$_domain:$_port/api/websocket";
|
"${prefs.getString('hassio-protocol')}://$_domain:$_port/api/websocket";
|
||||||
httpWebHost =
|
httpWebHost =
|
||||||
"${prefs.getString('hassio-res-protocol')}://$_domain:$_port";
|
"${prefs.getString('hassio-res-protocol')}://$_domain:$_port";
|
||||||
httpWebHostWithExtAuth = httpWebHost;
|
|
||||||
if (httpWebHostWithExtAuth.contains("?")) {
|
|
||||||
httpWebHostWithExtAuth += "&external_auth=1";
|
|
||||||
} else {
|
|
||||||
httpWebHostWithExtAuth += "?external_auth=1";
|
|
||||||
}
|
|
||||||
if ((_domain == null) || (_port == null) ||
|
if ((_domain == null) || (_port == null) ||
|
||||||
(_domain.isEmpty) || (_port.isEmpty)) {
|
(_domain.isEmpty) || (_port.isEmpty)) {
|
||||||
completer.completeError(HAError.checkConnectionSettings());
|
completer.completeError(HAError.checkConnectionSettings());
|
||||||
|
@ -806,14 +806,6 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver, Ticker
|
|||||||
}
|
}
|
||||||
|
|
||||||
TabController _viewsTabController;
|
TabController _viewsTabController;
|
||||||
WebViewController _mainWebViewController;
|
|
||||||
|
|
||||||
_loadJSInterface() {
|
|
||||||
Logger.d("[MainWebView] Injecting JS interface");
|
|
||||||
rootBundle.loadString('assets/js/externalAuth.js').then((js){
|
|
||||||
_mainWebViewController.evaluateJavascript(js.replaceFirst("[token]", ConnectionManager()._token));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -869,59 +861,11 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver, Ticker
|
|||||||
return Scaffold(
|
return Scaffold(
|
||||||
key: _scaffoldKey,
|
key: _scaffoldKey,
|
||||||
primary: false,
|
primary: false,
|
||||||
bottomNavigationBar: bottomBar,
|
//bottomNavigationBar: bottomBar,
|
||||||
body: Container(
|
body: Container(
|
||||||
color: Colors.blue,
|
color: Colors.blue,
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
} else if (ConnectionManager().settingsLoaded && ConnectionManager().useWebView && !_showLoginButton) {
|
|
||||||
return WillPopScope(
|
|
||||||
child: Scaffold(
|
|
||||||
primary: true,
|
|
||||||
appBar: EmptyAppBar(),
|
|
||||||
body: WebView(
|
|
||||||
initialUrl: ConnectionManager().httpWebHostWithExtAuth,
|
|
||||||
debuggingEnabled: Logger.isInDebugMode,
|
|
||||||
javascriptMode: JavascriptMode.unrestricted,
|
|
||||||
onWebViewCreated: (webviewController) {
|
|
||||||
_mainWebViewController = webviewController;
|
|
||||||
},
|
|
||||||
onPageStarted: (url) {
|
|
||||||
Logger.d("[MainWebView] Page started: $url");
|
|
||||||
if (url.contains(ConnectionManager()._domain)) {
|
|
||||||
_loadJSInterface();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
gestureNavigationEnabled: true,
|
|
||||||
gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>[
|
|
||||||
new Factory<OneSequenceGestureRecognizer>(
|
|
||||||
() => new EagerGestureRecognizer(),
|
|
||||||
),
|
|
||||||
].toSet(),
|
|
||||||
javascriptChannels: {
|
|
||||||
new JavascriptChannel(name: 'HAClient', onMessageReceived: (JavascriptMessage message) {
|
|
||||||
if (message.message == "show-settings") {
|
|
||||||
Navigator.of(context).pushNamed("/connection-settings");
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
)
|
|
||||||
),
|
|
||||||
onWillPop: () {
|
|
||||||
Completer completer = Completer();
|
|
||||||
if (_mainWebViewController != null) {
|
|
||||||
_mainWebViewController.canGoBack().then((canGoBack) {
|
|
||||||
if (canGoBack) {
|
|
||||||
_mainWebViewController.goBack();
|
|
||||||
}
|
|
||||||
completer.complete(!canGoBack);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
completer.complete(true);
|
|
||||||
}
|
|
||||||
return completer.future;
|
|
||||||
},
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
if (HomeAssistant().isNoViews) {
|
if (HomeAssistant().isNoViews) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
@ -974,14 +918,3 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver, Ticker
|
|||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class EmptyAppBar extends StatelessWidget implements PreferredSizeWidget {
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Container(
|
|
||||||
color: Colors.blue,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@override
|
|
||||||
Size get preferredSize => Size(0.0,0.0);
|
|
||||||
}
|
|
||||||
|
@ -20,8 +20,6 @@ class _ConnectionSettingsPageState extends State<ConnectionSettingsPage> {
|
|||||||
String _newLongLivedToken = "";
|
String _newLongLivedToken = "";
|
||||||
bool _useLovelace = true;
|
bool _useLovelace = true;
|
||||||
bool _newUseLovelace = true;
|
bool _newUseLovelace = true;
|
||||||
bool _useWebView = false;
|
|
||||||
bool _newUseWebView = true;
|
|
||||||
|
|
||||||
String oauthUrl;
|
String oauthUrl;
|
||||||
bool useOAuth = false;
|
bool useOAuth = false;
|
||||||
@ -62,11 +60,6 @@ class _ConnectionSettingsPageState extends State<ConnectionSettingsPage> {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
_useLovelace = _newUseLovelace = true;
|
_useLovelace = _newUseLovelace = true;
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
_useWebView = _newUseWebView = prefs.getBool("use-webview") ?? false;
|
|
||||||
} catch (e) {
|
|
||||||
_useWebView = _newUseWebView = false;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +69,6 @@ class _ConnectionSettingsPageState extends State<ConnectionSettingsPage> {
|
|||||||
(_newHassioDomain != _hassioDomain) ||
|
(_newHassioDomain != _hassioDomain) ||
|
||||||
(_newSocketProtocol != _socketProtocol) ||
|
(_newSocketProtocol != _socketProtocol) ||
|
||||||
(_newUseLovelace != _useLovelace) ||
|
(_newUseLovelace != _useLovelace) ||
|
||||||
(_newUseWebView != _useWebView) ||
|
|
||||||
(_newLongLivedToken != _longLivedToken));
|
(_newLongLivedToken != _longLivedToken));
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -112,7 +104,6 @@ class _ConnectionSettingsPageState extends State<ConnectionSettingsPage> {
|
|||||||
prefs.setString("hassio-protocol", _newSocketProtocol);
|
prefs.setString("hassio-protocol", _newSocketProtocol);
|
||||||
prefs.setString("hassio-res-protocol", _newSocketProtocol == "wss" ? "https" : "http");
|
prefs.setString("hassio-res-protocol", _newSocketProtocol == "wss" ? "https" : "http");
|
||||||
prefs.setBool("use-lovelace", _newUseLovelace);
|
prefs.setBool("use-lovelace", _newUseLovelace);
|
||||||
prefs.setBool("use-webview", _newUseWebView);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -210,19 +201,6 @@ class _ConnectionSettingsPageState extends State<ConnectionSettingsPage> {
|
|||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
new Row(
|
|
||||||
children: [
|
|
||||||
Text("Use web UI"),
|
|
||||||
Switch(
|
|
||||||
value: _newUseWebView,
|
|
||||||
onChanged: (value) {
|
|
||||||
setState(() {
|
|
||||||
_newUseWebView = value;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Text(
|
Text(
|
||||||
"Authentication settings",
|
"Authentication settings",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
|
@ -22,7 +22,6 @@ dependencies:
|
|||||||
in_app_purchase: ^0.3.0+3
|
in_app_purchase: ^0.3.0+3
|
||||||
flutter_custom_tabs: ^0.6.0
|
flutter_custom_tabs: ^0.6.0
|
||||||
flutter_webview_plugin: ^0.3.10+1
|
flutter_webview_plugin: ^0.3.10+1
|
||||||
webview_flutter: ^0.3.19+7
|
|
||||||
firebase_messaging: ^6.0.9
|
firebase_messaging: ^6.0.9
|
||||||
flutter_secure_storage: ^3.3.1+1
|
flutter_secure_storage: ^3.3.1+1
|
||||||
device_info: ^0.4.1+4
|
device_info: ^0.4.1+4
|
||||||
|
Reference in New Issue
Block a user