mirror of
				https://github.com/house-of-abbey/GarminHomeAssistant.git
				synced 2025-11-04 08:58:13 +00:00 
			
		
		
		
	Corrected a previous incomplete commit
All now "WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String"
This commit is contained in:
		@@ -89,30 +89,33 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
    function getInitialView() as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>? {
 | 
					    function getInitialView() as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>? {
 | 
				
			||||||
        mIsApp      = true;
 | 
					        mIsApp      = true;
 | 
				
			||||||
        mQuitTimer  = new QuitTimer();
 | 
					        mQuitTimer  = new QuitTimer();
 | 
				
			||||||
        RezStrings.update();
 | 
					        // RezStrings.update();
 | 
				
			||||||
        mApiStatus  = RezStrings.getChecking();
 | 
					        mApiStatus  = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String;
 | 
				
			||||||
        mMenuStatus = RezStrings.getChecking();
 | 
					        mMenuStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String;
 | 
				
			||||||
        Settings.update();
 | 
					        Settings.update();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (Settings.getApiKey().length() == 0) {
 | 
					        if (Settings.getApiKey().length() == 0) {
 | 
				
			||||||
            // System.println("HomeAssistantApp getInitialView(): No API key in the application Settings.");
 | 
					            // System.println("HomeAssistantApp getInitialView(): No API key in the application Settings.");
 | 
				
			||||||
            return ErrorView.create(RezStrings.getNoApiKey() + ".");
 | 
					            return ErrorView.create(WatchUi.loadResource($.Rez.Strings.NoAPIKey) as Lang.String + ".");
 | 
				
			||||||
        } else if (Settings.getApiUrl().length() == 0) {
 | 
					        } else if (Settings.getApiUrl().length() == 0) {
 | 
				
			||||||
            // System.println("HomeAssistantApp getInitialView(): No API URL in the application Settings.");
 | 
					            // System.println("HomeAssistantApp getInitialView(): No API URL in the application Settings.");
 | 
				
			||||||
            return ErrorView.create(RezStrings.getNoApiUrl() + ".");
 | 
					            return ErrorView.create(WatchUi.loadResource($.Rez.Strings.NoApiUrl) as Lang.String + ".");
 | 
				
			||||||
        } else if (Settings.getApiUrl().substring(-1, Settings.getApiUrl().length()).equals("/")) {
 | 
					        } else if (Settings.getApiUrl().substring(-1, Settings.getApiUrl().length()).equals("/")) {
 | 
				
			||||||
            // System.println("HomeAssistantApp getInitialView(): API URL must not have a trailing slash '/'.");
 | 
					            // System.println("HomeAssistantApp getInitialView(): API URL must not have a trailing slash '/'.");
 | 
				
			||||||
            return ErrorView.create(RezStrings.getTrailingSlashErr() + ".");
 | 
					            return ErrorView.create(WatchUi.loadResource($.Rez.Strings.TrailingSlashErr) as Lang.String + ".");
 | 
				
			||||||
        } else if (Settings.getConfigUrl().length() == 0) {
 | 
					        } else if (Settings.getConfigUrl().length() == 0) {
 | 
				
			||||||
            // System.println("HomeAssistantApp getInitialView(): No configuration URL in the application settings.");
 | 
					            // System.println("HomeAssistantApp getInitialView(): No configuration URL in the application settings.");
 | 
				
			||||||
            return ErrorView.create(RezStrings.getNoConfigUrl() + ".");
 | 
					            return ErrorView.create(WatchUi.loadResource($.Rez.Strings.NoConfigUrl) as Lang.String + ".");
 | 
				
			||||||
        } else if (! System.getDeviceSettings().phoneConnected) {
 | 
					        } else if (! System.getDeviceSettings().phoneConnected) {
 | 
				
			||||||
            // System.println("HomeAssistantApp fetchMenuConfig(): No Phone connection, skipping API call.");
 | 
					            // System.println("HomeAssistantApp fetchMenuConfig(): No Phone connection, skipping API call.");
 | 
				
			||||||
            return ErrorView.create(RezStrings.getNoPhone() + ".");
 | 
					            return ErrorView.create(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + ".");
 | 
				
			||||||
        } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
					        } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
				
			||||||
            // System.println("HomeAssistantApp fetchMenuConfig(): No Internet connection, skipping API call.");
 | 
					            // System.println("HomeAssistantApp fetchMenuConfig(): No Internet connection, skipping API call.");
 | 
				
			||||||
            return ErrorView.create(RezStrings.getNoInternet() + ".");
 | 
					            return ErrorView.create(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + ".");
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
 | 
					            var stats = System.getSystemStats();
 | 
				
			||||||
 | 
					            var memUsed = (100f * stats.usedMemory) / stats.totalMemory;
 | 
				
			||||||
 | 
					            System.println("Before menu fetch: used = " + stats.usedMemory + ", total = " + stats.totalMemory + ", " + memUsed + "%");
 | 
				
			||||||
            var isCached = fetchMenuConfig();
 | 
					            var isCached = fetchMenuConfig();
 | 
				
			||||||
            fetchApiStatus();
 | 
					            fetchApiStatus();
 | 
				
			||||||
            if (WidgetApp.isWidget) {
 | 
					            if (WidgetApp.isWidget) {
 | 
				
			||||||
@@ -134,50 +137,50 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
        // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: " + responseCode);
 | 
					        // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: " + responseCode);
 | 
				
			||||||
        // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Data: " + data);
 | 
					        // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Data: " + data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mMenuStatus = RezStrings.getUnavailable();
 | 
					        mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String;
 | 
				
			||||||
        switch (responseCode) {
 | 
					        switch (responseCode) {
 | 
				
			||||||
            case Communications.BLE_HOST_TIMEOUT:
 | 
					            case Communications.BLE_HOST_TIMEOUT:
 | 
				
			||||||
            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
					            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
				
			||||||
                // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
					                // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
				
			||||||
                if (!mIsGlance) {
 | 
					                if (!mIsGlance) {
 | 
				
			||||||
                    ErrorView.show(RezStrings.getNoPhone() + ".");
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + ".");
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.BLE_QUEUE_FULL:
 | 
					            case Communications.BLE_QUEUE_FULL:
 | 
				
			||||||
                // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
					                // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
				
			||||||
                if (!mIsGlance) {
 | 
					                if (!mIsGlance) {
 | 
				
			||||||
                    ErrorView.show(RezStrings.getApiFlood());
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
					            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
				
			||||||
                // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
					                // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
				
			||||||
                if (!mIsGlance) {
 | 
					                if (!mIsGlance) {
 | 
				
			||||||
                    ErrorView.show(RezStrings.getNoResponse());
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
					            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
				
			||||||
                // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
					                // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
				
			||||||
                if (!mIsGlance) {
 | 
					                if (!mIsGlance) {
 | 
				
			||||||
                    ErrorView.show(RezStrings.getNoJson());
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 404:
 | 
					            case 404:
 | 
				
			||||||
                // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: 404, page not found. Check Configuration URL setting.");
 | 
					                // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: 404, page not found. Check Configuration URL setting.");
 | 
				
			||||||
                if (!mIsGlance) {
 | 
					                if (!mIsGlance) {
 | 
				
			||||||
                    ErrorView.show(RezStrings.getConfigUrlNotFound());
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.ConfigUrlNotFound) as Lang.String);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 200:
 | 
					            case 200:
 | 
				
			||||||
                if (Settings.getCacheConfig()) {
 | 
					                if (Settings.getCacheConfig()) {
 | 
				
			||||||
                    Storage.setValue("menu", data as Lang.Dictionary);
 | 
					                    Storage.setValue("menu", data as Lang.Dictionary);
 | 
				
			||||||
                    mMenuStatus = RezStrings.getCached();
 | 
					                    mMenuStatus = WatchUi.loadResource($.Rez.Strings.Cached) as Lang.String;
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    mMenuStatus = RezStrings.getAvailable();
 | 
					                    mMenuStatus = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if (!mIsGlance) {
 | 
					                if (!mIsGlance) {
 | 
				
			||||||
                    buildMenu(data);
 | 
					                    buildMenu(data);
 | 
				
			||||||
@@ -190,7 +193,7 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
            default:
 | 
					            default:
 | 
				
			||||||
                // System.println("HomeAssistantApp onReturnFetchMenuConfig(): Unhandled HTTP response code = " + responseCode);
 | 
					                // System.println("HomeAssistantApp onReturnFetchMenuConfig(): Unhandled HTTP response code = " + responseCode);
 | 
				
			||||||
                if (!mIsGlance) {
 | 
					                if (!mIsGlance) {
 | 
				
			||||||
                    ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode);
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + responseCode);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -202,7 +205,7 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
    (:glance)
 | 
					    (:glance)
 | 
				
			||||||
    function fetchMenuConfig() as Lang.Boolean {
 | 
					    function fetchMenuConfig() as Lang.Boolean {
 | 
				
			||||||
        if (Settings.getConfigUrl().equals("")) {
 | 
					        if (Settings.getConfigUrl().equals("")) {
 | 
				
			||||||
            mMenuStatus = RezStrings.getUnconfigured();
 | 
					            mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unconfigured) as Lang.String;
 | 
				
			||||||
            WatchUi.requestUpdate();
 | 
					            WatchUi.requestUpdate();
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            var menu = Storage.getValue("menu") as Lang.Dictionary;
 | 
					            var menu = Storage.getValue("menu") as Lang.Dictionary;
 | 
				
			||||||
@@ -217,17 +220,17 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
                    if (mIsGlance) {
 | 
					                    if (mIsGlance) {
 | 
				
			||||||
                        WatchUi.requestUpdate();
 | 
					                        WatchUi.requestUpdate();
 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        ErrorView.show(RezStrings.getNoPhone() + ".");
 | 
					                        ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + ".");
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    mMenuStatus = RezStrings.getUnavailable();
 | 
					                    mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String;
 | 
				
			||||||
                } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
					                } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
				
			||||||
                    // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
 | 
					                    // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
 | 
				
			||||||
                    if (mIsGlance) {
 | 
					                    if (mIsGlance) {
 | 
				
			||||||
                        WatchUi.requestUpdate();
 | 
					                        WatchUi.requestUpdate();
 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        ErrorView.show(RezStrings.getNoInternet() + ".");
 | 
					                        ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + ".");
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    mMenuStatus = RezStrings.getUnavailable();
 | 
					                    mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String;
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    Communications.makeWebRequest(
 | 
					                    Communications.makeWebRequest(
 | 
				
			||||||
                        Settings.getConfigUrl(),
 | 
					                        Settings.getConfigUrl(),
 | 
				
			||||||
@@ -240,7 +243,7 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
                    );
 | 
					                    );
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                mMenuStatus = RezStrings.getCached();
 | 
					                mMenuStatus = WatchUi.loadResource($.Rez.Strings.Cached) as Lang.String;
 | 
				
			||||||
                WatchUi.requestUpdate();
 | 
					                WatchUi.requestUpdate();
 | 
				
			||||||
                if (!mIsGlance) {
 | 
					                if (!mIsGlance) {
 | 
				
			||||||
                    buildMenu(menu);
 | 
					                    buildMenu(menu);
 | 
				
			||||||
@@ -252,7 +255,16 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private function buildMenu(menu as Lang.Dictionary) {
 | 
					    private function buildMenu(menu as Lang.Dictionary) {
 | 
				
			||||||
 | 
					        var stats = System.getSystemStats();
 | 
				
			||||||
 | 
					        var memUsed = (100f * stats.usedMemory) / stats.totalMemory;
 | 
				
			||||||
 | 
					        System.println("Before menu construction: used = " + stats.usedMemory + ", total = " + stats.totalMemory + ", " + memUsed + "%");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mHaMenu = new HomeAssistantView(menu, null);
 | 
					        mHaMenu = new HomeAssistantView(menu, null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        stats = System.getSystemStats();
 | 
				
			||||||
 | 
					        memUsed = (100f * stats.usedMemory) / stats.totalMemory;
 | 
				
			||||||
 | 
					        System.println("After menu construction: used = " + stats.usedMemory + ", total = " + stats.totalMemory + ", " + memUsed + "%");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mQuitTimer.begin();
 | 
					        mQuitTimer.begin();
 | 
				
			||||||
        if (Settings.getIsWidgetStartNoTap()) {
 | 
					        if (Settings.getIsWidgetStartNoTap()) {
 | 
				
			||||||
            // As soon as the menu has been fetched start show the menu of items.
 | 
					            // As soon as the menu has been fetched start show the menu of items.
 | 
				
			||||||
@@ -275,41 +287,41 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
        // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: " + responseCode);
 | 
					        // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: " + responseCode);
 | 
				
			||||||
        // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Data: " + data);
 | 
					        // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Data: " + data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mApiStatus = RezStrings.getUnavailable();
 | 
					        mApiStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String;
 | 
				
			||||||
        switch (responseCode) {
 | 
					        switch (responseCode) {
 | 
				
			||||||
            case Communications.BLE_HOST_TIMEOUT:
 | 
					            case Communications.BLE_HOST_TIMEOUT:
 | 
				
			||||||
            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
					            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
				
			||||||
                // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
					                // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
				
			||||||
                if (!mIsGlance) {
 | 
					                if (!mIsGlance) {
 | 
				
			||||||
                    ErrorView.show(RezStrings.getNoPhone() + ".");
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + ".");
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.BLE_QUEUE_FULL:
 | 
					            case Communications.BLE_QUEUE_FULL:
 | 
				
			||||||
                // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
					                // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
				
			||||||
                if (!mIsGlance) {
 | 
					                if (!mIsGlance) {
 | 
				
			||||||
                    ErrorView.show(RezStrings.getApiFlood());
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
					            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
				
			||||||
                // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
					                // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
				
			||||||
                if (!mIsGlance) {
 | 
					                if (!mIsGlance) {
 | 
				
			||||||
                    ErrorView.show(RezStrings.getNoResponse());
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
					            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
				
			||||||
                // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
					                // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
				
			||||||
                if (!mIsGlance) {
 | 
					                if (!mIsGlance) {
 | 
				
			||||||
                    ErrorView.show(RezStrings.getNoJson());
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 404:
 | 
					            case 404:
 | 
				
			||||||
                // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: 404, page not found. Check Configuration URL setting.");
 | 
					                // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: 404, page not found. Check Configuration URL setting.");
 | 
				
			||||||
                if (!mIsGlance) {
 | 
					                if (!mIsGlance) {
 | 
				
			||||||
                    ErrorView.show(RezStrings.getConfigUrlNotFound());
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.ConfigUrlNotFound) as Lang.String);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -319,7 +331,7 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
                    msg = data.get("message");
 | 
					                    msg = data.get("message");
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if (msg.equals("API running.")) {
 | 
					                if (msg.equals("API running.")) {
 | 
				
			||||||
                    mApiStatus = RezStrings.getAvailable();
 | 
					                    mApiStatus = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String;
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    if (!mIsGlance) {
 | 
					                    if (!mIsGlance) {
 | 
				
			||||||
                        ErrorView.show("API " + mApiStatus + ".");
 | 
					                        ErrorView.show("API " + mApiStatus + ".");
 | 
				
			||||||
@@ -330,7 +342,7 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
            default:
 | 
					            default:
 | 
				
			||||||
                // System.println("HomeAssistantApp onReturnFetchApiStatus(): Unhandled HTTP response code = " + responseCode);
 | 
					                // System.println("HomeAssistantApp onReturnFetchApiStatus(): Unhandled HTTP response code = " + responseCode);
 | 
				
			||||||
                if (!mIsGlance) {
 | 
					                if (!mIsGlance) {
 | 
				
			||||||
                    ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode);
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + responseCode);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        WatchUi.requestUpdate();
 | 
					        WatchUi.requestUpdate();
 | 
				
			||||||
@@ -339,24 +351,24 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
    (:glance)
 | 
					    (:glance)
 | 
				
			||||||
    function fetchApiStatus() as Void {
 | 
					    function fetchApiStatus() as Void {
 | 
				
			||||||
        if (Settings.getApiUrl().equals("")) {
 | 
					        if (Settings.getApiUrl().equals("")) {
 | 
				
			||||||
            mApiStatus = RezStrings.getUnconfigured();
 | 
					            mApiStatus = WatchUi.loadResource($.Rez.Strings.Unconfigured) as Lang.String;
 | 
				
			||||||
            WatchUi.requestUpdate();
 | 
					            WatchUi.requestUpdate();
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            if (! System.getDeviceSettings().phoneConnected) {
 | 
					            if (! System.getDeviceSettings().phoneConnected) {
 | 
				
			||||||
                // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
 | 
					                // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
 | 
				
			||||||
                mApiStatus = RezStrings.getUnavailable();
 | 
					                mApiStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String;
 | 
				
			||||||
                if (mIsGlance) {
 | 
					                if (mIsGlance) {
 | 
				
			||||||
                    WatchUi.requestUpdate();
 | 
					                    WatchUi.requestUpdate();
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    ErrorView.show(RezStrings.getNoPhone() + ".");
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + ".");
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
					            } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
				
			||||||
                // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
 | 
					                // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
 | 
				
			||||||
                mApiStatus = RezStrings.getUnavailable();
 | 
					                mApiStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String;
 | 
				
			||||||
                if (mIsGlance) {
 | 
					                if (mIsGlance) {
 | 
				
			||||||
                    WatchUi.requestUpdate();
 | 
					                    WatchUi.requestUpdate();
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    ErrorView.show(RezStrings.getNoInternet() + ".");
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + ".");
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                Communications.makeWebRequest(
 | 
					                Communications.makeWebRequest(
 | 
				
			||||||
@@ -404,7 +416,7 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
        if (itu == null) {
 | 
					        if (itu == null) {
 | 
				
			||||||
            // System.println("HomeAssistantApp updateNextMenuItem(): No menu items to update");
 | 
					            // System.println("HomeAssistantApp updateNextMenuItem(): No menu items to update");
 | 
				
			||||||
            if (!mIsGlance) {
 | 
					            if (!mIsGlance) {
 | 
				
			||||||
                ErrorView.show(RezStrings.getConfigUrlNotFound());
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ConfigUrlNotFound) as Lang.String);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            itu[mNextItemToUpdate].getState();
 | 
					            itu[mNextItemToUpdate].getState();
 | 
				
			||||||
@@ -418,9 +430,9 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    function getGlanceView() as Lang.Array<WatchUi.GlanceView or WatchUi.GlanceViewDelegate> or Null {
 | 
					    function getGlanceView() as Lang.Array<WatchUi.GlanceView or WatchUi.GlanceViewDelegate> or Null {
 | 
				
			||||||
        mIsGlance = true;
 | 
					        mIsGlance = true;
 | 
				
			||||||
        RezStrings.update_glance();
 | 
					        // RezStrings.update_glance();
 | 
				
			||||||
        mApiStatus  = RezStrings.getChecking();
 | 
					        mApiStatus  = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String;
 | 
				
			||||||
        mMenuStatus = RezStrings.getChecking();
 | 
					        mMenuStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String;
 | 
				
			||||||
        updateStatus();
 | 
					        updateStatus();
 | 
				
			||||||
        Settings.update();
 | 
					        Settings.update();
 | 
				
			||||||
        mTimer = new Timer.Timer();
 | 
					        mTimer = new Timer.Timer();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@ using Toybox.Application.Properties;
 | 
				
			|||||||
class HomeAssistantConfirmation extends WatchUi.Confirmation {
 | 
					class HomeAssistantConfirmation extends WatchUi.Confirmation {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function initialize() {
 | 
					    function initialize() {
 | 
				
			||||||
        WatchUi.Confirmation.initialize(WatchUi.loadResource($.Rez.Strings.Confirm));
 | 
					        WatchUi.Confirmation.initialize(WatchUi.loadResource($.Rez.Strings.Confirm) as Lang.String);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,10 +44,10 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    function onLayout(dc as Graphics.Dc) as Void {
 | 
					    function onLayout(dc as Graphics.Dc) as Void {
 | 
				
			||||||
        var h  = dc.getHeight();
 | 
					        var h  = dc.getHeight();
 | 
				
			||||||
        var tw = dc.getTextWidthInPixels(WatchUi.loadResource($.Rez.Strings.GlanceMenu), Graphics.FONT_XTINY);
 | 
					        var tw = dc.getTextWidthInPixels(WatchUi.loadResource($.Rez.Strings.GlanceMenu) as Lang.String, Graphics.FONT_XTINY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mTitle = new WatchUi.Text({
 | 
					        mTitle = new WatchUi.Text({
 | 
				
			||||||
            :text          => WatchUi.loadResource($.Rez.Strings.AppName),
 | 
					            :text          => WatchUi.loadResource($.Rez.Strings.AppName) as Lang.String,
 | 
				
			||||||
            :color         => Graphics.COLOR_WHITE,
 | 
					            :color         => Graphics.COLOR_WHITE,
 | 
				
			||||||
            :font          => Graphics.FONT_TINY,
 | 
					            :font          => Graphics.FONT_TINY,
 | 
				
			||||||
            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
					            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
				
			||||||
@@ -64,7 +64,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
 | 
				
			|||||||
            :locY          => 3 * h / 6
 | 
					            :locY          => 3 * h / 6
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        mApiStatus = new WatchUi.Text({
 | 
					        mApiStatus = new WatchUi.Text({
 | 
				
			||||||
            :text          => WatchUi.loadResource($.Rez.Strings.Checking),
 | 
					            :text          => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String,
 | 
				
			||||||
            :color         => Graphics.COLOR_WHITE,
 | 
					            :color         => Graphics.COLOR_WHITE,
 | 
				
			||||||
            :font          => Graphics.FONT_XTINY,
 | 
					            :font          => Graphics.FONT_XTINY,
 | 
				
			||||||
            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
					            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
				
			||||||
@@ -72,7 +72,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
 | 
				
			|||||||
            :locY          => 3 * h / 6
 | 
					            :locY          => 3 * h / 6
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        mMenuText = new WatchUi.Text({
 | 
					        mMenuText = new WatchUi.Text({
 | 
				
			||||||
            :text          => WatchUi.loadResource($.Rez.Strings.GlanceMenu) + ":",
 | 
					            :text          => WatchUi.loadResource($.Rez.Strings.GlanceMenu) as Lang.String + ":",
 | 
				
			||||||
            :color         => Graphics.COLOR_WHITE,
 | 
					            :color         => Graphics.COLOR_WHITE,
 | 
				
			||||||
            :font          => Graphics.FONT_XTINY,
 | 
					            :font          => Graphics.FONT_XTINY,
 | 
				
			||||||
            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
					            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
				
			||||||
@@ -80,7 +80,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
 | 
				
			|||||||
            :locY          => 5 * h / 6
 | 
					            :locY          => 5 * h / 6
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        mMenuStatus = new WatchUi.Text({
 | 
					        mMenuStatus = new WatchUi.Text({
 | 
				
			||||||
            :text          => WatchUi.loadResource($.Rez.Strings.Checking),
 | 
					            :text          => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String,
 | 
				
			||||||
            :color         => Graphics.COLOR_WHITE,
 | 
					            :color         => Graphics.COLOR_WHITE,
 | 
				
			||||||
            :font          => Graphics.FONT_XTINY,
 | 
					            :font          => Graphics.FONT_XTINY,
 | 
				
			||||||
            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
					            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,17 +51,17 @@ class HomeAssistantService {
 | 
				
			|||||||
            case Communications.BLE_HOST_TIMEOUT:
 | 
					            case Communications.BLE_HOST_TIMEOUT:
 | 
				
			||||||
            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
					            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
				
			||||||
                // System.println("HomeAssistantService onReturnCall() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
					                // System.println("HomeAssistantService onReturnCall() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + ".");
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.BLE_QUEUE_FULL:
 | 
					            case Communications.BLE_QUEUE_FULL:
 | 
				
			||||||
                // System.println("HomeAssistantService onReturnCall() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
					                // System.println("HomeAssistantService onReturnCall() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
					            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
				
			||||||
                // System.println("HomeAssistantService onReturnCall() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
					                // System.println("HomeAssistantService onReturnCall() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY:
 | 
					            case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY:
 | 
				
			||||||
@@ -70,12 +70,12 @@ class HomeAssistantService {
 | 
				
			|||||||
                break;
 | 
					                break;
 | 
				
			||||||
            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
					            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
				
			||||||
                // System.println("HomeAssistantService onReturnCall() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
					                // System.println("HomeAssistantService onReturnCall() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 404:
 | 
					            case 404:
 | 
				
			||||||
                // System.println("HomeAssistantService onReturnCall() Response Code: 404, page not found. Check API URL setting.");
 | 
					                // System.println("HomeAssistantService onReturnCall() Response Code: 404, page not found. Check API URL setting.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 200:
 | 
					            case 200:
 | 
				
			||||||
@@ -102,7 +102,7 @@ class HomeAssistantService {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            default:
 | 
					            default:
 | 
				
			||||||
                // System.println("HomeAssistantService onReturnCall(): Unhandled HTTP response code = " + responseCode);
 | 
					                // System.println("HomeAssistantService onReturnCall(): Unhandled HTTP response code = " + responseCode);
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode);
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + responseCode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -112,10 +112,10 @@ class HomeAssistantService {
 | 
				
			|||||||
    ) as Void {
 | 
					    ) as Void {
 | 
				
			||||||
        if (! System.getDeviceSettings().phoneConnected) {
 | 
					        if (! System.getDeviceSettings().phoneConnected) {
 | 
				
			||||||
            // System.println("HomeAssistantService call(): No Phone connection, skipping API call.");
 | 
					            // System.println("HomeAssistantService call(): No Phone connection, skipping API call.");
 | 
				
			||||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
					            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + ".");
 | 
				
			||||||
        } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
					        } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
				
			||||||
            // System.println("HomeAssistantService call(): No Internet connection, skipping API call.");
 | 
					            // System.println("HomeAssistantService call(): No Internet connection, skipping API call.");
 | 
				
			||||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + ".");
 | 
					            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + ".");
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            // Can't use null for substring() parameters due to API version level.
 | 
					            // 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());
 | 
					            var url = Settings.getApiUrl() + "/services/" + service.substring(0, service.find(".")) + "/" + service.substring(service.find(".")+1, service.length());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -92,22 +92,22 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem {
 | 
				
			|||||||
            case Communications.BLE_HOST_TIMEOUT:
 | 
					            case Communications.BLE_HOST_TIMEOUT:
 | 
				
			||||||
            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
					            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
				
			||||||
                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
					                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + ".");
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.BLE_QUEUE_FULL:
 | 
					            case Communications.BLE_QUEUE_FULL:
 | 
				
			||||||
                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
					                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
					            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
				
			||||||
                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
					                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
					            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
				
			||||||
                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
					                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY:
 | 
					            case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY:
 | 
				
			||||||
@@ -121,12 +121,12 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            case 404:
 | 
					            case 404:
 | 
				
			||||||
                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: 404, page not found. Check API URL setting.");
 | 
					                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: 404, page not found. Check API URL setting.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 400:
 | 
					            case 400:
 | 
				
			||||||
                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: 400, bad request. Template error.");
 | 
					                // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: 400, bad request. Template error.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.TemplateError));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.TemplateError) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 200:
 | 
					            case 200:
 | 
				
			||||||
@@ -139,7 +139,7 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            default:
 | 
					            default:
 | 
				
			||||||
                // System.println("HomeAssistantTemplateMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode);
 | 
					                // System.println("HomeAssistantTemplateMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode);
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode);
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + responseCode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        getApp().setApiStatus(status);
 | 
					        getApp().setApiStatus(status);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -147,12 +147,12 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem {
 | 
				
			|||||||
    function getState() as Void {
 | 
					    function getState() as Void {
 | 
				
			||||||
        if (! System.getDeviceSettings().phoneConnected) {
 | 
					        if (! System.getDeviceSettings().phoneConnected) {
 | 
				
			||||||
            // System.println("HomeAssistantTemplateMenuItem getState(): No Phone connection, skipping API call.");
 | 
					            // System.println("HomeAssistantTemplateMenuItem getState(): No Phone connection, skipping API call.");
 | 
				
			||||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
					            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + ".");
 | 
				
			||||||
            getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable));
 | 
					            getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String);
 | 
				
			||||||
        } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
					        } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
				
			||||||
            // System.println("HomeAssistantTemplateMenuItem getState(): No Internet connection, skipping API call.");
 | 
					            // System.println("HomeAssistantTemplateMenuItem getState(): No Internet connection, skipping API call.");
 | 
				
			||||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + ".");
 | 
					            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + ".");
 | 
				
			||||||
            getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable));
 | 
					            getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            var url = Settings.getApiUrl() + "/template";
 | 
					            var url = Settings.getApiUrl() + "/template";
 | 
				
			||||||
            // System.println("HomeAssistantTemplateMenuItem getState() URL=" + url + ", Template='" + mTemplate + "'");
 | 
					            // System.println("HomeAssistantTemplateMenuItem getState() URL=" + url + ", Template='" + mTemplate + "'");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,22 +67,22 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
				
			|||||||
            case Communications.BLE_HOST_TIMEOUT:
 | 
					            case Communications.BLE_HOST_TIMEOUT:
 | 
				
			||||||
            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
					            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
				
			||||||
                // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
					                // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + ".");
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.BLE_QUEUE_FULL:
 | 
					            case Communications.BLE_QUEUE_FULL:
 | 
				
			||||||
                // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
					                // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
					            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
				
			||||||
                // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
					                // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
					            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
				
			||||||
                // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
					                // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY:
 | 
					            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"));
 | 
					                    ErrorView.show("HTTP 404, " + mData.get("entity_id") + ". " + data.get("message"));
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: 404, page not found. Check API URL setting.");
 | 
					                    // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: 404, page not found. Check API URL setting.");
 | 
				
			||||||
                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound));
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -129,7 +129,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            default:
 | 
					            default:
 | 
				
			||||||
                // System.println("HomeAssistantToggleMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode);
 | 
					                // System.println("HomeAssistantToggleMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode);
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode);
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + responseCode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        getApp().setApiStatus(status);
 | 
					        getApp().setApiStatus(status);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -137,12 +137,12 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
				
			|||||||
    function getState() as Void {
 | 
					    function getState() as Void {
 | 
				
			||||||
        if (! System.getDeviceSettings().phoneConnected) {
 | 
					        if (! System.getDeviceSettings().phoneConnected) {
 | 
				
			||||||
            // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
 | 
					            // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
 | 
				
			||||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
					            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + ".");
 | 
				
			||||||
            getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable));
 | 
					            getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String);
 | 
				
			||||||
        } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
					        } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
				
			||||||
            // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
 | 
					            // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
 | 
				
			||||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + ".");
 | 
					            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + ".");
 | 
				
			||||||
            getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable));
 | 
					            getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            var url = Settings.getApiUrl() + "/states/" + mData.get("entity_id");
 | 
					            var url = Settings.getApiUrl() + "/states/" + mData.get("entity_id");
 | 
				
			||||||
            // System.println("HomeAssistantToggleMenuItem getState() URL=" + url);
 | 
					            // System.println("HomeAssistantToggleMenuItem getState() URL=" + url);
 | 
				
			||||||
@@ -172,27 +172,27 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
				
			|||||||
            case Communications.BLE_HOST_TIMEOUT:
 | 
					            case Communications.BLE_HOST_TIMEOUT:
 | 
				
			||||||
            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
					            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
				
			||||||
                // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
					                // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + ".");
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.BLE_QUEUE_FULL:
 | 
					            case Communications.BLE_QUEUE_FULL:
 | 
				
			||||||
                // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
					                // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
					            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
				
			||||||
                // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
					                // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
					            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
				
			||||||
                // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
					                // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 404:
 | 
					            case 404:
 | 
				
			||||||
                // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: 404, page not found. Check API URL setting.");
 | 
					                // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: 404, page not found. Check API URL setting.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 200:
 | 
					            case 200:
 | 
				
			||||||
@@ -210,7 +210,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            default:
 | 
					            default:
 | 
				
			||||||
                // System.println("HomeAssistantToggleMenuItem onReturnSetState(): Unhandled HTTP response code = " + responseCode);
 | 
					                // System.println("HomeAssistantToggleMenuItem onReturnSetState(): Unhandled HTTP response code = " + responseCode);
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode);
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + responseCode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        getApp().setApiStatus(status);
 | 
					        getApp().setApiStatus(status);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -220,12 +220,12 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
				
			|||||||
            // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
 | 
					            // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
 | 
				
			||||||
            // Toggle the UI back
 | 
					            // Toggle the UI back
 | 
				
			||||||
            setEnabled(!isEnabled());
 | 
					            setEnabled(!isEnabled());
 | 
				
			||||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
					            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + ".");
 | 
				
			||||||
        } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
					        } else if (! System.getDeviceSettings().connectionAvailable) {
 | 
				
			||||||
            // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
 | 
					            // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
 | 
				
			||||||
            // Toggle the UI back
 | 
					            // Toggle the UI back
 | 
				
			||||||
            setEnabled(!isEnabled());
 | 
					            setEnabled(!isEnabled());
 | 
				
			||||||
            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + ".");
 | 
					            ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + ".");
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            // Updated SDK and got a new error
 | 
					            // Updated SDK and got a new error
 | 
				
			||||||
            // ERROR: venu: Cannot find symbol ':substring' on type 'PolyType<Null or $.Toybox.Lang.Object>'.
 | 
					            // ERROR: venu: Cannot find symbol ':substring' on type 'PolyType<Null or $.Toybox.Lang.Object>'.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,7 +61,7 @@ class RootView extends ScalableView {
 | 
				
			|||||||
        var w = dc.getWidth();
 | 
					        var w = dc.getWidth();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mTitle = new WatchUi.Text({
 | 
					        mTitle = new WatchUi.Text({
 | 
				
			||||||
            :text          => WatchUi.loadResource($.Rez.Strings.AppName),
 | 
					            :text          => WatchUi.loadResource($.Rez.Strings.AppName) as Lang.String,
 | 
				
			||||||
            :color         => Graphics.COLOR_WHITE,
 | 
					            :color         => Graphics.COLOR_WHITE,
 | 
				
			||||||
            :font          => Graphics.FONT_TINY,
 | 
					            :font          => Graphics.FONT_TINY,
 | 
				
			||||||
            :justification => Graphics.TEXT_JUSTIFY_CENTER | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
					            :justification => Graphics.TEXT_JUSTIFY_CENTER | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
				
			||||||
@@ -78,7 +78,7 @@ class RootView extends ScalableView {
 | 
				
			|||||||
            :locY          => pixelsForScreen(50.0)
 | 
					            :locY          => pixelsForScreen(50.0)
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        mApiStatus = new WatchUi.Text({
 | 
					        mApiStatus = new WatchUi.Text({
 | 
				
			||||||
            :text          => WatchUi.loadResource($.Rez.Strings.Checking),
 | 
					            :text          => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String,
 | 
				
			||||||
            :color         => Graphics.COLOR_WHITE,
 | 
					            :color         => Graphics.COLOR_WHITE,
 | 
				
			||||||
            :font          => Graphics.FONT_XTINY,
 | 
					            :font          => Graphics.FONT_XTINY,
 | 
				
			||||||
            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
					            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
				
			||||||
@@ -86,7 +86,7 @@ class RootView extends ScalableView {
 | 
				
			|||||||
            :locY          => pixelsForScreen(50.0)
 | 
					            :locY          => pixelsForScreen(50.0)
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        mMenuText = new WatchUi.Text({
 | 
					        mMenuText = new WatchUi.Text({
 | 
				
			||||||
            :text          => WatchUi.loadResource($.Rez.Strings.GlanceMenu) + ":",
 | 
					            :text          => WatchUi.loadResource($.Rez.Strings.GlanceMenu) as Lang.String + ":",
 | 
				
			||||||
            :color         => Graphics.COLOR_WHITE,
 | 
					            :color         => Graphics.COLOR_WHITE,
 | 
				
			||||||
            :font          => Graphics.FONT_XTINY,
 | 
					            :font          => Graphics.FONT_XTINY,
 | 
				
			||||||
            :justification => Graphics.TEXT_JUSTIFY_RIGHT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
					            :justification => Graphics.TEXT_JUSTIFY_RIGHT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
				
			||||||
@@ -94,7 +94,7 @@ class RootView extends ScalableView {
 | 
				
			|||||||
            :locY          => pixelsForScreen(60.0)
 | 
					            :locY          => pixelsForScreen(60.0)
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        mMenuStatus = new WatchUi.Text({
 | 
					        mMenuStatus = new WatchUi.Text({
 | 
				
			||||||
            :text          => WatchUi.loadResource($.Rez.Strings.Checking),
 | 
					            :text          => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String,
 | 
				
			||||||
            :color         => Graphics.COLOR_WHITE,
 | 
					            :color         => Graphics.COLOR_WHITE,
 | 
				
			||||||
            :font          => Graphics.FONT_XTINY,
 | 
					            :font          => Graphics.FONT_XTINY,
 | 
				
			||||||
            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
					            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
				
			||||||
@@ -102,7 +102,7 @@ class RootView extends ScalableView {
 | 
				
			|||||||
            :locY          => pixelsForScreen(60.0)
 | 
					            :locY          => pixelsForScreen(60.0)
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        mMemText = new WatchUi.Text({
 | 
					        mMemText = new WatchUi.Text({
 | 
				
			||||||
            :text          => WatchUi.loadResource($.Rez.Strings.Memory) + ":",
 | 
					            :text          => WatchUi.loadResource($.Rez.Strings.Memory) as Lang.String + ":",
 | 
				
			||||||
            :color         => Graphics.COLOR_WHITE,
 | 
					            :color         => Graphics.COLOR_WHITE,
 | 
				
			||||||
            :font          => Graphics.FONT_XTINY,
 | 
					            :font          => Graphics.FONT_XTINY,
 | 
				
			||||||
            :justification => Graphics.TEXT_JUSTIFY_RIGHT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
					            :justification => Graphics.TEXT_JUSTIFY_RIGHT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
				
			||||||
@@ -110,7 +110,7 @@ class RootView extends ScalableView {
 | 
				
			|||||||
            :locY          => pixelsForScreen(70.0)
 | 
					            :locY          => pixelsForScreen(70.0)
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        mMemStatus = new WatchUi.Text({
 | 
					        mMemStatus = new WatchUi.Text({
 | 
				
			||||||
            :text          => WatchUi.loadResource($.Rez.Strings.Checking),
 | 
					            :text          => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String,
 | 
				
			||||||
            :color         => Graphics.COLOR_WHITE,
 | 
					            :color         => Graphics.COLOR_WHITE,
 | 
				
			||||||
            :font          => Graphics.FONT_XTINY,
 | 
					            :font          => Graphics.FONT_XTINY,
 | 
				
			||||||
            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
					            :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,17 +33,17 @@ class WebhookManager {
 | 
				
			|||||||
            case Communications.BLE_HOST_TIMEOUT:
 | 
					            case Communications.BLE_HOST_TIMEOUT:
 | 
				
			||||||
            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
					            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
				
			||||||
                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
					                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + ".");
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.BLE_QUEUE_FULL:
 | 
					            case Communications.BLE_QUEUE_FULL:
 | 
				
			||||||
                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
					                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiFlood));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
					            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
				
			||||||
                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
					                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoResponse));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY:
 | 
					            case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY:
 | 
				
			||||||
@@ -53,13 +53,13 @@ class WebhookManager {
 | 
				
			|||||||
            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
					            case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
 | 
				
			||||||
                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
					                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
				
			||||||
                Settings.unsetIsBatteryLevelEnabled();
 | 
					                Settings.unsetIsBatteryLevelEnabled();
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoJson));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 404:
 | 
					            case 404:
 | 
				
			||||||
                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: 404, page not found. Check API URL setting.");
 | 
					                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: 404, page not found. Check API URL setting.");
 | 
				
			||||||
                Settings.unsetIsBatteryLevelEnabled();
 | 
					                Settings.unsetIsBatteryLevelEnabled();
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 201:
 | 
					            case 201:
 | 
				
			||||||
@@ -89,14 +89,14 @@ class WebhookManager {
 | 
				
			|||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    // System.println("WebhookManager onReturnRequestWebhookId(): No webhook id in response data.");
 | 
					                    // System.println("WebhookManager onReturnRequestWebhookId(): No webhook id in response data.");
 | 
				
			||||||
                    Settings.unsetIsBatteryLevelEnabled();
 | 
					                    Settings.unsetIsBatteryLevelEnabled();
 | 
				
			||||||
                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed));
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            default:
 | 
					            default:
 | 
				
			||||||
                // System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode);
 | 
					                // System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode);
 | 
				
			||||||
                Settings.unsetIsBatteryLevelEnabled();
 | 
					                Settings.unsetIsBatteryLevelEnabled();
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode);
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + responseCode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -107,7 +107,7 @@ class WebhookManager {
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                "device_id"           => System.getDeviceSettings().uniqueIdentifier,
 | 
					                "device_id"           => System.getDeviceSettings().uniqueIdentifier,
 | 
				
			||||||
                "app_id"              => "garmin_home_assistant",
 | 
					                "app_id"              => "garmin_home_assistant",
 | 
				
			||||||
                "app_name"            => WatchUi.loadResource($.Rez.Strings.AppName),
 | 
					                "app_name"            => WatchUi.loadResource($.Rez.Strings.AppName) as Lang.String,
 | 
				
			||||||
                "app_version"         => "",
 | 
					                "app_version"         => "",
 | 
				
			||||||
                "device_name"         => "Garmin Watch",
 | 
					                "device_name"         => "Garmin Watch",
 | 
				
			||||||
                "manufacturer"        => "Garmin",
 | 
					                "manufacturer"        => "Garmin",
 | 
				
			||||||
@@ -135,19 +135,19 @@ class WebhookManager {
 | 
				
			|||||||
            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
					            case Communications.BLE_CONNECTION_UNAVAILABLE:
 | 
				
			||||||
                // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
					                // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
 | 
				
			||||||
                Settings.unsetWebhookId();
 | 
					                Settings.unsetWebhookId();
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoPhone) + ".");
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + ".");
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.BLE_QUEUE_FULL:
 | 
					            case Communications.BLE_QUEUE_FULL:
 | 
				
			||||||
                // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
					                // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
				
			||||||
                Settings.unsetWebhookId();
 | 
					                Settings.unsetWebhookId();
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiFlood));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
					            case Communications.NETWORK_REQUEST_TIMED_OUT:
 | 
				
			||||||
                // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
					                // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
 | 
				
			||||||
                Settings.unsetWebhookId();
 | 
					                Settings.unsetWebhookId();
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoResponse));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY:
 | 
					            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.");
 | 
					                // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
 | 
				
			||||||
                Settings.unsetWebhookId();
 | 
					                Settings.unsetWebhookId();
 | 
				
			||||||
                Settings.unsetIsBatteryLevelEnabled();
 | 
					                Settings.unsetIsBatteryLevelEnabled();
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoJson));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 404:
 | 
					            case 404:
 | 
				
			||||||
                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: 404, page not found. Check API URL setting.");
 | 
					                // System.println("WebhookManager onReturnRequestWebhookId() Response Code: 404, page not found. Check API URL setting.");
 | 
				
			||||||
                Settings.unsetWebhookId();
 | 
					                Settings.unsetWebhookId();
 | 
				
			||||||
                Settings.unsetIsBatteryLevelEnabled();
 | 
					                Settings.unsetIsBatteryLevelEnabled();
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound));
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 201:
 | 
					            case 201:
 | 
				
			||||||
@@ -177,7 +177,7 @@ class WebhookManager {
 | 
				
			|||||||
                //     System.println("WebhookManager onReturnRegisterWebhookSensor(): Failure");
 | 
					                //     System.println("WebhookManager onReturnRegisterWebhookSensor(): Failure");
 | 
				
			||||||
                    Settings.unsetWebhookId();
 | 
					                    Settings.unsetWebhookId();
 | 
				
			||||||
                    Settings.unsetIsBatteryLevelEnabled();
 | 
					                    Settings.unsetIsBatteryLevelEnabled();
 | 
				
			||||||
                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed));
 | 
					                    ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -185,7 +185,7 @@ class WebhookManager {
 | 
				
			|||||||
                // System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode);
 | 
					                // System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode);
 | 
				
			||||||
                Settings.unsetWebhookId();
 | 
					                Settings.unsetWebhookId();
 | 
				
			||||||
                Settings.unsetIsBatteryLevelEnabled();
 | 
					                Settings.unsetIsBatteryLevelEnabled();
 | 
				
			||||||
                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode);
 | 
					                ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + responseCode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user