mirror of
				https://github.com/house-of-abbey/GarminHomeAssistant.git
				synced 2025-11-04 00:48:14 +00:00 
			
		
		
		
	Removed RezStrings.mc
And in-lined the resource strings fetching.
This commit is contained in:
		@@ -28,7 +28,7 @@ using Toybox.Application.Properties;
 | 
			
		||||
class HomeAssistantConfirmation extends WatchUi.Confirmation {
 | 
			
		||||
 | 
			
		||||
    function initialize() {
 | 
			
		||||
        WatchUi.Confirmation.initialize(RezStrings.getConfirm());
 | 
			
		||||
        WatchUi.Confirmation.initialize(WatchUi.loadResource($.Rez.Strings.Confirm));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -44,10 +44,10 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
 | 
			
		||||
 | 
			
		||||
    function onLayout(dc as Graphics.Dc) as Void {
 | 
			
		||||
        var h  = dc.getHeight();
 | 
			
		||||
        var tw = dc.getTextWidthInPixels(RezStrings.getGlanceMenu(), Graphics.FONT_XTINY);
 | 
			
		||||
        var tw = dc.getTextWidthInPixels(WatchUi.loadResource($.Rez.Strings.GlanceMenu), Graphics.FONT_XTINY);
 | 
			
		||||
 | 
			
		||||
        mTitle = new WatchUi.Text({
 | 
			
		||||
            :text          => RezStrings.getAppName(),
 | 
			
		||||
            :text          => WatchUi.loadResource($.Rez.Strings.AppName),
 | 
			
		||||
            :color         => Graphics.COLOR_WHITE,
 | 
			
		||||
            :font          => Graphics.FONT_TINY,
 | 
			
		||||
            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
			
		||||
@@ -64,7 +64,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
 | 
			
		||||
            :locY          => 3 * h / 6
 | 
			
		||||
        });
 | 
			
		||||
        mApiStatus = new WatchUi.Text({
 | 
			
		||||
            :text          => RezStrings.getChecking(),
 | 
			
		||||
            :text          => WatchUi.loadResource($.Rez.Strings.Checking),
 | 
			
		||||
            :color         => Graphics.COLOR_WHITE,
 | 
			
		||||
            :font          => Graphics.FONT_XTINY,
 | 
			
		||||
            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
			
		||||
@@ -72,7 +72,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
 | 
			
		||||
            :locY          => 3 * h / 6
 | 
			
		||||
        });
 | 
			
		||||
        mMenuText = new WatchUi.Text({
 | 
			
		||||
            :text          => RezStrings.getGlanceMenu() + ":",
 | 
			
		||||
            :text          => WatchUi.loadResource($.Rez.Strings.GlanceMenu) + ":",
 | 
			
		||||
            :color         => Graphics.COLOR_WHITE,
 | 
			
		||||
            :font          => Graphics.FONT_XTINY,
 | 
			
		||||
            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
			
		||||
@@ -80,7 +80,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
 | 
			
		||||
            :locY          => 5 * h / 6
 | 
			
		||||
        });
 | 
			
		||||
        mMenuStatus = new WatchUi.Text({
 | 
			
		||||
            :text          => RezStrings.getChecking(),
 | 
			
		||||
            :text          => WatchUi.loadResource($.Rez.Strings.Checking),
 | 
			
		||||
            :color         => Graphics.COLOR_WHITE,
 | 
			
		||||
            :font          => Graphics.FONT_XTINY,
 | 
			
		||||
            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
			
		||||
 
 | 
			
		||||
@@ -51,17 +51,17 @@ class HomeAssistantService {
 | 
			
		||||
            case Communications.BLE_HOST_TIMEOUT:
 | 
			
		||||
            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
			
		||||
                // System.println("HomeAssistantService onReturnCall() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
			
		||||
                ErrorView.show(RezStrings.getNoPhone() + ".");
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.BLE_QUEUE_FULL:
 | 
			
		||||
                // System.println("HomeAssistantService onReturnCall() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
			
		||||
                ErrorView.show(RezStrings.getApiFlood());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
			
		||||
                // System.println("HomeAssistantService onReturnCall() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
			
		||||
                ErrorView.show(RezStrings.getNoResponse());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY:
 | 
			
		||||
@@ -70,18 +70,18 @@ class HomeAssistantService {
 | 
			
		||||
                break;
 | 
			
		||||
            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
			
		||||
                // System.println("HomeAssistantService onReturnCall() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
			
		||||
                ErrorView.show(RezStrings.getNoJson());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 404:
 | 
			
		||||
                // System.println("HomeAssistantService onReturnCall() Response Code: 404, page not found. Check API URL setting.");
 | 
			
		||||
                ErrorView.show(RezStrings.getApiUrlNotFound());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 200:
 | 
			
		||||
                // System.println("HomeAssistantService onReturnCall(): Service executed.");
 | 
			
		||||
                var d     = data as Lang.Array;
 | 
			
		||||
                var toast = RezStrings.getExecuted();
 | 
			
		||||
                var toast = WatchUi.loadResource($.Rez.Strings.Executed) as Lang.String;
 | 
			
		||||
                for(var i = 0; i < d.size(); i++) {
 | 
			
		||||
                    if ((d[i].get("entity_id") as Lang.String).equals(entity_id)) {
 | 
			
		||||
                        toast = (d[i].get("attributes") as Lang.Dictionary).get("friendly_name") as Lang.String;
 | 
			
		||||
@@ -102,7 +102,7 @@ class HomeAssistantService {
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                // System.println("HomeAssistantService onReturnCall(): Unhandled HTTP response code = " + responseCode);
 | 
			
		||||
                ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode);
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -112,10 +112,10 @@ class HomeAssistantService {
 | 
			
		||||
    ) as Void {
 | 
			
		||||
        if (! System.getDeviceSettings().phoneConnected) {
 | 
			
		||||
            // System.println("HomeAssistantService call(): No Phone connection, skipping API call.");
 | 
			
		||||
            ErrorView.show(RezStrings.getNoPhone() + ".");
 | 
			
		||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
			
		||||
        } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
			
		||||
            // System.println("HomeAssistantService call(): No Internet connection, skipping API call.");
 | 
			
		||||
            ErrorView.show(RezStrings.getNoInternet() + ".");
 | 
			
		||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + ".");
 | 
			
		||||
        } else {
 | 
			
		||||
            // Can't use null for substring() parameters due to API version level.
 | 
			
		||||
            var url = Settings.getApiUrl() + "/services/" + service.substring(0, service.find(".")) + "/" + service.substring(service.find(".")+1, service.length());
 | 
			
		||||
 
 | 
			
		||||
@@ -87,27 +87,27 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem {
 | 
			
		||||
        // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: " + responseCode);
 | 
			
		||||
        // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Data: " + data);
 | 
			
		||||
 | 
			
		||||
        var status = RezStrings.getUnavailable();
 | 
			
		||||
        var status = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String;
 | 
			
		||||
        switch (responseCode) {
 | 
			
		||||
            case Communications.BLE_HOST_TIMEOUT:
 | 
			
		||||
            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
			
		||||
                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
			
		||||
                ErrorView.show(RezStrings.getNoPhone() + ".");
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.BLE_QUEUE_FULL:
 | 
			
		||||
                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
			
		||||
                ErrorView.show(RezStrings.getApiFlood());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
			
		||||
                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
			
		||||
                ErrorView.show(RezStrings.getNoResponse());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
			
		||||
                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
			
		||||
                ErrorView.show(RezStrings.getNoJson());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY:
 | 
			
		||||
@@ -121,16 +121,16 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem {
 | 
			
		||||
 | 
			
		||||
            case 404:
 | 
			
		||||
                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: 404, page not found. Check API URL setting.");
 | 
			
		||||
                ErrorView.show(RezStrings.getApiUrlNotFound());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 400:
 | 
			
		||||
                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: 400, bad request. Template error.");
 | 
			
		||||
                ErrorView.show(RezStrings.getTemplateError());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.TemplateError));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 200:
 | 
			
		||||
                status = RezStrings.getAvailable();
 | 
			
		||||
                status = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String;
 | 
			
		||||
                setSubLabel(data);
 | 
			
		||||
                requestUpdate();
 | 
			
		||||
                // Now this feels very "closely coupled" to the application, but it is the most reliable method instead of using a timer.
 | 
			
		||||
@@ -139,7 +139,7 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem {
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                // System.println("HomeAssistantTemplateMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode);
 | 
			
		||||
                ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode);
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode);
 | 
			
		||||
        }
 | 
			
		||||
        getApp().setApiStatus(status);
 | 
			
		||||
    }
 | 
			
		||||
@@ -147,12 +147,12 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem {
 | 
			
		||||
    function getState() as Void {
 | 
			
		||||
        if (! System.getDeviceSettings().phoneConnected) {
 | 
			
		||||
            // System.println("HomeAssistantTemplateMenuItem getState(): No Phone connection, skipping API call.");
 | 
			
		||||
            ErrorView.show(RezStrings.getNoPhone() + ".");
 | 
			
		||||
            getApp().setApiStatus(RezStrings.getUnavailable());
 | 
			
		||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
			
		||||
            getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable));
 | 
			
		||||
        } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
			
		||||
            // System.println("HomeAssistantTemplateMenuItem getState(): No Internet connection, skipping API call.");
 | 
			
		||||
            ErrorView.show(RezStrings.getNoInternet() + ".");
 | 
			
		||||
            getApp().setApiStatus(RezStrings.getUnavailable());
 | 
			
		||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + ".");
 | 
			
		||||
            getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable));
 | 
			
		||||
        } else {
 | 
			
		||||
            var url = Settings.getApiUrl() + "/template";
 | 
			
		||||
            // System.println("HomeAssistantTemplateMenuItem getState() URL=" + url + ", Template='" + mTemplate + "'");
 | 
			
		||||
 
 | 
			
		||||
@@ -62,27 +62,27 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
			
		||||
        // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: " + responseCode);
 | 
			
		||||
        // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Data: " + data);
 | 
			
		||||
 | 
			
		||||
        var status = RezStrings.getUnavailable();
 | 
			
		||||
        var status = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String;
 | 
			
		||||
        switch (responseCode) {
 | 
			
		||||
            case Communications.BLE_HOST_TIMEOUT:
 | 
			
		||||
            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
			
		||||
                // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
			
		||||
                ErrorView.show(RezStrings.getNoPhone() + ".");
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.BLE_QUEUE_FULL:
 | 
			
		||||
                // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
			
		||||
                ErrorView.show(RezStrings.getApiFlood());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
			
		||||
                // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
			
		||||
                ErrorView.show(RezStrings.getNoResponse());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
			
		||||
                // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
			
		||||
                ErrorView.show(RezStrings.getNoJson());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY:
 | 
			
		||||
@@ -105,7 +105,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
			
		||||
                    ErrorView.show("HTTP 404, " + mData.get("entity_id") + ". " + data.get("message"));
 | 
			
		||||
                } else {
 | 
			
		||||
                    // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: 404, page not found. Check API URL setting.");
 | 
			
		||||
                    ErrorView.show(RezStrings.getApiUrlNotFound());
 | 
			
		||||
                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound));
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
@@ -116,7 +116,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 200:
 | 
			
		||||
                status = RezStrings.getAvailable();
 | 
			
		||||
                status = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String;
 | 
			
		||||
                var state = data.get("state") as Lang.String;
 | 
			
		||||
                // System.println((data.get("attributes") as Lang.Dictionary).get("friendly_name") + " State=" + state);
 | 
			
		||||
                if (getLabel().equals("...")) {
 | 
			
		||||
@@ -129,7 +129,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                // System.println("HomeAssistantToggleMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode);
 | 
			
		||||
                ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode);
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode);
 | 
			
		||||
        }
 | 
			
