Added support for Home Assistant servers

This commit is contained in:
Juan Gilsanz Polo 2022-10-16 23:59:56 +02:00
parent c848591356
commit b1e257ddd3
9 changed files with 165 additions and 15 deletions

View file

@ -51,6 +51,8 @@ class _AddServerModalState extends State<AddServerModal> {
bool defaultServer = false;
bool homeAssistant = false;
bool allDataValid = false;
bool isConnecting = false;
@ -254,11 +256,19 @@ class _AddServerModalState extends State<AddServerModal> {
user: userController.text,
password: passwordController.text,
defaultServer: defaultServer,
authToken: ''
authToken: homeAssistant == true
? encodeBase64UserPass(userController.text, passwordController.text)
: '',
runningOnHa: homeAssistant
);
setState(() => isConnecting = true);
final result = await login(serverObj);
final result = homeAssistant == true
? await loginHA(serverObj)
: await login(serverObj);
setState(() => isConnecting = false);
if (result['result'] == 'success') {
serverObj.authToken = encodeBase64UserPass(serverObj.user, serverObj.password);
final serverCreated = await serversProvider.createServer(serverObj);
@ -320,6 +330,15 @@ class _AddServerModalState extends State<AddServerModal> {
)
);
}
else if (result['result'] == 'server_error') {
appConfigProvider.addLog(result['log']);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.serverError),
backgroundColor: Colors.red,
)
);
}
else {
appConfigProvider.addLog(result['log']);
ScaffoldMessenger.of(context).showSnackBar(
@ -341,9 +360,16 @@ class _AddServerModalState extends State<AddServerModal> {
user: userController.text,
password: passwordController.text,
defaultServer: defaultServer,
authToken: ''
authToken: homeAssistant == true
? encodeBase64UserPass(userController.text, passwordController.text)
: '',
runningOnHa: homeAssistant
);
final result = await login(serverObj);
final result = homeAssistant == true
? await loginHA(serverObj)
: await login(serverObj);
if (result['result'] == 'success') {
serverObj.authToken = encodeBase64UserPass(serverObj.user, serverObj.password);
final serverSaved = await serversProvider.editServer(serverObj);
@ -395,6 +421,15 @@ class _AddServerModalState extends State<AddServerModal> {
)
);
}
else if (result['result'] == 'server_error') {
appConfigProvider.addLog(result['log']);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.serverError),
backgroundColor: Colors.red,
)
);
}
else {
appConfigProvider.addLog(result['log']);
ScaffoldMessenger.of(context).showSnackBar(
@ -566,6 +601,36 @@ class _AddServerModalState extends State<AddServerModal> {
),
),
const SizedBox(height: 20),
Material(
color: Colors.transparent,
child: InkWell(
onTap: widget.server == null
? () => setState(() => homeAssistant = !homeAssistant)
: null,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 20),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
AppLocalizations.of(context)!.runningHomeAssistant,
style: const TextStyle(
fontSize: 15,
),
),
Switch(
value: homeAssistant,
onChanged: widget.server == null
? (value) => setState(() => homeAssistant = value)
: null,
activeColor: Theme.of(context).primaryColor,
)
],
),
),
),
),
const SizedBox(height: 20),
],
),
),