Update Settings.mc

Test the phone is connected before attempting WebHook HTTP requests.
This commit is contained in:
Philip Abbey
2024-08-18 12:04:34 +01:00
parent 19642c6679
commit 42d1a7233c

View File

@ -70,42 +70,46 @@ class Settings {
// Manage this inside the application or widget only (not a glance or background service process) // Manage this inside the application or widget only (not a glance or background service process)
if (mIsApp) { if (mIsApp) {
if (mHasService) { if (mHasService) {
mWebhookManager = new WebhookManager(); if (System.getDeviceSettings().phoneConnected) {
if (getWebhookId().equals("")) { mWebhookManager = new WebhookManager();
// System.println("Settings update(): Doing full webhook & sensor creation."); if (getWebhookId().equals("")) {
mWebhookManager.requestWebhookId(); // System.println("Settings update(): Doing full webhook & sensor creation.");
} else { mWebhookManager.requestWebhookId();
// System.println("Settings update(): Doing just sensor creation."); } else {
// We already have a Webhook ID, so just enable or disable the sensor in Home Assistant. // System.println("Settings update(): Doing just sensor creation.");
// Its a multiple step process, hence starting at step 0. // We already have a Webhook ID, so just enable or disable the sensor in Home Assistant.
mWebhookManager.registerWebhookSensor({ // Its a multiple step process, hence starting at step 0.
"device_class" => "battery", mWebhookManager.registerWebhookSensor({
"name" => "Battery Level", "device_class" => "battery",
"state" => System.getSystemStats().battery, "name" => "Battery Level",
"type" => "sensor", "state" => System.getSystemStats().battery,
"unique_id" => "battery_level", "type" => "sensor",
"unit_of_measurement" => "%", "unique_id" => "battery_level",
"state_class" => "measurement", "unit_of_measurement" => "%",
"entity_category" => "diagnostic", "state_class" => "measurement",
"disabled" => !Settings.isSensorsLevelEnabled() "entity_category" => "diagnostic",
}, 0); "disabled" => !Settings.isSensorsLevelEnabled()
} }, 0);
if (mIsSensorsLevelEnabled) {
// Create the timed activity
if ((Background.getTemporalEventRegisteredTime() == null) or
(Background.getTemporalEventRegisteredTime() != (mBatteryRefreshRate * 60))) {
Background.registerForTemporalEvent(new Time.Duration(mBatteryRefreshRate * 60)); // Convert to seconds
Background.registerForActivityCompletedEvent();
} }
} else if (Background.getTemporalEventRegisteredTime() != null) { if (mIsSensorsLevelEnabled) {
Background.deleteTemporalEvent(); // Create the timed activity
Background.deleteActivityCompletedEvent(); if ((Background.getTemporalEventRegisteredTime() == null) or
(Background.getTemporalEventRegisteredTime() != (mBatteryRefreshRate * 60))) {
Background.registerForTemporalEvent(new Time.Duration(mBatteryRefreshRate * 60)); // Convert to seconds
Background.registerForActivityCompletedEvent();
}
} else if (Background.getTemporalEventRegisteredTime() != null) {
Background.deleteTemporalEvent();
Background.deleteActivityCompletedEvent();
}
} else {
// Explicitly disable the background event which persists when the application closes.
// If !mHasService disable the Settings option as user feedback
unsetIsSensorsLevelEnabled();
unsetWebhookId();
} }
} else { } else {
// Explicitly disable the background event which persists when the application closes. ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String);
// If !mHasService disable the Settings option as user feedback
unsetIsSensorsLevelEnabled();
unsetWebhookId();
} }
} }
// System.println("Settings update(): getTemporalEventRegisteredTime() = " + Background.getTemporalEventRegisteredTime()); // System.println("Settings update(): getTemporalEventRegisteredTime() = " + Background.getTemporalEventRegisteredTime());