mirror of
https://bitbucket.org/myhomie/myhomie_app.git
synced 2025-12-06 00:51:19 +00:00
224 lines
7.7 KiB
Dart
224 lines
7.7 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:fluttertoast/fluttertoast.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/Main/MainPage.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';
|
|
import 'package:uuid/uuid.dart';
|
|
|
|
import '../../../Helpers/DatabaseHelper.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
|
|
TokenDTO token;
|
|
@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();
|
|
|
|
UserInfoDetailDTO user = await clientAPI.userApi.userGet("6182c472e20a6dbcfe8fe82c"); // TO replace user get by email
|
|
|
|
print(user);
|
|
|
|
homieAppContext.host = "http://192.168.31.140";// TODO
|
|
homieAppContext.clientMQTT = new MqttServerClient(homieAppContext.host.replaceAll('http://', ''),'my_homie_app_'+ Uuid().v1());
|
|
homieAppContext.clientAPI = clientAPI;
|
|
homieAppContext.userId = user.id;
|
|
homieAppContext.language = user.language == null ? 'FR': user.language; //
|
|
homieAppContext.token = token.accessToken;
|
|
|
|
// TODO check if we select by default or ask user to select
|
|
if(user.homeIds.length > 0) {
|
|
homieAppContext.homeId = user.homeIds.first;
|
|
} else {
|
|
// TODO invite home creation
|
|
}
|
|
|
|
setState(() {
|
|
appContext.setContext(homieAppContext);
|
|
});
|
|
|
|
// STORE IT LOCALLY (SQLite)
|
|
HomieAppContext localContext = await DatabaseHelper.instance.getData();
|
|
if (localContext != null) { // Check if sql DB exist
|
|
await DatabaseHelper.instance.update(homieAppContext);
|
|
} else {
|
|
await DatabaseHelper.instance.insert(homieAppContext);
|
|
}
|
|
|
|
Fluttertoast.showToast(
|
|
msg: "Connexion réussie",
|
|
toastLength: Toast.LENGTH_SHORT,
|
|
gravity: ToastGravity.BOTTOM,
|
|
timeInSecForIosWeb: 1,
|
|
backgroundColor: Colors.lightGreen,
|
|
textColor: Colors.white,
|
|
fontSize: 16.0
|
|
);
|
|
|
|
Navigator.pushAndRemoveUntil(
|
|
context,
|
|
MaterialPageRoute(
|
|
builder: (context) {
|
|
return MainPage();
|
|
},
|
|
),
|
|
(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: "");
|
|
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;
|
|
}
|
|
});
|
|
}
|
|
} |