External bus and configuration opening for Web UI

This commit is contained in:
Yegor Vialov 2020-02-11 22:55:16 +00:00
parent 01226cb9eb
commit e1ca2638e3
4 changed files with 41 additions and 49 deletions

View File

@ -13,4 +13,23 @@ window.externalApp.getExternalAuth = function(options) {
window[options.callback](true, responseData); window[options.callback](true, responseData);
}, 500); }, 500);
} }
};
window.externalApp.externalBus = function(message) {
console.log("External bus message: " + message);
var messageObj = JSON.parse(message);
if (messageObj.type == "config/get") {
var responseData = {
id: messageObj.id,
type: "result",
success: true,
result: {
hasSettingsScreen: true
}
};
setTimeout(function(){
window.externalBus(responseData);
}, 500);
} else if (messageObj.type == "config_screen/show") {
window.location.href = "htcmd://show-settings";
}
}; };

View File

@ -155,7 +155,7 @@ Future<void> _reportError(dynamic error, dynamic stackTrace) async {
} }
void main() async { void main() async {
Crashlytics.instance.enableInDevMode = false; Crashlytics.instance.enableInDevMode = true;
FlutterError.onError = (FlutterErrorDetails details) { FlutterError.onError = (FlutterErrorDetails details) {
Logger.e(" Caut Flutter runtime error: ${details.exception}"); Logger.e(" Caut Flutter runtime error: ${details.exception}");

View File

@ -24,7 +24,6 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver, Ticker
int _previousViewCount; int _previousViewCount;
bool _showLoginButton = false; bool _showLoginButton = false;
bool _preventAppRefresh = false; bool _preventAppRefresh = false;
bool _showWebViewControls = true;
Entity _entityToShow; Entity _entityToShow;
@override @override
@ -130,11 +129,12 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver, Ticker
}); });
} }
}); });
flutterWebViewPlugin.onScrollYChanged.listen((double offsetY) { flutterWebViewPlugin.onUrlChanged.listen((String url) {
setState(() { if (url.contains("htcmd://show-settings")) {
_showWebViewControls = (offsetY == 0); flutterWebViewPlugin.hide();
}); Navigator.pushNamed(context, "/connection-settings");
}
}); });
} }
await HomeAssistant().fetchData().then((_) { await HomeAssistant().fetchData().then((_) {
@ -867,25 +867,17 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver, Ticker
) )
); );
} else if (ConnectionManager().settingsLoaded && ConnectionManager().useWebView) { } else if (ConnectionManager().settingsLoaded && ConnectionManager().useWebView) {
String webUIurl = ConnectionManager().httpWebHost;
if (webUIurl.contains("?")) {
webUIurl += "&external_auth=1";
} else {
webUIurl += "?external_auth=1";
}
return WebviewScaffold( return WebviewScaffold(
url: ConnectionManager().httpWebHost, url: webUIurl,
primary: false, primary: false,
appBar: !_showWebViewControls ? EmptyAppBar() : AppBar( debuggingEnabled: true,
actions: <Widget>[ appBar: EmptyAppBar(),
IconButton(
icon: Icon(Icons.smartphone),
onPressed: () {
Navigator.of(context).pushNamed('/integration-settings');
}
),
IconButton(
icon: Icon(Icons.settings),
onPressed: () {
Navigator.of(context).pushNamed('/connection-settings');
}
)
]
),
bottomNavigationBar: bottomBar, bottomNavigationBar: bottomBar,
); );
} else { } else {
@ -944,29 +936,10 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver, Ticker
class EmptyAppBar extends StatelessWidget implements PreferredSizeWidget { class EmptyAppBar extends StatelessWidget implements PreferredSizeWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container(); return Container(
color: Colors.blue,
);
} }
@override @override
Size get preferredSize => Size(0.0,0.0); Size get preferredSize => Size(0.0,0.0);
} }
class WebViewAppBar extends StatelessWidget implements PreferredSizeWidget {
@override
Widget build(BuildContext context) {
return Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
IconButton(
icon: Icon(Icons.smartphone),
onPressed: () {
Navigator.of(context).pushNamed('/connection-settings');
},
),
],
);
//return Container();
}
@override
Size get preferredSize => Size(0.0,30.0);
}

View File

@ -20,7 +20,7 @@ class _ConnectionSettingsPageState extends State<ConnectionSettingsPage> {
String _newLongLivedToken = ""; String _newLongLivedToken = "";
bool _useLovelace = true; bool _useLovelace = true;
bool _newUseLovelace = true; bool _newUseLovelace = true;
bool _useWebView = true; bool _useWebView = false;
bool _newUseWebView = true; bool _newUseWebView = true;
String oauthUrl; String oauthUrl;
@ -63,9 +63,9 @@ class _ConnectionSettingsPageState extends State<ConnectionSettingsPage> {
_useLovelace = _newUseLovelace = true; _useLovelace = _newUseLovelace = true;
} }
try { try {
_useWebView = _newUseWebView = prefs.getBool("use-webview") ?? true; _useWebView = _newUseWebView = prefs.getBool("use-webview") ?? false;
} catch (e) { } catch (e) {
_useWebView = _newUseWebView = true; _useWebView = _newUseWebView = false;
} }
}); });
} }