188 lines
6.1 KiB
Dart

import 'package:flutter/material.dart';
import 'package:mqtt_client/mqtt_server_client.dart';
import 'package:mycoreapi/api.dart';
import 'package:myhomie_app/Components/Buttons/rounded_button.dart';
import 'package:myhomie_app/Components/rounded_input_field.dart';
import 'package:myhomie_app/Components/rounded_password_field.dart';
import 'package:myhomie_app/Models/homieContext.dart';
import 'package:myhomie_app/Screens/Home/HomePage.dart';
import 'package:myhomie_app/Screens/Login/components/background.dart';
import 'package:myhomie_app/app_context.dart';
import 'package:myhomie_app/client.dart';
import 'package:provider/provider.dart';
class Body extends StatefulWidget {
const Body({
Key key,
}) : super(key: key);
@override
State<Body> createState() => _BodyState();
}
class _BodyState extends State<Body> {
final clientAPI = Client('http://192.168.31.140'); // TODO field
@override
Widget build(BuildContext context) {
final appContext = Provider.of<AppContext>(context);
Size size = MediaQuery.of(context).size;
return Background(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
"LOGIN",
style: TextStyle(fontWeight: FontWeight.bold),
),
SizedBox(height: size.height * 0.03),
/*SvgPicture.asset(
"assets/icons/login.svg",
height: size.height * 0.35,
),*/
SizedBox(height: size.height * 0.03),
RoundedInputField(
hintText: "Your Email",
onChanged: (value) {},
),
RoundedPasswordField(
onChanged: (value) {},
),
RoundedButton(
text: "LOGIN",
press: () async {
// TODO check login etc
var connected = await authenticateTRY();
if (connected) {
HomieAppContext homieAppContext = new HomieAppContext();
homieAppContext.host = "http://192.168.31.140";// TODO
homieAppContext.clientMQTT = new MqttServerClient(homieAppContext.host.replaceAll('http://', ''),'tablet_app_'+'TODODODO');
// homieAppContext.clientAPI = client; // TODO
homieAppContext.userId = "TODO"; // TODO
setState(() {
appContext.setContext(homieAppContext);
});
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) {
return HomePage();
},
),
(Route<dynamic> route) => false
);
}
},
),
SizedBox(height: size.height * 0.03),
// TODO
/*AlreadyHaveAnAccountCheck(
press: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
//return SignUpScreen();
// TODODODO
},
),
);
},
),*/
],
),
),
);
}
Future<bool> authenticateTRY() async {
print("try auth.. ");
// if () {} // Add if token exist and not null + not expired
var isConnected = false;
try {
//LoginDTO loginDTO = new LoginDTO(email: "test@email.be", password: "kljqsdkljqsd");
LoginDTO loginDTO = new LoginDTO(email: "", password: "");
TokenDTO token = await clientAPI.authenticationApi.authenticationAuthenticateWithJson(loginDTO);
print("Token ??");
print(token);
print(token.accessToken);
setAccessToken(token.accessToken);
isConnected = true; // TODO update context + db
}
catch (e) {
print("error auth");
}
return isConnected;
/*if (!isError) {
UserInfoDetailDTO user = await clientAPI.userApi.userGet("6182c472e20a6dbcfe8fe82c");
print("user values ??");
print(user.email);
print(user.id);
List<HomeDTO> homes = await clientAPI.homeApi.homeGetAll(user.id);
print("number of homes " + homes.length.toString());
homes.forEach((element) {
print(element);
});
HomeDTO home = homes[0]; // TODO
List<RoomSummaryDTO> rooms = await clientAPI.roomApi.roomGetAll(home.id);
print("number of rooms " + rooms.length.toString());
rooms.forEach((element) {
print(element);
});
List<ProviderDTO> providers = await clientAPI.providerApi.providerGetAll(home.id);
print("number of providers " + providers.length.toString());
providers.forEach((element) {
print(element);
});
List<DeviceSummaryDTO> devices = await clientAPI.deviceApi.deviceGetAll(home.id);
print("number of devices " + devices.length.toString());
/*devices.forEach((element) {
print(element);
});*/
List<AlarmModeDTO> alarms = await clientAPI.alarmApi.alarmGetAll(home.id);
print("number of alarms " + alarms.length.toString());
alarms.forEach((element) {
print(element);
});
/*List<EventDetailDTO> lastEvents = await clientAPI.eventApi.eventGet(home.id);
print("number of events " + lastEvents.length.toString());
lastEvents.forEach((element) {
print(element);
});*/
List<AutomationDTO> automations = await clientAPI.automationApi.automationGetAll(home.id);
print("number of automations " + automations.length.toString());
automations.forEach((element) {
print(element);
});
List<GroupSummaryDTO> groups = await clientAPI.groupApi.groupGetAll(home.id);
print("number of groups " + groups.length.toString());
groups.forEach((element) {
print(element);
});
}*/
}
void setAccessToken(String accessToken) {
clientAPI.apiApi.authentications.forEach((key, auth) {
if (auth is OAuth) {
auth.accessToken = accessToken;
}
});
}
}