		||||
        getApp().setApiStatus(status);
 | 
			
		||||
    }
 | 
			
		||||
@@ -137,12 +137,12 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
			
		||||
    function getState() as Void {
 | 
			
		||||
        if (! System.getDeviceSettings().phoneConnected) {
 | 
			
		||||
            // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
 | 
			
		||||
            ErrorView.show(RezStrings.getNoPhone() + ".");
 | 
			
		||||
            getApp().setApiStatus(RezStrings.getUnavailable());
 | 
			
		||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
			
		||||
            getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable));
 | 
			
		||||
        } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
			
		||||
            // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
 | 
			
		||||
            ErrorView.show(RezStrings.getNoInternet() + ".");
 | 
			
		||||
            getApp().setApiStatus(RezStrings.getUnavailable());
 | 
			
		||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + ".");
 | 
			
		||||
            getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable));
 | 
			
		||||
        } else {
 | 
			
		||||
            var url = Settings.getApiUrl() + "/states/" + mData.get("entity_id");
 | 
			
		||||
            // System.println("HomeAssistantToggleMenuItem getState() URL=" + url);
 | 
			
		||||
@@ -167,32 +167,32 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
			
		||||
        // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: " + responseCode);
 | 
			
		||||
        // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Data: " + data);
 | 
			
		||||
 | 
			
		||||
        var status = RezStrings.getUnavailable();
 | 
			
		||||
        var status = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String;
 | 
			
		||||
        switch (responseCode) {
 | 
			
		||||
            case Communications.BLE_HOST_TIMEOUT:
 | 
			
		||||
            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
			
		||||
                // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
			
		||||
                ErrorView.show(RezStrings.getNoPhone() + ".");
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.BLE_QUEUE_FULL:
 | 
			
		||||
                // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
			
		||||
                ErrorView.show(RezStrings.getApiFlood());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
			
		||||
                // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
			
		||||
                ErrorView.show(RezStrings.getNoResponse());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
			
		||||
                // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
			
		||||
                ErrorView.show(RezStrings.getNoJson());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 404:
 | 
			
		||||
                // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: 404, page not found. Check API URL setting.");
 | 
			
		||||
                ErrorView.show(RezStrings.getApiUrlNotFound());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 200:
 | 
			
		||||
@@ -205,12 +205,12 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
			
		||||
                        setUiToggle(state);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                status = RezStrings.getAvailable();
 | 
			
		||||
                status = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                // System.println("HomeAssistantToggleMenuItem onReturnSetState(): Unhandled HTTP response code = " + responseCode);
 | 
			
		||||
                ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode);
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode);
 | 
			
		||||
        }
 | 
			
		||||
        getApp().setApiStatus(status);
 | 
			
		||||
    }
 | 
			
		||||
