Compare commits
6 Commits
beta/0.7.1
...
beta/0.7.2
Author | SHA1 | Date | |
---|---|---|---|
139533d2ca | |||
889682f771 | |||
f16c98057f | |||
26ec807c25 | |||
45af6cbe3c | |||
5dd9cde12d |
@ -431,14 +431,10 @@ class _MediaPlayerControlsState extends State<MediaPlayerControls> {
|
||||
|
||||
void _duplicateTo(entity) {
|
||||
HomeAssistant().savedPlayerPosition = entity.getActualPosition().toInt();
|
||||
if (MediaQuery.of(context).size.width < Sizes.tabletMinWidth) {
|
||||
Navigator.of(context).popAndPushNamed("/play-media", arguments: {"url": entity.attributes["media_content_id"], "type": entity.attributes["media_content_type"]});
|
||||
} else {
|
||||
Navigator.of(context).pushNamed("/play-media", arguments: {
|
||||
Navigator.of(context).pushNamed("/play-media", arguments: {
|
||||
"url": entity.attributes["media_content_id"],
|
||||
"type": entity.attributes["media_content_type"]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void _switchTo(entity) {
|
||||
|
@ -180,9 +180,17 @@ class HomeAssistant {
|
||||
|
||||
if (rawView['badges'] != null && rawView['badges'] is List) {
|
||||
rawView['badges'].forEach((entity) {
|
||||
if (entities.isExist(entity)) {
|
||||
Entity e = entities.get(entity);
|
||||
view.badges.add(e);
|
||||
if (entity is String) {
|
||||
if (entities.isExist(entity)) {
|
||||
Entity e = entities.get(entity);
|
||||
view.badges.add(e);
|
||||
}
|
||||
} else {
|
||||
String eId = '${entity['entity']}';
|
||||
if (entities.isExist(eId)) {
|
||||
Entity e = entities.get(eId);
|
||||
view.badges.add(e);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -141,8 +141,8 @@ EventBus eventBus = new EventBus();
|
||||
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
|
||||
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
|
||||
const String appName = "HA Client";
|
||||
const appVersionNumber = "0.7.1";
|
||||
const appVersionAdd = "alpha1";
|
||||
const appVersionNumber = "0.7.2";
|
||||
const appVersionAdd = "";
|
||||
const appVersion = "$appVersionNumber-$appVersionAdd";
|
||||
|
||||
void main() async {
|
||||
|
@ -350,6 +350,7 @@ class ConnectionManager {
|
||||
|
||||
Future callService(String domain, String service, String entityId, Map additionalServiceData) {
|
||||
eventBus.fire(NotifyServiceCallEvent(domain, service, entityId));
|
||||
Logger.d("Service call: $domain.$service, $entityId, $additionalServiceData");
|
||||
Completer completer = Completer();
|
||||
Map serviceData = {};
|
||||
if (entityId != null) {
|
||||
@ -367,7 +368,7 @@ class ConnectionManager {
|
||||
else
|
||||
sendHTTPPost(
|
||||
endPoint: "/api/services/$domain/$service"
|
||||
).then((data) => completer.complete(data)).catchError((e) => completer.completeError(HAError("${e["message"]}")));;
|
||||
).then((data) => completer.complete(data)).catchError((e) => completer.completeError(HAError("${e["message"]}")));
|
||||
//return sendSocketMessage(type: "call_service", additionalData: {"domain": domain, "service": service});
|
||||
return completer.future;
|
||||
}
|
||||
@ -408,10 +409,11 @@ class ConnectionManager {
|
||||
headers: headers,
|
||||
body: data
|
||||
).then((response) {
|
||||
Logger.d("[Received] <== HTTP ${response.statusCode}");
|
||||
if (response.statusCode >= 200 && response.statusCode < 300 ) {
|
||||
Logger.d("[Received] <== HTTP ${response.statusCode}");
|
||||
completer.complete(response.body);
|
||||
} else {
|
||||
Logger.d("[Received] <== HTTP ${response.statusCode}: ${response.body}");
|
||||
completer.completeError({"code": response.statusCode, "message": "${response.body}"});
|
||||
}
|
||||
}).catchError((e) {
|
||||
|
@ -87,32 +87,57 @@ class LocationManager {
|
||||
}
|
||||
|
||||
updateDeviceLocation() async {
|
||||
if (ConnectionManager().webhookId != null &&
|
||||
ConnectionManager().webhookId.isNotEmpty) {
|
||||
String url = "${ConnectionManager()
|
||||
.httpWebHost}/api/webhook/${ConnectionManager().webhookId}";
|
||||
Logger.d("[Test location] Started");
|
||||
Logger.d("[Test location] Forcing Android location manager...");
|
||||
Geolocator geolocator = Geolocator()..forceAndroidLocationManager = true;
|
||||
var battery = Battery();
|
||||
int batteryLevel = 100;
|
||||
String webhookId = ConnectionManager().webhookId;
|
||||
String httpWebHost = ConnectionManager().httpWebHost;
|
||||
if (webhookId != null && webhookId.isNotEmpty) {
|
||||
String url = "$httpWebHost/api/webhook/$webhookId";
|
||||
Map<String, String> headers = {};
|
||||
Logger.d("[Location] Getting device location...");
|
||||
Position location = await Geolocator().getCurrentPosition(
|
||||
desiredAccuracy: LocationAccuracy.medium);
|
||||
Logger.d("[Location] Got location: ${location.latitude} ${location
|
||||
.longitude}. Sending home...");
|
||||
int battery = await Battery().batteryLevel;
|
||||
var data = {
|
||||
headers["Content-Type"] = "application/json";
|
||||
Map data = {
|
||||
"type": "update_location",
|
||||
"data": {
|
||||
"gps": [location.latitude, location.longitude],
|
||||
"gps_accuracy": location.accuracy,
|
||||
"battery": battery
|
||||
"gps": [],
|
||||
"gps_accuracy": 0,
|
||||
"battery": batteryLevel
|
||||
}
|
||||
};
|
||||
headers["Content-Type"] = "application/json";
|
||||
await http.post(
|
||||
url,
|
||||
headers: headers,
|
||||
body: json.encode(data)
|
||||
);
|
||||
Logger.d("[Location] ...done.");
|
||||
Logger.d("[Test location] Getting battery level...");
|
||||
battery.batteryLevel.then((val) => data["data"]["battery"] = val).whenComplete((){
|
||||
Logger.d("[Test location] Getting device location...");
|
||||
geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high, locationPermissionLevel: GeolocationPermission.locationAlways).then((location) {
|
||||
Logger.d("[Test location] Got location: ${location.latitude} ${location.longitude} with accuracy of ${location.accuracy}");
|
||||
if (location != null) {
|
||||
data["data"]["gps"] = [location.latitude, location.longitude];
|
||||
data["data"]["gps_accuracy"] = location.accuracy;
|
||||
Logger.d("[Test location] Sending data home...");
|
||||
http.post(
|
||||
url,
|
||||
headers: headers,
|
||||
body: json.encode(data)
|
||||
);
|
||||
}
|
||||
}).catchError((e) {
|
||||
Logger.d("[Test location] Error getting current location: ${e.toString()}. Trying last known...");
|
||||
geolocator.getLastKnownPosition(desiredAccuracy: LocationAccuracy.medium).then((location){
|
||||
Logger.d("[Test location] Got last known location: ${location.latitude} ${location.longitude} with accuracy of ${location.accuracy}");
|
||||
if (location != null) {
|
||||
data["data"]["gps"] = [location.latitude, location.longitude];
|
||||
data["data"]["gps_accuracy"] = location.accuracy;
|
||||
Logger.d("[Test location] Sending data home...");
|
||||
http.post(
|
||||
url,
|
||||
headers: headers,
|
||||
body: json.encode(data)
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,6 +146,7 @@ class LocationManager {
|
||||
void updateDeviceLocationIsolate() {
|
||||
workManager.Workmanager.executeTask((backgroundTask, data) {
|
||||
//print("[Background $backgroundTask] Started");
|
||||
Geolocator geolocator = Geolocator()..forceAndroidLocationManager = true;
|
||||
var battery = Battery();
|
||||
int batteryLevel = 100;
|
||||
String webhookId = data["webhookId"];
|
||||
@ -141,7 +167,7 @@ void updateDeviceLocationIsolate() {
|
||||
//print("[Background $backgroundTask] Getting battery level...");
|
||||
battery.batteryLevel.then((val) => data["data"]["battery"] = val).whenComplete((){
|
||||
//print("[Background $backgroundTask] Getting device location...");
|
||||
Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.medium).then((location) {
|
||||
geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high, locationPermissionLevel: GeolocationPermission.locationAlways).then((location) {
|
||||
//print("[Background $backgroundTask] Got location: ${location.latitude} ${location.longitude}");
|
||||
if (location != null) {
|
||||
data["data"]["gps"] = [location.latitude, location.longitude];
|
||||
@ -155,7 +181,7 @@ void updateDeviceLocationIsolate() {
|
||||
}
|
||||
}).catchError((e) {
|
||||
//print("[Background $backgroundTask] Error getting current location: ${e.toString()}. Trying last known...");
|
||||
Geolocator().getLastKnownPosition(desiredAccuracy: LocationAccuracy.medium).then((location){
|
||||
geolocator.getLastKnownPosition(desiredAccuracy: LocationAccuracy.medium).then((location){
|
||||
//print("[Background $backgroundTask] Got last known location: ${location.latitude} ${location.longitude}");
|
||||
if (location != null) {
|
||||
data["data"]["gps"] = [location.latitude, location.longitude];
|
||||
|
@ -889,9 +889,7 @@ class _MainPageState extends ReceiveShareState<MainPage> with WidgetsBindingObse
|
||||
),
|
||||
onWillPop: () {
|
||||
if (_entityToShow != null) {
|
||||
setState(() {
|
||||
_entityToShow = null;
|
||||
});
|
||||
eventBus.fire(ShowEntityPageEvent());
|
||||
return Future.value(false);
|
||||
} else {
|
||||
return Future.value(true);
|
||||
|
@ -90,8 +90,8 @@ class _PlayMediaPageState extends State<PlayMediaPage> {
|
||||
Navigator.pop(context);
|
||||
ConnectionManager().callService(
|
||||
serviceDomain,
|
||||
entity.entityId,
|
||||
"play_media",
|
||||
entity.entityId,
|
||||
{
|
||||
"media_content_id": _mediaUrl,
|
||||
"media_content_type": _contentType
|
||||
|
@ -24,7 +24,7 @@ class _WhatsNewPageState extends State<WhatsNewPage> {
|
||||
error = "";
|
||||
});
|
||||
http.Response response;
|
||||
response = await http.get("http://ha-client.homemade.systems/service/whats_new_$appVersionNumber.md");
|
||||
response = await http.get("http://ha-client.homemade.systems/service/whats_new_0.7.0.md");
|
||||
if (response.statusCode == 200) {
|
||||
setState(() {
|
||||
data = response.body;
|
||||
|
@ -1,7 +1,7 @@
|
||||
name: hass_client
|
||||
description: Home Assistant Android Client
|
||||
|
||||
version: 0.7.1+712
|
||||
version: 0.7.2+720
|
||||
|
||||
|
||||
environment:
|
||||
|
Reference in New Issue
Block a user