External bus and configuration opening for Web UI
This commit is contained in:
parent
01226cb9eb
commit
e1ca2638e3
@ -14,3 +14,22 @@ window.externalApp.getExternalAuth = function(options) {
|
|||||||
}, 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";
|
||||||
|
}
|
||||||
|
};
|
@ -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}");
|
||||||
|
@ -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
|
||||||
@ -131,10 +130,11 @@ 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);
|
|
||||||
}
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user