@@ -220,12 +220,12 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
			
		||||
            // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
 | 
			
		||||
            // Toggle the UI back
 | 
			
		||||
            setEnabled(!isEnabled());
 | 
			
		||||
            ErrorView.show(RezStrings.getNoPhone() + ".");
 | 
			
		||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
			
		||||
        } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
			
		||||
            // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
 | 
			
		||||
            // Toggle the UI back
 | 
			
		||||
            setEnabled(!isEnabled());
 | 
			
		||||
            ErrorView.show(RezStrings.getNoInternet() + ".");
 | 
			
		||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + ".");
 | 
			
		||||
        } else {
 | 
			
		||||
            // Updated SDK and got a new error
 | 
			
		||||
            // ERROR: venu: Cannot find symbol ':substring' on type 'PolyType<Null or $.Toybox.Lang.Object>'.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,199 +0,0 @@
 | 
			
		||||
//-----------------------------------------------------------------------------------
 | 
			
		||||
//
 | 
			
		||||
// Distributed under MIT Licence
 | 
			
		||||
//   See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE.
 | 
			
		||||
//
 | 
			
		||||
//-----------------------------------------------------------------------------------
 | 
			
		||||
//
 | 
			
		||||
// GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely
 | 
			
		||||
// tested on a Venu 2 device. The source code is provided at:
 | 
			
		||||
//            https://github.com/house-of-abbey/GarminHomeAssistant.
 | 
			
		||||
//
 | 
			
		||||
// P A Abbey & J D Abbey & Someone0nEarth, 31 October 2023
 | 
			
		||||
//
 | 
			
		||||
//
 | 
			
		||||
// Description:
 | 
			
		||||
//
 | 
			
		||||
// Load the strings centrally once rather than initialising locally within separate
 | 
			
		||||
// classes. This is to solve a problem with out of memory errors in some devices,
 | 
			
		||||
// e.g. Vivoactive 3.
 | 
			
		||||
//
 | 
			
		||||
//-----------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
using Toybox.Lang;
 | 
			
		||||
using Toybox.WatchUi;
 | 
			
		||||
 | 
			
		||||
class RezStrings {
 | 
			
		||||
 | 
			
		||||
    (:glance)
 | 
			
		||||
    private static var strAppName           as Lang.String or Null;
 | 
			
		||||
    private static var strConfirm           as Lang.String or Null;
 | 
			
		||||
    private static var strExecuted          as Lang.String or Null;
 | 
			
		||||
    private static var strNoPhone           as Lang.String or Null;
 | 
			
		||||
    private static var strNoInternet        as Lang.String or Null;
 | 
			
		||||
    private static var strNoResponse        as Lang.String or Null;
 | 
			
		||||
    private static var strNoApiKey          as Lang.String or Null;
 | 
			
		||||
    private static var strNoApiUrl          as Lang.String or Null;
 | 
			
		||||
    private static var strNoConfigUrl       as Lang.String or Null;
 | 
			
		||||
    private static var strApiFlood          as Lang.String or Null;
 | 
			
		||||
    private static var strApiUrlNotFound    as Lang.String or Null;
 | 
			
		||||
    private static var strConfigUrlNotFound as Lang.String or Null;
 | 
			
		||||
    private static var strNoJson            as Lang.String or Null;
 | 
			
		||||
    private static var strUnhandledHttpErr  as Lang.String or Null;
 | 
			
		||||
    private static var strTrailingSlashErr  as Lang.String or Null;
 | 
			
		||||
    private static var strWebhookFailed     as Lang.String or Null;
 | 
			
		||||
    private static var strTemplateError     as Lang.String or Null;
 | 
			
		||||
    (:glance)
 | 
			
		||||
    private static var strAvailable         as Lang.String or Null;
 | 
			
		||||
    (:glance)
 | 
			
		||||
    private static var strChecking          as Lang.String or Null;
 | 
			
		||||
    (:glance)
 | 
			
		||||
    private static var strUnavailable       as Lang.String or Null;
 | 
			
		||||
    (:glance)
 | 
			
		||||
    private static var strUnconfigured      as Lang.String or Null;
 | 
			
		||||
    (:glance)
 | 
			
		||||
    private static var strCached            as Lang.String or Null;
 | 
			
		||||
    (:glance)
 | 
			
		||||
    private static var strGlanceMenu        as Lang.String or Null;
 | 
			
		||||
    private static var strMemory            as Lang.String or Null;
 | 
			
		||||
 | 
			
		||||
    // Can't initialise a constant directly, have to be initialised via a function
 | 
			
		||||
    // for 'WatchUi.loadResource' to be available.
 | 
			
		||||
    (:glance)
 | 
			
		||||
    static function update_glance() {
 | 
			
		||||
        strAppName      = WatchUi.loadResource($.Rez.Strings.AppName);
 | 
			
		||||
        strAvailable    = WatchUi.loadResource($.Rez.Strings.Available);
 | 
			
		||||
        strChecking     = WatchUi.loadResource($.Rez.Strings.Checking);
 | 
			
		||||
        strUnavailable  = WatchUi.loadResource($.Rez.Strings.Unavailable);
 | 
			
		||||
        strUnconfigured = WatchUi.loadResource($.Rez.Strings.Unconfigured);
 | 
			
		||||
        strCached       = WatchUi.loadResource($.Rez.Strings.Cached);
 | 
			
		||||
        strGlanceMenu   = WatchUi.loadResource($.Rez.Strings.GlanceMenu);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Can't initialise a constant directly, have to be initialised via a function
 | 
			
		||||
    // for 'WatchUi.loadResource' to be available.
 | 
			
		||||
    static function update() {
 | 
			
		||||
        update_glance();
 | 
			
		||||
        strConfirm           = WatchUi.loadResource($.Rez.Strings.Confirm);
 | 
			
		||||
        strExecuted          = WatchUi.loadResource($.Rez.Strings.Executed);
 | 
			
		||||
        strNoPhone           = WatchUi.loadResource($.Rez.Strings.NoPhone);
 | 
			
		||||
        strNoInternet        = WatchUi.loadResource($.Rez.Strings.NoInternet);
 | 
			
		||||
        strNoResponse        = WatchUi.loadResource($.Rez.Strings.NoResponse);
 | 
			
		||||
        strNoApiKey          = WatchUi.loadResource($.Rez.Strings.NoAPIKey);
 | 
			
		||||
        strNoApiUrl          = WatchUi.loadResource($.Rez.Strings.NoApiUrl);
 | 
			
		||||
        strNoConfigUrl       = WatchUi.loadResource($.Rez.Strings.NoConfigUrl);
 | 
			
		||||
        strApiFlood          = WatchUi.loadResource($.Rez.Strings.ApiFlood);
 | 
			
		||||
        strApiUrlNotFound    = WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound);
 | 
			
		||||
        strConfigUrlNotFound = WatchUi.loadResource($.Rez.Strings.ConfigUrlNotFound);
 | 
			
		||||
        strNoJson            = WatchUi.loadResource($.Rez.Strings.NoJson);
 | 
			
		||||
        strUnhandledHttpErr  = WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr);
 | 
			
		||||
        strTrailingSlashErr  = WatchUi.loadResource($.Rez.Strings.TrailingSlashErr);
 | 
			
		||||
        strWebhookFailed     = WatchUi.loadResource($.Rez.Strings.WebhookFailed);
 | 
			
		||||
        strTemplateError     = WatchUi.loadResource($.Rez.Strings.TemplateError);
 | 
			
		||||
        strMemory            = WatchUi.loadResource($.Rez.Strings.Memory);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    (:glance)
 | 
			
		||||
    static function getAppName() as Lang.String {
 | 
			
		||||
        return strAppName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getConfirm() as Lang.String {
 | 
			
		||||
        return strConfirm;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getExecuted() as Lang.String {
 | 
			
		||||
        return strExecuted;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getNoPhone() as Lang.String {
 | 
			
		||||
        return strNoPhone;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getNoInternet() as Lang.String {
 | 
			
		||||
        return strNoInternet;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getNoResponse() as Lang.String {
 | 
			
		||||
        return strNoResponse;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getNoApiKey() as Lang.String {
 | 
			
		||||
        return strNoApiKey;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getNoApiUrl() as Lang.String {
 | 
			
		||||
        return strNoApiUrl;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getNoConfigUrl() as Lang.String {
 | 
			
		||||
        return strNoConfigUrl;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getApiFlood() as Lang.String {
 | 
			
		||||
        return strApiFlood;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getApiUrlNotFound() as Lang.String {
 | 
			
		||||
        return strApiUrlNotFound;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getConfigUrlNotFound() as Lang.String {
 | 
			
		||||
        return strConfigUrlNotFound;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getNoJson() as Lang.String {
 | 
			
		||||
        return strNoJson;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getUnhandledHttpErr() as Lang.String {
 | 
			
		||||
        return strUnhandledHttpErr;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getTrailingSlashErr() as Lang.String {
 | 
			
		||||
        return strTrailingSlashErr;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getWebhookFailed() as Lang.String {
 | 
			
		||||
        return strWebhookFailed;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getTemplateError() as Lang.String {
 | 
			
		||||
        return strTemplateError;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    (:glance)
 | 
			
		||||
    static function getAvailable() as Lang.String {
 | 
			
		||||
        return strAvailable;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    (:glance)
 | 
			
		||||
    static function getChecking() as Lang.String {
 | 
			
		||||
        return strChecking;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    (:glance)
 | 
			
		||||
    static function getUnavailable() as Lang.String {
 | 
			
		||||
        return strUnavailable;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    (:glance)
 | 
			
		||||
    static function getUnconfigured() as Lang.String {
 | 
			
		||||
        return strUnconfigured;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    (:glance)
 | 
			
		||||
    static function getCached() as Lang.String {
 | 
			
		||||
        return strCached;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    (:glance)
 | 
			
		||||
    static function getGlanceMenu() as Lang.String {
 | 
			
		||||
        return strGlanceMenu;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function getMemory() as Lang.String {
 | 
			
		||||
        return strMemory;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -61,7 +61,7 @@ class RootView extends ScalableView {
 | 
			
		||||
        var w = dc.getWidth();
 | 
			
		||||
 | 
			
		||||
        mTitle = new WatchUi.Text({
 | 
			
		||||
            :text          => RezStrings.getAppName(),
 | 
			
		||||
            :text          => WatchUi.loadResource($.Rez.Strings.AppName),
 | 
			
		||||
            :color         => Graphics.COLOR_WHITE,
 | 
			
		||||
            :font          => Graphics.FONT_TINY,
 | 
			
		||||
            :justification => Graphics.TEXT_JUSTIFY_CENTER | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
			
		||||
@@ -78,7 +78,7 @@ class RootView extends ScalableView {
 | 
			
		||||
            :locY          => pixelsForScreen(50.0)
 | 
			
		||||
        });
 | 
			
		||||
        mApiStatus = new WatchUi.Text({
 | 
			
		||||
            :text          => RezStrings.getChecking(),
 | 
			
		||||
            :text          => WatchUi.loadResource($.Rez.Strings.Checking),
 | 
			
		||||
            :color         => Graphics.COLOR_WHITE,
 | 
			
		||||
            :font          => Graphics.FONT_XTINY,
 | 
			
		||||
            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
			
		||||
@@ -86,7 +86,7 @@ class RootView extends ScalableView {
 | 
			
		||||
            :locY          => pixelsForScreen(50.0)
 | 
			
		||||
        });
 | 
			
		||||
        mMenuText = new WatchUi.Text({
 | 
			
		||||
            :text          => RezStrings.getGlanceMenu() + ":",
 | 
			
		||||
            :text          => WatchUi.loadResource($.Rez.Strings.GlanceMenu) + ":",
 | 
			
		||||
            :color         => Graphics.COLOR_WHITE,
 | 
			
		||||
            :font          => Graphics.FONT_XTINY,
 | 
			
		||||
            :justification => Graphics.TEXT_JUSTIFY_RIGHT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
			
		||||
@@ -94,7 +94,7 @@ class RootView extends ScalableView {
 | 
			
		||||
            :locY          => pixelsForScreen(60.0)
 | 
			
		||||
        });
 | 
			
		||||
        mMenuStatus = new WatchUi.Text({
 | 
			
		||||
            :text          => RezStrings.getChecking(),
 | 
			
		||||
            :text          => WatchUi.loadResource($.Rez.Strings.Checking),
 | 
			
		||||
            :color         => Graphics.COLOR_WHITE,
 | 
			
		||||
            :font          => Graphics.FONT_XTINY,
 | 
			
		||||
            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
			
		||||
@@ -102,7 +102,7 @@ class RootView extends ScalableView {
 | 
			
		||||
            :locY          => pixelsForScreen(60.0)
 | 
			
		||||
        });
 | 
			
		||||
        mMemText = new WatchUi.Text({
 | 
			
		||||
            :text          => RezStrings.getMemory() + ":",
 | 
			
		||||
            :text          => WatchUi.loadResource($.Rez.Strings.Memory) + ":",
 | 
			
		||||
            :color         => Graphics.COLOR_WHITE,
 | 
			
		||||
            :font          => Graphics.FONT_XTINY,
 | 
			
		||||
            :justification => Graphics.TEXT_JUSTIFY_RIGHT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
			
		||||
@@ -110,7 +110,7 @@ class RootView extends ScalableView {
 | 
			
		||||
            :locY          => pixelsForScreen(70.0)
 | 
			
		||||
        });
 | 
			
		||||
        mMemStatus = new WatchUi.Text({
 | 
			
		||||
            :text          => RezStrings.getChecking(),
 | 
			
		||||
            :text          => WatchUi.loadResource($.Rez.Strings.Checking),
 | 
			
		||||
            :color         => Graphics.COLOR_WHITE,
 | 
			
		||||
            :font          => Graphics.FONT_XTINY,
 | 
			
		||||
            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
			
		||||
 
 | 
			
		||||
@@ -33,17 +33,17 @@ class WebhookManager {
 | 
			
		||||
            case Communications.BLE_HOST_TIMEOUT:
 | 
			
		||||
            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
			
		||||
                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
			
		||||
                ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoPhone() + ".");
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.BLE_QUEUE_FULL:
 | 
			
		||||
                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
			
		||||
                ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getApiFlood());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiFlood));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
			
		||||
                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
			
		||||
                ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoResponse());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoResponse));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY:
 | 
			
		||||
@@ -53,13 +53,13 @@ class WebhookManager {
 | 
			
		||||
            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
			
		||||
                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
			
		||||
                Settings.unsetIsBatteryLevelEnabled();
 | 
			
		||||
                ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoJson());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoJson));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 404:
 | 
			
		||||
                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: 404, page not found. Check API URL setting.");
 | 
			
		||||
                Settings.unsetIsBatteryLevelEnabled();
 | 
			
		||||
                ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getApiUrlNotFound());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 201:
 | 
			
		||||
@@ -89,14 +89,14 @@ class WebhookManager {
 | 
			
		||||
                } else {
 | 
			
		||||
                    // System.println("WebhookManager onReturnRequestWebhookId(): No webhook id in response data.");
 | 
			
		||||
                    Settings.unsetIsBatteryLevelEnabled();
 | 
			
		||||
                    ErrorView.show(RezStrings.getWebhookFailed());
 | 
			
		||||
                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed));
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                // System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode);
 | 
			
		||||
                Settings.unsetIsBatteryLevelEnabled();
 | 
			
		||||
                ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getUnhandledHttpErr() + responseCode);
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -107,7 +107,7 @@ class WebhookManager {
 | 
			
		||||
            {
 | 
			
		||||
                "device_id"           => System.getDeviceSettings().uniqueIdentifier,
 | 
			
		||||
                "app_id"              => "garmin_home_assistant",
 | 
			
		||||
                "app_name"            => RezStrings.getAppName(),
 | 
			
		||||
                "app_name"            => WatchUi.loadResource($.Rez.Strings.AppName),
 | 
			
		||||
                "app_version"         => "",
 | 
			
		||||
                "device_name"         => "Garmin Watch",
 | 
			
		||||
                "manufacturer"        => "Garmin",
 | 
			
		||||
@@ -135,19 +135,19 @@ class WebhookManager {
 | 
			
		||||
            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
			
		||||
                // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
			
		||||
                Settings.unsetWebhookId();
 | 
			
		||||
                ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoPhone() + ".");
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.BLE_QUEUE_FULL:
 | 
			
		||||
                // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
			
		||||
                Settings.unsetWebhookId();
 | 
			
		||||
                ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getApiFlood());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiFlood));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
			
		||||
                // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
			
		||||
                Settings.unsetWebhookId();
 | 
			
		||||
                ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoResponse());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoResponse));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY:
 | 
			
		||||
@@ -159,14 +159,14 @@ class WebhookManager {
 | 
			
		||||
                // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
			
		||||
                Settings.unsetWebhookId();
 | 
			
		||||
                Settings.unsetIsBatteryLevelEnabled();
 | 
			
		||||
                ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoJson());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoJson));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 404:
 | 
			
		||||
                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: 404, page not found. Check API URL setting.");
 | 
			
		||||
                Settings.unsetWebhookId();
 | 
			
		||||
                Settings.unsetIsBatteryLevelEnabled();
 | 
			
		||||
                ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getApiUrlNotFound());
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 201:
 | 
			
		||||
@@ -177,7 +177,7 @@ class WebhookManager {
 | 
			
		||||
                //     System.println("WebhookManager onReturnRegisterWebhookSensor(): Failure");
 | 
			
		||||
                    Settings.unsetWebhookId();
 | 
			
		||||
                    Settings.unsetIsBatteryLevelEnabled();
 | 
			
		||||
                    ErrorView.show(RezStrings.getWebhookFailed());
 | 
			
		||||
                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed));
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
@@ -185,7 +185,7 @@ class WebhookManager {
 | 
			
		||||
                // System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode);
 | 
			
		||||
                Settings.unsetWebhookId();
 | 
			
		||||
                Settings.unsetIsBatteryLevelEnabled();
 | 
			
		||||
                ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getUnhandledHttpErr() + responseCode);
 | 
			
		||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user