From d9ecaf34ee28198d77aa496e2bb30af4576cc0ed Mon Sep 17 00:00:00 2001 From: Philip Abbey Date: Sun, 21 Jan 2024 17:53:37 +0000 Subject: [PATCH 1/9] Removed Debug On some devices it looks like removing the System.println() statements from inside an 'if' clause whose condition is a constant (static constant Globals.scDebug) makes a memory saving. This would suggest the compiler does not propagate constants and prune unreachable code. However in the device of greatest interest debug removal has made no difference to the memory usage. Here the conditional clauses have been turned into comments that can be removed on a case-by-case basis otherwise the debug printing is too voluminous anyway. --- source/BackgroundServiceDelegate.mc | 14 +-- source/Globals.mc | 5 +- source/HomeAssistantApp.mc | 113 +++++++----------------- source/HomeAssistantService.mc | 52 +++-------- source/HomeAssistantTemplateMenuItem.mc | 50 +++-------- source/HomeAssistantToggleMenuItem.mc | 106 ++++++---------------- source/HomeAssistantView.mc | 20 ++--- source/QuitTimer.mc | 8 +- source/RezStrings.mc | 71 +++++++-------- source/Settings.mc | 14 ++- source/WebLog.mc | 42 ++++----- source/WebhookManager.mc | 81 +++++------------ 12 files changed, 173 insertions(+), 403 deletions(-) diff --git a/source/BackgroundServiceDelegate.mc b/source/BackgroundServiceDelegate.mc index d40bb42..4c367db 100644 --- a/source/BackgroundServiceDelegate.mc +++ b/source/BackgroundServiceDelegate.mc @@ -32,22 +32,16 @@ class BackgroundServiceDelegate extends System.ServiceDelegate { } function onReturnBatteryUpdate(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void { - if (Globals.scDebug) { - System.println("BackgroundServiceDelegate onReturnBatteryUpdate() Response Code: " + responseCode); - System.println("BackgroundServiceDelegate onReturnBatteryUpdate() Response Data: " + data); - } + // System.println("BackgroundServiceDelegate onReturnBatteryUpdate() Response Code: " + responseCode); + // System.println("BackgroundServiceDelegate onReturnBatteryUpdate() Response Data: " + data); Background.exit(null); } function onTemporalEvent() as Void { if (! System.getDeviceSettings().phoneConnected) { - if (Globals.scDebug) { - System.println("BackgroundServiceDelegate onTemporalEvent(): No Phone connection, skipping API call."); - } + // System.println("BackgroundServiceDelegate onTemporalEvent(): No Phone connection, skipping API call."); } else if (! System.getDeviceSettings().connectionAvailable) { - if (Globals.scDebug) { - System.println("BackgroundServiceDelegate onTemporalEvent(): No Internet connection, skipping API call."); - } + // System.println("BackgroundServiceDelegate onTemporalEvent(): No Internet connection, skipping API call."); } else { // Don't use Settings.* here as the object lasts < 30 secs and is recreated each time the background service is run Communications.makeWebRequest( diff --git a/source/Globals.mc b/source/Globals.mc index a464a12..ebd7e35 100644 --- a/source/Globals.mc +++ b/source/Globals.mc @@ -22,9 +22,6 @@ using Toybox.Lang; (:glance) class Globals { - // Enable printing of messages to the debug console (don't make this a Property - // as the messages can't be read from a watch!) - static const scDebug = false; static const scAlertTimeout = 2000; // ms static const scTapTimeout = 1000; // ms // Time to let the existing HTTP responses get serviced after a @@ -34,5 +31,5 @@ class Globals { // an ErrorView. static const scApiResume = 200; // ms // Warn the user after fetching the menu if their watch is low on memory before the device crashes. - static const scLowMem = 0.95; // percent as a fraction. + static const scLowMem = 0.90; // percent as a fraction. } diff --git a/source/HomeAssistantApp.mc b/source/HomeAssistantApp.mc index 460e7f4..3044179 100644 --- a/source/HomeAssistantApp.mc +++ b/source/HomeAssistantApp.mc @@ -32,8 +32,9 @@ class HomeAssistantApp extends Application.AppBase { private var mHaMenu as HomeAssistantView or Null; private var mQuitTimer as QuitTimer or Null; private var mTimer as Timer.Timer or Null; - private var mItemsToUpdate as Lang.Array or Null; // Array initialised by onReturnFetchMenuConfig() - private var mNextItemToUpdate as Lang.Number = 0; // Index into the above array + // Array initialised by onReturnFetchMenuConfig() + private var mItemsToUpdate as Lang.Array or Null; + private var mNextItemToUpdate as Lang.Number = 0; // Index into the above array private var mIsGlance as Lang.Boolean = false; private var mIsApp as Lang.Boolean = false; // Or Widget @@ -94,34 +95,22 @@ class HomeAssistantApp extends Application.AppBase { Settings.update(); if (Settings.getApiKey().length() == 0) { - if (Globals.scDebug) { - 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() + "."); } else if (Settings.getApiUrl().length() == 0) { - if (Globals.scDebug) { - 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() + "."); } else if (Settings.getApiUrl().substring(-1, Settings.getApiUrl().length()).equals("/")) { - if (Globals.scDebug) { - 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() + "."); } else if (Settings.getConfigUrl().length() == 0) { - if (Globals.scDebug) { - 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() + "."); } else if (! System.getDeviceSettings().phoneConnected) { - if (Globals.scDebug) { - 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() + "."); } else if (! System.getDeviceSettings().connectionAvailable) { - if (Globals.scDebug) { - 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() + "."); } else { var isCached = fetchMenuConfig(); @@ -142,54 +131,42 @@ class HomeAssistantApp extends Application.AppBase { // (:glance) function onReturnFetchMenuConfig(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void { - if (Globals.scDebug) { - System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: " + responseCode); - System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Data: " + data); - } + // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: " + responseCode); + // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Data: " + data); mMenuStatus = RezStrings.getUnavailable(); switch (responseCode) { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: - if (Globals.scDebug) { - 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) { ErrorView.show(RezStrings.getNoPhone() + "."); } break; case Communications.BLE_QUEUE_FULL: - if (Globals.scDebug) { - 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) { ErrorView.show(RezStrings.getApiFlood()); } break; case Communications.NETWORK_REQUEST_TIMED_OUT: - if (Globals.scDebug) { - 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) { ErrorView.show(RezStrings.getNoResponse()); } break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: - if (Globals.scDebug) { - 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) { ErrorView.show(RezStrings.getNoJson()); } break; case 404: - if (Globals.scDebug) { - 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) { ErrorView.show(RezStrings.getConfigUrlNotFound()); } @@ -211,9 +188,7 @@ class HomeAssistantApp extends Application.AppBase { break; default: - if (Globals.scDebug) { - System.println("HomeAssistantApp onReturnFetchMenuConfig(): Unhandled HTTP response code = " + responseCode); - } + // System.println("HomeAssistantApp onReturnFetchMenuConfig(): Unhandled HTTP response code = " + responseCode); if (!mIsGlance) { ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode); } @@ -238,9 +213,7 @@ class HomeAssistantApp extends Application.AppBase { } if (menu == null) { if (! System.getDeviceSettings().phoneConnected) { - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call."); - } + // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call."); if (mIsGlance) { WatchUi.requestUpdate(); } else { @@ -248,9 +221,7 @@ class HomeAssistantApp extends Application.AppBase { } mMenuStatus = RezStrings.getUnavailable(); } else if (! System.getDeviceSettings().connectionAvailable) { - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); - } + // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); if (mIsGlance) { WatchUi.requestUpdate(); } else { @@ -301,54 +272,42 @@ class HomeAssistantApp extends Application.AppBase { // (:glance) function onReturnFetchApiStatus(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void { - if (Globals.scDebug) { - System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: " + responseCode); - System.println("HomeAssistantApp onReturnFetchApiStatus() Response Data: " + data); - } + // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: " + responseCode); + // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Data: " + data); mApiStatus = RezStrings.getUnavailable(); switch (responseCode) { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: - if (Globals.scDebug) { - 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) { ErrorView.show(RezStrings.getNoPhone() + "."); } break; case Communications.BLE_QUEUE_FULL: - if (Globals.scDebug) { - 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) { ErrorView.show(RezStrings.getApiFlood()); } break; case Communications.NETWORK_REQUEST_TIMED_OUT: - if (Globals.scDebug) { - 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) { ErrorView.show(RezStrings.getNoResponse()); } break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: - if (Globals.scDebug) { - 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) { ErrorView.show(RezStrings.getNoJson()); } break; case 404: - if (Globals.scDebug) { - 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) { ErrorView.show(RezStrings.getConfigUrlNotFound()); } @@ -369,9 +328,7 @@ class HomeAssistantApp extends Application.AppBase { break; default: - if (Globals.scDebug) { - System.println("HomeAssistantApp onReturnFetchApiStatus(): Unhandled HTTP response code = " + responseCode); - } + // System.println("HomeAssistantApp onReturnFetchApiStatus(): Unhandled HTTP response code = " + responseCode); if (!mIsGlance) { ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode); } @@ -386,9 +343,7 @@ class HomeAssistantApp extends Application.AppBase { WatchUi.requestUpdate(); } else { if (! System.getDeviceSettings().phoneConnected) { - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call."); - } + // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call."); mApiStatus = RezStrings.getUnavailable(); if (mIsGlance) { WatchUi.requestUpdate(); @@ -396,9 +351,7 @@ class HomeAssistantApp extends Application.AppBase { ErrorView.show(RezStrings.getNoPhone() + "."); } } else if (! System.getDeviceSettings().connectionAvailable) { - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); - } + // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); mApiStatus = RezStrings.getUnavailable(); if (mIsGlance) { WatchUi.requestUpdate(); @@ -449,9 +402,7 @@ class HomeAssistantApp extends Application.AppBase { function updateNextMenuItem() as Void { var itu = mItemsToUpdate as Lang.Array; if (itu == null) { - if (Globals.scDebug) { - System.println("HomeAssistantApp updateNextMenuItem(): No menu items to update"); - } + // System.println("HomeAssistantApp updateNextMenuItem(): No menu items to update"); if (!mIsGlance) { ErrorView.show(RezStrings.getConfigUrlNotFound()); } @@ -486,9 +437,7 @@ class HomeAssistantApp extends Application.AppBase { // Replace this functionality with a more central settings class as proposed in // https://github.com/house-of-abbey/GarminHomeAssistant/pull/17. function onSettingsChanged() as Void { - if (Globals.scDebug) { - System.println("HomeAssistantApp onSettingsChanged()"); - } + // System.println("HomeAssistantApp onSettingsChanged()"); Settings.update(); } diff --git a/source/HomeAssistantService.mc b/source/HomeAssistantService.mc index 02e1408..6a28feb 100644 --- a/source/HomeAssistantService.mc +++ b/source/HomeAssistantService.mc @@ -44,58 +44,42 @@ class HomeAssistantService { context as Lang.Object ) as Void { var entity_id = context as Lang.String or Null; - if (Globals.scDebug) { - System.println("HomeAssistantService onReturnCall() Response Code: " + responseCode); - System.println("HomeAssistantService onReturnCall() Response Data: " + data); - } + // System.println("HomeAssistantService onReturnCall() Response Code: " + responseCode); + // System.println("HomeAssistantService onReturnCall() Response Data: " + data); switch (responseCode) { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: - if (Globals.scDebug) { - 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(RezStrings.getNoPhone() + "."); break; case Communications.BLE_QUEUE_FULL: - if (Globals.scDebug) { - 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(RezStrings.getApiFlood()); break; case Communications.NETWORK_REQUEST_TIMED_OUT: - if (Globals.scDebug) { - 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(RezStrings.getNoResponse()); break; case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY: - if (Globals.scDebug) { - System.println("HomeAssistantService onReturnCall() Response Code: NETWORK_RESPONSE_OUT_OF_MEMORY, are we going too fast?"); - } + // System.println("HomeAssistantService onReturnCall() Response Code: NETWORK_RESPONSE_OUT_OF_MEMORY, are we going too fast?"); // Ignore and see if we can carry on break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: - if (Globals.scDebug) { - 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(RezStrings.getNoJson()); break; case 404: - if (Globals.scDebug) { - 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(RezStrings.getApiUrlNotFound()); break; case 200: - if (Globals.scDebug) { - System.println("HomeAssistantService onReturnCall(): Service executed."); - } + // System.println("HomeAssistantService onReturnCall(): Service executed."); var d = data as Lang.Array; var toast = RezStrings.getExecuted(); for(var i = 0; i < d.size(); i++) { @@ -117,9 +101,7 @@ class HomeAssistantService { break; default: - if (Globals.scDebug) { - System.println("HomeAssistantService onReturnCall(): Unhandled HTTP response code = " + responseCode); - } + // System.println("HomeAssistantService onReturnCall(): Unhandled HTTP response code = " + responseCode); ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode); } } @@ -129,22 +111,16 @@ class HomeAssistantService { data as Lang.Dictionary or Null ) as Void { if (! System.getDeviceSettings().phoneConnected) { - if (Globals.scDebug) { - System.println("HomeAssistantService call(): No Phone connection, skipping API call."); - } + // System.println("HomeAssistantService call(): No Phone connection, skipping API call."); ErrorView.show(RezStrings.getNoPhone() + "."); } else if (! System.getDeviceSettings().connectionAvailable) { - if (Globals.scDebug) { - System.println("HomeAssistantService call(): No Internet connection, skipping API call."); - } + // System.println("HomeAssistantService call(): No Internet connection, skipping API call."); ErrorView.show(RezStrings.getNoInternet() + "."); } 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()); - if (Globals.scDebug) { - System.println("HomeAssistantService call() URL=" + url); - System.println("HomeAssistantService call() service=" + service); - } + // System.println("HomeAssistantService call() URL=" + url); + // System.println("HomeAssistantService call() service=" + service); var entity_id = data.get("entity_id"); if (entity_id == null) { diff --git a/source/HomeAssistantTemplateMenuItem.mc b/source/HomeAssistantTemplateMenuItem.mc index 2d60a1c..60cb8f5 100644 --- a/source/HomeAssistantTemplateMenuItem.mc +++ b/source/HomeAssistantTemplateMenuItem.mc @@ -84,46 +84,34 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { // error. The ErrorView cancellation will resume the call chain. // function onReturnGetState(responseCode as Lang.Number, data as Lang.String) as Void { - if (Globals.scDebug) { - System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: " + responseCode); - System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Data: " + data); - } + // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: " + responseCode); + // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Data: " + data); var status = RezStrings.getUnavailable(); switch (responseCode) { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: - if (Globals.scDebug) { - 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(RezStrings.getNoPhone() + "."); break; case Communications.BLE_QUEUE_FULL: - if (Globals.scDebug) { - 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(RezStrings.getApiFlood()); break; case Communications.NETWORK_REQUEST_TIMED_OUT: - if (Globals.scDebug) { - 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(RezStrings.getNoResponse()); break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: - if (Globals.scDebug) { - 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(RezStrings.getNoJson()); break; case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY: - if (Globals.scDebug) { - System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: NETWORK_RESPONSE_OUT_OF_MEMORY, are we going too fast?"); - } + // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: NETWORK_RESPONSE_OUT_OF_MEMORY, are we going too fast?"); var myTimer = new Timer.Timer(); // Now this feels very "closely coupled" to the application, but it is the most reliable method instead of using a timer. myTimer.start(getApp().method(:updateNextMenuItem), Globals.scApiBackoff, false); @@ -132,16 +120,12 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { break; case 404: - if (Globals.scDebug) { - 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(RezStrings.getApiUrlNotFound()); break; case 400: - if (Globals.scDebug) { - System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: 400, bad request. Template error."); - } + // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: 400, bad request. Template error."); ErrorView.show(RezStrings.getTemplateError()); break; @@ -154,9 +138,7 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { break; default: - if (Globals.scDebug) { - System.println("HomeAssistantTemplateMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode); - } + // System.println("HomeAssistantTemplateMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode); ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode); } getApp().setApiStatus(status); @@ -164,22 +146,16 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { function getState() as Void { if (! System.getDeviceSettings().phoneConnected) { - if (Globals.scDebug) { - System.println("HomeAssistantTemplateMenuItem getState(): No Phone connection, skipping API call."); - } + // System.println("HomeAssistantTemplateMenuItem getState(): No Phone connection, skipping API call."); ErrorView.show(RezStrings.getNoPhone() + "."); getApp().setApiStatus(RezStrings.getUnavailable()); } else if (! System.getDeviceSettings().connectionAvailable) { - if (Globals.scDebug) { - System.println("HomeAssistantTemplateMenuItem getState(): No Internet connection, skipping API call."); - } + // System.println("HomeAssistantTemplateMenuItem getState(): No Internet connection, skipping API call."); ErrorView.show(RezStrings.getNoInternet() + "."); getApp().setApiStatus(RezStrings.getUnavailable()); } else { var url = Settings.getApiUrl() + "/template"; - if (Globals.scDebug) { - System.println("HomeAssistantTemplateMenuItem getState() URL=" + url + ", Template='" + mTemplate + "'"); - } + // System.println("HomeAssistantTemplateMenuItem getState() URL=" + url + ", Template='" + mTemplate + "'"); Communications.makeWebRequest( url, { "template" => mTemplate }, diff --git a/source/HomeAssistantToggleMenuItem.mc b/source/HomeAssistantToggleMenuItem.mc index 793d011..75d713f 100644 --- a/source/HomeAssistantToggleMenuItem.mc +++ b/source/HomeAssistantToggleMenuItem.mc @@ -59,46 +59,34 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { // error. The ErrorView cancellation will resume the call chain. // function onReturnGetState(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void { - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: " + responseCode); - System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Data: " + data); - } + // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: " + responseCode); + // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Data: " + data); var status = RezStrings.getUnavailable(); switch (responseCode) { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: - if (Globals.scDebug) { - 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(RezStrings.getNoPhone() + "."); break; case Communications.BLE_QUEUE_FULL: - if (Globals.scDebug) { - 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(RezStrings.getApiFlood()); break; case Communications.NETWORK_REQUEST_TIMED_OUT: - if (Globals.scDebug) { - 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(RezStrings.getNoResponse()); break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: - if (Globals.scDebug) { - 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(RezStrings.getNoJson()); break; case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY: - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: NETWORK_RESPONSE_OUT_OF_MEMORY, are we going too fast?"); - } + // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: NETWORK_RESPONSE_OUT_OF_MEMORY, are we going too fast?"); var myTimer = new Timer.Timer(); // Now this feels very "closely coupled" to the application, but it is the most reliable method instead of using a timer. myTimer.start(getApp().method(:updateNextMenuItem), Globals.scApiBackoff, false); @@ -113,22 +101,16 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { } if (msg != null) { // Should be an HTTP 404 according to curl queries - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: 404. " + mData.get("entity_id") + " " + msg); - } + // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: 404. " + mData.get("entity_id") + " " + msg); ErrorView.show("HTTP 404, " + mData.get("entity_id") + ". " + data.get("message")); } else { - if (Globals.scDebug) { - 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(RezStrings.getApiUrlNotFound()); } break; case 405: - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: 405. " + mData.get("entity_id") + " " + data.get("message")); - } + // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: 405. " + mData.get("entity_id") + " " + data.get("message")); ErrorView.show("HTTP 405, " + mData.get("entity_id") + ". " + data.get("message")); break; @@ -136,9 +118,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { case 200: status = RezStrings.getAvailable(); var state = data.get("state") as Lang.String; - if (Globals.scDebug) { - System.println((data.get("attributes") as Lang.Dictionary).get("friendly_name") + " State=" + state); - } + // System.println((data.get("attributes") as Lang.Dictionary).get("friendly_name") + " State=" + state); if (getLabel().equals("...")) { setLabel((data.get("attributes") as Lang.Dictionary).get("friendly_name") as Lang.String); } @@ -148,9 +128,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { break; default: - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode); - } + // System.println("HomeAssistantToggleMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode); ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode); } getApp().setApiStatus(status); @@ -158,22 +136,16 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { function getState() as Void { if (! System.getDeviceSettings().phoneConnected) { - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call."); - } + // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call."); ErrorView.show(RezStrings.getNoPhone() + "."); getApp().setApiStatus(RezStrings.getUnavailable()); } else if (! System.getDeviceSettings().connectionAvailable) { - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); - } + // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); ErrorView.show(RezStrings.getNoInternet() + "."); getApp().setApiStatus(RezStrings.getUnavailable()); } else { var url = Settings.getApiUrl() + "/states/" + mData.get("entity_id"); - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem getState() URL=" + url); - } + // System.println("HomeAssistantToggleMenuItem getState() URL=" + url); Communications.makeWebRequest( url, null, @@ -192,46 +164,34 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { // Callback function after completing the POST request to set the status. // function onReturnSetState(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void { - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: " + responseCode); - System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Data: " + data); - } + // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: " + responseCode); + // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Data: " + data); var status = RezStrings.getUnavailable(); switch (responseCode) { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: - if (Globals.scDebug) { - 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(RezStrings.getNoPhone() + "."); break; case Communications.BLE_QUEUE_FULL: - if (Globals.scDebug) { - 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(RezStrings.getApiFlood()); break; case Communications.NETWORK_REQUEST_TIMED_OUT: - if (Globals.scDebug) { - 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(RezStrings.getNoResponse()); break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: - if (Globals.scDebug) { - 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(RezStrings.getNoJson()); break; case 404: - if (Globals.scDebug) { - 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(RezStrings.getApiUrlNotFound()); break; @@ -241,9 +201,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { for(var i = 0; i < d.size(); i++) { if ((d[i].get("entity_id") as Lang.String).equals(mData.get("entity_id"))) { state = d[i].get("state") as Lang.String; - if (Globals.scDebug) { - System.println((d[i].get("attributes") as Lang.Dictionary).get("friendly_name") + " State=" + state); - } + // System.println((d[i].get("attributes") as Lang.Dictionary).get("friendly_name") + " State=" + state); setUiToggle(state); } } @@ -251,9 +209,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { break; default: - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem onReturnSetState(): Unhandled HTTP response code = " + responseCode); - } + // System.println("HomeAssistantToggleMenuItem onReturnSetState(): Unhandled HTTP response code = " + responseCode); ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode); } getApp().setApiStatus(status); @@ -261,16 +217,12 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { function setState(s as Lang.Boolean) as Void { if (! System.getDeviceSettings().phoneConnected) { - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call."); - } + // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call."); // Toggle the UI back setEnabled(!isEnabled()); ErrorView.show(RezStrings.getNoPhone() + "."); } else if (! System.getDeviceSettings().connectionAvailable) { - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); - } + // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); // Toggle the UI back setEnabled(!isEnabled()); ErrorView.show(RezStrings.getNoInternet() + "."); @@ -284,10 +236,8 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { } else { url = url + id.substring(0, id.find(".")) + "/turn_off"; } - if (Globals.scDebug) { - System.println("HomeAssistantToggleMenuItem setState() URL = " + url); - System.println("HomeAssistantToggleMenuItem setState() entity_id = " + id); - } + // System.println("HomeAssistantToggleMenuItem setState() URL = " + url); + // System.println("HomeAssistantToggleMenuItem setState() entity_id = " + id); Communications.makeWebRequest( url, mData, diff --git a/source/HomeAssistantView.mc b/source/HomeAssistantView.mc index c689111..6e90164 100644 --- a/source/HomeAssistantView.mc +++ b/source/HomeAssistantView.mc @@ -146,32 +146,22 @@ class HomeAssistantViewDelegate extends WatchUi.Menu2InputDelegate { mTimer.reset(); if (item instanceof HomeAssistantToggleMenuItem) { var haToggleItem = item as HomeAssistantToggleMenuItem; - if (Globals.scDebug) { - System.println(haToggleItem.getLabel() + " " + haToggleItem.getId() + " " + haToggleItem.isEnabled()); - } + // System.println(haToggleItem.getLabel() + " " + haToggleItem.getId() + " " + haToggleItem.isEnabled()); haToggleItem.callService(haToggleItem.isEnabled()); } else if (item instanceof HomeAssistantTapMenuItem) { var haItem = item as HomeAssistantTapMenuItem; - if (Globals.scDebug) { - System.println(haItem.getLabel() + " " + haItem.getId()); - } + // System.println(haItem.getLabel() + " " + haItem.getId()); haItem.callService(); } else if (item instanceof HomeAssistantTemplateMenuItem) { var haItem = item as HomeAssistantTemplateMenuItem; - if (Globals.scDebug) { - System.println(haItem.getLabel() + " " + haItem.getId()); - } + // System.println(haItem.getLabel() + " " + haItem.getId()); haItem.callService(); } else if (item instanceof HomeAssistantGroupMenuItem) { var haMenuItem = item as HomeAssistantGroupMenuItem; - if (Globals.scDebug) { - System.println("IconMenu: " + haMenuItem.getLabel() + " " + haMenuItem.getId()); - } + // System.println("IconMenu: " + haMenuItem.getLabel() + " " + haMenuItem.getId()); WatchUi.pushView(haMenuItem.getMenuView(), new HomeAssistantViewDelegate(false), WatchUi.SLIDE_LEFT); } else { - if (Globals.scDebug) { - System.println(item.getLabel() + " " + item.getId()); - } + // System.println(item.getLabel() + " " + item.getId()); } } diff --git a/source/QuitTimer.mc b/source/QuitTimer.mc index a5901b8..a15efb0 100644 --- a/source/QuitTimer.mc +++ b/source/QuitTimer.mc @@ -30,9 +30,7 @@ class QuitTimer extends Timer.Timer { } function exitApp() as Void { - if (Globals.scDebug) { - System.println("QuitTimer exitApp(): Exiting"); - } + // System.println("QuitTimer exitApp(): Exiting"); // This will exit the system cleanly from any point within an app. System.exit(); } @@ -45,9 +43,7 @@ class QuitTimer extends Timer.Timer { } function reset() { - if (Globals.scDebug) { - System.println("QuitTimer reset(): Restarted quit timer"); - } + // System.println("QuitTimer reset(): Restarted quit timer"); stop(); begin(); } diff --git a/source/RezStrings.mc b/source/RezStrings.mc index 8405f68..3109b4f 100644 --- a/source/RezStrings.mc +++ b/source/RezStrings.mc @@ -26,50 +26,42 @@ 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 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 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 strAvailable as Lang.String or Null; (:glance) - private static var strNoApiKey as Lang.String or Null; + private static var strChecking as Lang.String or Null; (:glance) - private static var strNoApiUrl as Lang.String or Null; + private static var strUnavailable as Lang.String or Null; (:glance) - 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; + private static var strUnconfigured as Lang.String or Null; (:glance) - private static var strAvailable as Lang.String or Null; + private static var strCached 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; + 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); - strNoPhone = WatchUi.loadResource($.Rez.Strings.NoPhone); - strNoApiKey = WatchUi.loadResource($.Rez.Strings.NoAPIKey); - strNoApiUrl = WatchUi.loadResource($.Rez.Strings.NoApiUrl); - strNoConfigUrl = WatchUi.loadResource($.Rez.Strings.NoConfigUrl); strAvailable = WatchUi.loadResource($.Rez.Strings.Available); strChecking = WatchUi.loadResource($.Rez.Strings.Checking); strUnavailable = WatchUi.loadResource($.Rez.Strings.Unavailable); @@ -81,7 +73,7 @@ class RezStrings { // Can't initialise a constant directly, have to be initialised via a function // for 'WatchUi.loadResource' to be available. static function update() { - strAppName = WatchUi.loadResource($.Rez.Strings.AppName); + update_glance(); strConfirm = WatchUi.loadResource($.Rez.Strings.Confirm); strExecuted = WatchUi.loadResource($.Rez.Strings.Executed); strNoPhone = WatchUi.loadResource($.Rez.Strings.NoPhone); @@ -98,15 +90,10 @@ class RezStrings { strTrailingSlashErr = WatchUi.loadResource($.Rez.Strings.TrailingSlashErr); strWebhookFailed = WatchUi.loadResource($.Rez.Strings.WebhookFailed); strTemplateError = WatchUi.loadResource($.Rez.Strings.TemplateError); - 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); strMemory = WatchUi.loadResource($.Rez.Strings.Memory); } + (:glance) static function getAppName() as Lang.String { return strAppName; } @@ -175,26 +162,32 @@ class RezStrings { 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; } diff --git a/source/Settings.mc b/source/Settings.mc index b3f6727..5be6627 100644 --- a/source/Settings.mc +++ b/source/Settings.mc @@ -86,14 +86,12 @@ class Settings { unsetWebhookId(); } } - if (Globals.scDebug) { - System.println("Settings update(): getTemporalEventRegisteredTime() = " + Background.getTemporalEventRegisteredTime()); - if (Background.getTemporalEventRegisteredTime() != null) { - System.println("Settings update(): getTemporalEventRegisteredTime().value() = " + Background.getTemporalEventRegisteredTime().value().format("%d") + " seconds"); - } else { - System.println("Settings update(): getTemporalEventRegisteredTime() = null"); - } - } + // System.println("Settings update(): getTemporalEventRegisteredTime() = " + Background.getTemporalEventRegisteredTime()); + // if (Background.getTemporalEventRegisteredTime() != null) { + // System.println("Settings update(): getTemporalEventRegisteredTime().value() = " + Background.getTemporalEventRegisteredTime().value().format("%d") + " seconds"); + // } else { + // System.println("Settings update(): getTemporalEventRegisteredTime() = null"); + // } } static function getApiKey() as Lang.String { diff --git a/source/WebLog.mc b/source/WebLog.mc index d845a46..39eb606 100644 --- a/source/WebLog.mc +++ b/source/WebLog.mc @@ -78,9 +78,7 @@ class WebLog { var myTime = System.getClockTime(); buffer += myTime.hour.format("%02d") + ":" + myTime.min.format("%02d") + ":" + myTime.sec.format("%02d") + " " + str; numCalls++; - if (Globals.scDebug) { - System.println("WebLog print() str = " + str); - } + // System.println("WebLog print() str = " + str); if (numCalls >= callsbuffer) { doPrint(); } @@ -97,9 +95,7 @@ class WebLog { // submission level set by 'callsbuffer'. // function flush() { - if (Globals.scDebug) { - System.println("WebLog flush()"); - } + // System.println("WebLog flush()"); if (numCalls > 0) { doPrint(); } @@ -108,10 +104,8 @@ class WebLog { // Perform the submission to the online logger. // function doPrint() { - if (Globals.scDebug) { - System.println("WebLog doPrint()"); - System.println(buffer); - } + // System.println("WebLog doPrint()"); + // System.println(buffer); Communications.makeWebRequest( ClientId.webLogUrl, { @@ -134,9 +128,7 @@ class WebLog { // execution. // function clear() { - if (Globals.scDebug) { - System.println("WebLog clear()"); - } + // System.println("WebLog clear()"); Communications.makeWebRequest( ClientId.webLogClearUrl, {}, @@ -156,24 +148,20 @@ class WebLog { // Callback function to print the outcome of a doPrint() method. // function onLog(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void { - if (Globals.scDebug) { - if (responseCode != 200) { - System.println("WebLog onLog() Failed"); - System.println("WebLog onLog() Response Code: " + responseCode); - System.println("WebLog onLog() Response Data: " + data); - } - } + // if (responseCode != 200) { + // System.println("WebLog onLog() Failed"); + // System.println("WebLog onLog() Response Code: " + responseCode); + // System.println("WebLog onLog() Response Data: " + data); + // } } // Callback function to print the outcome of a clear() method. // function onClear(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void { - if (Globals.scDebug) { - if (responseCode != 200) { - System.println("WebLog onClear() Failed"); - System.println("WebLog onClear() Response Code: " + responseCode); - System.println("WebLog onClear() Response Data: " + data); - } - } + // if (responseCode != 200) { + // System.println("WebLog onClear() Failed"); + // System.println("WebLog onClear() Response Code: " + responseCode); + // System.println("WebLog onClear() Response Data: " + data); + // } } } diff --git a/source/WebhookManager.mc b/source/WebhookManager.mc index 9d1cf70..2b76c91 100644 --- a/source/WebhookManager.mc +++ b/source/WebhookManager.mc @@ -32,44 +32,32 @@ class WebhookManager { switch (responseCode) { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: - if (Globals.scDebug) { - 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(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoPhone() + "."); break; case Communications.BLE_QUEUE_FULL: - if (Globals.scDebug) { - 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(RezStrings.getWebhookFailed() + "\n" + RezStrings.getApiFlood()); break; case Communications.NETWORK_REQUEST_TIMED_OUT: - if (Globals.scDebug) { - 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(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoResponse()); break; case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY: - if (Globals.scDebug) { - System.println("WebhookManager onReturnRequestWebhookId() Response Code: NETWORK_RESPONSE_OUT_OF_MEMORY, are we going too fast?"); - } + // System.println("WebhookManager onReturnRequestWebhookId() Response Code: NETWORK_RESPONSE_OUT_OF_MEMORY, are we going too fast?"); // Ignore and see if we can carry on break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: - if (Globals.scDebug) { - 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(); ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoJson()); break; case 404: - if (Globals.scDebug) { - 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(); ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getApiUrlNotFound()); break; @@ -99,27 +87,21 @@ class WebhookManager { "disabled" => false }); } else { - if (Globals.scDebug) { - System.println("WebhookManager onReturnRequestWebhookId(): No webhook id in response data."); - } + // System.println("WebhookManager onReturnRequestWebhookId(): No webhook id in response data."); Settings.unsetIsBatteryLevelEnabled(); ErrorView.show(RezStrings.getWebhookFailed()); } break; default: - if (Globals.scDebug) { - System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode); - } + // System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode); Settings.unsetIsBatteryLevelEnabled(); ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getUnhandledHttpErr() + responseCode); } } function requestWebhookId() { - if (Globals.scDebug) { - System.println("WebhookManager requestWebhookId(): Requesting webhook id"); - } + // System.println("WebhookManager requestWebhookId(): Requesting webhook id"); Communications.makeWebRequest( Settings.getApiUrl() + "/mobile_app/registrations", { @@ -151,63 +133,48 @@ class WebhookManager { switch (responseCode) { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: - if (Globals.scDebug) { - 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(); ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoPhone() + "."); break; case Communications.BLE_QUEUE_FULL: - if (Globals.scDebug) { - 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(); ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getApiFlood()); break; case Communications.NETWORK_REQUEST_TIMED_OUT: - if (Globals.scDebug) { - 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(); ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoResponse()); break; case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY: - if (Globals.scDebug) { - System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: NETWORK_RESPONSE_OUT_OF_MEMORY, are we going too fast?"); - } + // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: NETWORK_RESPONSE_OUT_OF_MEMORY, are we going too fast?"); Settings.unsetWebhookId(); // Ignore and see if we can carry on break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: - if (Globals.scDebug) { - 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.unsetIsBatteryLevelEnabled(); ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoJson()); break; case 404: - if (Globals.scDebug) { - 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.unsetIsBatteryLevelEnabled(); ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getApiUrlNotFound()); break; case 201: - if ((data.get("success") as Lang.Boolean or Null) == true) { - if (Globals.scDebug) { - System.println("WebhookManager onReturnRegisterWebhookSensor(): Success"); - } - } else { - if (Globals.scDebug) { - System.println("WebhookManager onReturnRegisterWebhookSensor(): Failure"); - } + if ((data.get("success") as Lang.Boolean or Null) != true) { + // When uncommenting, invert the condition above. + // System.println("WebhookManager onReturnRegisterWebhookSensor(): Success"); + // } else { + // System.println("WebhookManager onReturnRegisterWebhookSensor(): Failure"); Settings.unsetWebhookId(); Settings.unsetIsBatteryLevelEnabled(); ErrorView.show(RezStrings.getWebhookFailed()); @@ -215,9 +182,7 @@ class WebhookManager { break; default: - if (Globals.scDebug) { - System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode); - } + // System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode); Settings.unsetWebhookId(); Settings.unsetIsBatteryLevelEnabled(); ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getUnhandledHttpErr() + responseCode); @@ -225,9 +190,7 @@ class WebhookManager { } function registerWebhookSensor(sensor as Lang.Object) { - if (Globals.scDebug) { - System.println("WebhookManager registerWebhookSensor(): Registering webhook sensor: " + sensor.toString()); - } + // System.println("WebhookManager registerWebhookSensor(): Registering webhook sensor: " + sensor.toString()); Communications.makeWebRequest( Settings.getApiUrl() + "/webhook/" + Settings.getWebhookId(), { From fc7302ad3b0b32126970d0ba8a3e62752347ebdb Mon Sep 17 00:00:00 2001 From: Philip Abbey Date: Sun, 21 Jan 2024 20:00:52 +0000 Subject: [PATCH 2/9] Update HomeAssistantView.mc Removed empty else clause. --- source/HomeAssistantView.mc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/source/HomeAssistantView.mc b/source/HomeAssistantView.mc index 6e90164..81218ab 100644 --- a/source/HomeAssistantView.mc +++ b/source/HomeAssistantView.mc @@ -34,7 +34,6 @@ class HomeAssistantView extends WatchUi.Menu2 { :theme as WatchUi.MenuTheme or Null } or Null ) { - if (options == null) { options = { :title => definition.get("title") as Lang.String @@ -160,8 +159,8 @@ class HomeAssistantViewDelegate extends WatchUi.Menu2InputDelegate { var haMenuItem = item as HomeAssistantGroupMenuItem; // System.println("IconMenu: " + haMenuItem.getLabel() + " " + haMenuItem.getId()); WatchUi.pushView(haMenuItem.getMenuView(), new HomeAssistantViewDelegate(false), WatchUi.SLIDE_LEFT); - } else { - // System.println(item.getLabel() + " " + item.getId()); + // } else { + // System.println(item.getLabel() + " " + item.getId()); } } From d9b345e5b83686f5508c0668a4941542e5d9393f Mon Sep 17 00:00:00 2001 From: Philip Abbey Date: Sun, 21 Jan 2024 20:04:12 +0000 Subject: [PATCH 3/9] Update Settings.mc Cosmetic --- source/Settings.mc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/Settings.mc b/source/Settings.mc index 5be6627..bf8f0fd 100644 --- a/source/Settings.mc +++ b/source/Settings.mc @@ -75,7 +75,8 @@ class Settings { } else if ( mHasService and ((Background.getTemporalEventRegisteredTime() == null) or - (Background.getTemporalEventRegisteredTime() != (mBatteryRefreshRate * 60)))) { + (Background.getTemporalEventRegisteredTime() != (mBatteryRefreshRate * 60))) + ) { Background.registerForTemporalEvent(new Time.Duration(mBatteryRefreshRate * 60)); // Convert to seconds } } else { From b80227e48487dc914c587a0a0e695c87d1e69d5a Mon Sep 17 00:00:00 2001 From: Philip Abbey Date: Sun, 21 Jan 2024 20:11:47 +0000 Subject: [PATCH 4/9] Update Settings.mc Cosmetic --- source/Settings.mc | 1 - 1 file changed, 1 deletion(-) diff --git a/source/Settings.mc b/source/Settings.mc index bf8f0fd..7f98f0f 100644 --- a/source/Settings.mc +++ b/source/Settings.mc @@ -42,7 +42,6 @@ class Settings { private static var mBatteryRefreshRate as Lang.Number = 15; // minutes private static var mIsApp as Lang.Boolean = false; private static var mHasService as Lang.Boolean = false; - // Must keep the object so it doesn't get garbage collected. private static var mWebhookManager as WebhookManager or Null; From 6e67c4cf2aa1746faf77e75590ee2abaa80872dc Mon Sep 17 00:00:00 2001 From: Philip Abbey Date: Sun, 21 Jan 2024 20:38:01 +0000 Subject: [PATCH 5/9] Removed RezStrings.mc And in-lined the resource strings fetching. --- source/HomeAssistantConfirmation.mc | 2 +- source/HomeAssistantGlanceView.mc | 10 +- source/HomeAssistantService.mc | 18 +-- source/HomeAssistantTemplateMenuItem.mc | 26 ++-- source/HomeAssistantToggleMenuItem.mc | 44 +++--- source/RezStrings.mc | 199 ------------------------ source/RootView.mc | 12 +- source/WebhookManager.mc | 30 ++-- 8 files changed, 71 insertions(+), 270 deletions(-) delete mode 100644 source/RezStrings.mc diff --git a/source/HomeAssistantConfirmation.mc b/source/HomeAssistantConfirmation.mc index c42918f..1efec56 100644 --- a/source/HomeAssistantConfirmation.mc +++ b/source/HomeAssistantConfirmation.mc @@ -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)); } } diff --git a/source/HomeAssistantGlanceView.mc b/source/HomeAssistantGlanceView.mc index 9479b8f..4ecc8c9 100644 --- a/source/HomeAssistantGlanceView.mc +++ b/source/HomeAssistantGlanceView.mc @@ -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, diff --git a/source/HomeAssistantService.mc b/source/HomeAssistantService.mc index 6a28feb..d0d448a 100644 --- a/source/HomeAssistantService.mc +++ b/source/HomeAssistantService.mc @@ -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()); diff --git a/source/HomeAssistantTemplateMenuItem.mc b/source/HomeAssistantTemplateMenuItem.mc index 60cb8f5..5dac253 100644 --- a/source/HomeAssistantTemplateMenuItem.mc +++ b/source/HomeAssistantTemplateMenuItem.mc @@ -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 + "'"); diff --git a/source/HomeAssistantToggleMenuItem.mc b/source/HomeAssistantToggleMenuItem.mc index 75d713f..3f084fc 100644 --- a/source/HomeAssistantToggleMenuItem.mc +++ b/source/HomeAssistantToggleMenuItem.mc @@ -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'. diff --git a/source/RezStrings.mc b/source/RezStrings.mc deleted file mode 100644 index 3109b4f..0000000 --- a/source/RezStrings.mc +++ /dev/null @@ -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; - } - -} diff --git a/source/RootView.mc b/source/RootView.mc index 1fc3403..4ecc7a2 100644 --- a/source/RootView.mc +++ b/source/RootView.mc @@ -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, diff --git a/source/WebhookManager.mc b/source/WebhookManager.mc index 2b76c91..1567332 100644 --- a/source/WebhookManager.mc +++ b/source/WebhookManager.mc @@ -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); } } From 0b80e4546d8043e412ec8aed53389d491167bba5 Mon Sep 17 00:00:00 2001 From: Philip Abbey Date: Sun, 21 Jan 2024 20:43:11 +0000 Subject: [PATCH 6/9] Corrected a previous incomplete commit All now "WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String" --- source/HomeAssistantApp.mc | 94 ++++++++++++++----------- source/HomeAssistantConfirmation.mc | 2 +- source/HomeAssistantGlanceView.mc | 10 +-- source/HomeAssistantService.mc | 16 ++--- source/HomeAssistantTemplateMenuItem.mc | 22 +++--- source/HomeAssistantToggleMenuItem.mc | 36 +++++----- source/RootView.mc | 12 ++-- source/WebhookManager.mc | 30 ++++---- 8 files changed, 117 insertions(+), 105 deletions(-) diff --git a/source/HomeAssistantApp.mc b/source/HomeAssistantApp.mc index 3044179..f2827cd 100644 --- a/source/HomeAssistantApp.mc +++ b/source/HomeAssistantApp.mc @@ -89,30 +89,33 @@ class HomeAssistantApp extends Application.AppBase { function getInitialView() as Lang.Array? { mIsApp = true; mQuitTimer = new QuitTimer(); - RezStrings.update(); - mApiStatus = RezStrings.getChecking(); - mMenuStatus = RezStrings.getChecking(); + // RezStrings.update(); + mApiStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String; + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String; Settings.update(); if (Settings.getApiKey().length() == 0) { // 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) { // 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("/")) { // 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) { // 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) { // 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) { // 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 { + 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(); fetchApiStatus(); if (WidgetApp.isWidget) { @@ -134,50 +137,50 @@ class HomeAssistantApp extends Application.AppBase { // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: " + responseCode); // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Data: " + data); - mMenuStatus = RezStrings.getUnavailable(); + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String; switch (responseCode) { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed."); if (!mIsGlance) { - ErrorView.show(RezStrings.getNoPhone() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); } break; case Communications.BLE_QUEUE_FULL: // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: BLE_QUEUE_FULL, API calls too rapid."); if (!mIsGlance) { - ErrorView.show(RezStrings.getApiFlood()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String); } break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); if (!mIsGlance) { - ErrorView.show(RezStrings.getNoResponse()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String); } break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned."); if (!mIsGlance) { - ErrorView.show(RezStrings.getNoJson()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String); } break; case 404: // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: 404, page not found. Check Configuration URL setting."); if (!mIsGlance) { - ErrorView.show(RezStrings.getConfigUrlNotFound()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ConfigUrlNotFound) as Lang.String); } break; case 200: if (Settings.getCacheConfig()) { Storage.setValue("menu", data as Lang.Dictionary); - mMenuStatus = RezStrings.getCached(); + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Cached) as Lang.String; } else { - mMenuStatus = RezStrings.getAvailable(); + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String; } if (!mIsGlance) { buildMenu(data); @@ -190,7 +193,7 @@ class HomeAssistantApp extends Application.AppBase { default: // System.println("HomeAssistantApp onReturnFetchMenuConfig(): Unhandled HTTP response code = " + responseCode); if (!mIsGlance) { - ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + responseCode); } break; } @@ -202,7 +205,7 @@ class HomeAssistantApp extends Application.AppBase { (:glance) function fetchMenuConfig() as Lang.Boolean { if (Settings.getConfigUrl().equals("")) { - mMenuStatus = RezStrings.getUnconfigured(); + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unconfigured) as Lang.String; WatchUi.requestUpdate(); } else { var menu = Storage.getValue("menu") as Lang.Dictionary; @@ -217,17 +220,17 @@ class HomeAssistantApp extends Application.AppBase { if (mIsGlance) { WatchUi.requestUpdate(); } 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) { // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); if (mIsGlance) { WatchUi.requestUpdate(); } 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 { Communications.makeWebRequest( Settings.getConfigUrl(), @@ -240,7 +243,7 @@ class HomeAssistantApp extends Application.AppBase { ); } } else { - mMenuStatus = RezStrings.getCached(); + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Cached) as Lang.String; WatchUi.requestUpdate(); if (!mIsGlance) { buildMenu(menu); @@ -252,7 +255,16 @@ class HomeAssistantApp extends Application.AppBase { } 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); + + stats = System.getSystemStats(); + memUsed = (100f * stats.usedMemory) / stats.totalMemory; + System.println("After menu construction: used = " + stats.usedMemory + ", total = " + stats.totalMemory + ", " + memUsed + "%"); + mQuitTimer.begin(); if (Settings.getIsWidgetStartNoTap()) { // 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 Data: " + data); - mApiStatus = RezStrings.getUnavailable(); + mApiStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String; switch (responseCode) { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed."); if (!mIsGlance) { - ErrorView.show(RezStrings.getNoPhone() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); } break; case Communications.BLE_QUEUE_FULL: // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: BLE_QUEUE_FULL, API calls too rapid."); if (!mIsGlance) { - ErrorView.show(RezStrings.getApiFlood()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String); } break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); if (!mIsGlance) { - ErrorView.show(RezStrings.getNoResponse()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String); } break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned."); if (!mIsGlance) { - ErrorView.show(RezStrings.getNoJson()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String); } break; case 404: // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: 404, page not found. Check Configuration URL setting."); if (!mIsGlance) { - ErrorView.show(RezStrings.getConfigUrlNotFound()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ConfigUrlNotFound) as Lang.String); } break; @@ -319,7 +331,7 @@ class HomeAssistantApp extends Application.AppBase { msg = data.get("message"); } if (msg.equals("API running.")) { - mApiStatus = RezStrings.getAvailable(); + mApiStatus = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String; } else { if (!mIsGlance) { ErrorView.show("API " + mApiStatus + "."); @@ -330,7 +342,7 @@ class HomeAssistantApp extends Application.AppBase { default: // System.println("HomeAssistantApp onReturnFetchApiStatus(): Unhandled HTTP response code = " + responseCode); if (!mIsGlance) { - ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + responseCode); } } WatchUi.requestUpdate(); @@ -339,24 +351,24 @@ class HomeAssistantApp extends Application.AppBase { (:glance) function fetchApiStatus() as Void { if (Settings.getApiUrl().equals("")) { - mApiStatus = RezStrings.getUnconfigured(); + mApiStatus = WatchUi.loadResource($.Rez.Strings.Unconfigured) as Lang.String; WatchUi.requestUpdate(); } else { if (! System.getDeviceSettings().phoneConnected) { // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call."); - mApiStatus = RezStrings.getUnavailable(); + mApiStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String; if (mIsGlance) { WatchUi.requestUpdate(); } else { - ErrorView.show(RezStrings.getNoPhone() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); } } else if (! System.getDeviceSettings().connectionAvailable) { // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); - mApiStatus = RezStrings.getUnavailable(); + mApiStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String; if (mIsGlance) { WatchUi.requestUpdate(); } else { - ErrorView.show(RezStrings.getNoInternet() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + "."); } } else { Communications.makeWebRequest( @@ -404,7 +416,7 @@ class HomeAssistantApp extends Application.AppBase { if (itu == null) { // System.println("HomeAssistantApp updateNextMenuItem(): No menu items to update"); if (!mIsGlance) { - ErrorView.show(RezStrings.getConfigUrlNotFound()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ConfigUrlNotFound) as Lang.String); } } else { itu[mNextItemToUpdate].getState(); @@ -418,9 +430,9 @@ class HomeAssistantApp extends Application.AppBase { function getGlanceView() as Lang.Array or Null { mIsGlance = true; - RezStrings.update_glance(); - mApiStatus = RezStrings.getChecking(); - mMenuStatus = RezStrings.getChecking(); + // RezStrings.update_glance(); + mApiStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String; + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String; updateStatus(); Settings.update(); mTimer = new Timer.Timer(); diff --git a/source/HomeAssistantConfirmation.mc b/source/HomeAssistantConfirmation.mc index 1efec56..c3b7f27 100644 --- a/source/HomeAssistantConfirmation.mc +++ b/source/HomeAssistantConfirmation.mc @@ -28,7 +28,7 @@ using Toybox.Application.Properties; class HomeAssistantConfirmation extends WatchUi.Confirmation { function initialize() { - WatchUi.Confirmation.initialize(WatchUi.loadResource($.Rez.Strings.Confirm)); + WatchUi.Confirmation.initialize(WatchUi.loadResource($.Rez.Strings.Confirm) as Lang.String); } } diff --git a/source/HomeAssistantGlanceView.mc b/source/HomeAssistantGlanceView.mc index 4ecc8c9..0d26204 100644 --- a/source/HomeAssistantGlanceView.mc +++ b/source/HomeAssistantGlanceView.mc @@ -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(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({ - :text => WatchUi.loadResource($.Rez.Strings.AppName), + :text => WatchUi.loadResource($.Rez.Strings.AppName) as Lang.String, :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 => WatchUi.loadResource($.Rez.Strings.Checking), + :text => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String, :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 => WatchUi.loadResource($.Rez.Strings.GlanceMenu) + ":", + :text => WatchUi.loadResource($.Rez.Strings.GlanceMenu) as Lang.String + ":", :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 => WatchUi.loadResource($.Rez.Strings.Checking), + :text => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String, :color => Graphics.COLOR_WHITE, :font => Graphics.FONT_XTINY, :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER, diff --git a/source/HomeAssistantService.mc b/source/HomeAssistantService.mc index d0d448a..9542634 100644 --- a/source/HomeAssistantService.mc +++ b/source/HomeAssistantService.mc @@ -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(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); break; case Communications.BLE_QUEUE_FULL: // 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; case Communications.NETWORK_REQUEST_TIMED_OUT: // 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; case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY: @@ -70,12 +70,12 @@ 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(WatchUi.loadResource($.Rez.Strings.NoJson)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String); break; case 404: // 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; case 200: @@ -102,7 +102,7 @@ class HomeAssistantService { default: // 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 { if (! System.getDeviceSettings().phoneConnected) { // 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) { // 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 { // 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()); diff --git a/source/HomeAssistantTemplateMenuItem.mc b/source/HomeAssistantTemplateMenuItem.mc index 5dac253..23c683e 100644 --- a/source/HomeAssistantTemplateMenuItem.mc +++ b/source/HomeAssistantTemplateMenuItem.mc @@ -92,22 +92,22 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { 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(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); break; case Communications.BLE_QUEUE_FULL: // 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; case Communications.NETWORK_REQUEST_TIMED_OUT: // 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; 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(WatchUi.loadResource($.Rez.Strings.NoJson)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String); break; case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY: @@ -121,12 +121,12 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { case 404: // 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; case 400: // 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; case 200: @@ -139,7 +139,7 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { default: // 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); } @@ -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(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); - getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); + getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String); } else if (! System.getDeviceSettings().connectionAvailable) { // System.println("HomeAssistantTemplateMenuItem getState(): No Internet connection, skipping API call."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + "."); - getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + "."); + getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String); } else { var url = Settings.getApiUrl() + "/template"; // System.println("HomeAssistantTemplateMenuItem getState() URL=" + url + ", Template='" + mTemplate + "'"); diff --git a/source/HomeAssistantToggleMenuItem.mc b/source/HomeAssistantToggleMenuItem.mc index 3f084fc..2402c8c 100644 --- a/source/HomeAssistantToggleMenuItem.mc +++ b/source/HomeAssistantToggleMenuItem.mc @@ -67,22 +67,22 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { 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(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); break; case Communications.BLE_QUEUE_FULL: // 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; case Communications.NETWORK_REQUEST_TIMED_OUT: // 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; 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(WatchUi.loadResource($.Rez.Strings.NoJson)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String); 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(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String); } break; @@ -129,7 +129,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { default: // 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); } @@ -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(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); - getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); + getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String); } else if (! System.getDeviceSettings().connectionAvailable) { // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + "."); - getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + "."); + getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String); } else { var url = Settings.getApiUrl() + "/states/" + mData.get("entity_id"); // System.println("HomeAssistantToggleMenuItem getState() URL=" + url); @@ -172,27 +172,27 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { 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(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); break; case Communications.BLE_QUEUE_FULL: // 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; case Communications.NETWORK_REQUEST_TIMED_OUT: // 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; 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(WatchUi.loadResource($.Rez.Strings.NoJson)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String); break; case 404: // 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; case 200: @@ -210,7 +210,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { default: // 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); } @@ -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(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); } else if (! System.getDeviceSettings().connectionAvailable) { // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); // Toggle the UI back setEnabled(!isEnabled()); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + "."); } else { // Updated SDK and got a new error // ERROR: venu: Cannot find symbol ':substring' on type 'PolyType'. diff --git a/source/RootView.mc b/source/RootView.mc index 4ecc7a2..6edef1c 100644 --- a/source/RootView.mc +++ b/source/RootView.mc @@ -61,7 +61,7 @@ class RootView extends ScalableView { var w = dc.getWidth(); mTitle = new WatchUi.Text({ - :text => WatchUi.loadResource($.Rez.Strings.AppName), + :text => WatchUi.loadResource($.Rez.Strings.AppName) as Lang.String, :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 => WatchUi.loadResource($.Rez.Strings.Checking), + :text => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String, :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 => WatchUi.loadResource($.Rez.Strings.GlanceMenu) + ":", + :text => WatchUi.loadResource($.Rez.Strings.GlanceMenu) as Lang.String + ":", :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 => WatchUi.loadResource($.Rez.Strings.Checking), + :text => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String, :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 => WatchUi.loadResource($.Rez.Strings.Memory) + ":", + :text => WatchUi.loadResource($.Rez.Strings.Memory) as Lang.String + ":", :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 => WatchUi.loadResource($.Rez.Strings.Checking), + :text => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String, :color => Graphics.COLOR_WHITE, :font => Graphics.FONT_XTINY, :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER, diff --git a/source/WebhookManager.mc b/source/WebhookManager.mc index 1567332..3e38f72 100644 --- a/source/WebhookManager.mc +++ b/source/WebhookManager.mc @@ -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(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; case Communications.BLE_QUEUE_FULL: // 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; case Communications.NETWORK_REQUEST_TIMED_OUT: // 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; 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(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; case 404: // System.println("WebhookManager onReturnRequestWebhookId() Response Code: 404, page not found. Check API URL setting."); 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; case 201: @@ -89,14 +89,14 @@ class WebhookManager { } else { // System.println("WebhookManager onReturnRequestWebhookId(): No webhook id in response data."); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String); } break; default: // System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode); 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, "app_id" => "garmin_home_assistant", - "app_name" => WatchUi.loadResource($.Rez.Strings.AppName), + "app_name" => WatchUi.loadResource($.Rez.Strings.AppName) as Lang.String, "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(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; case Communications.BLE_QUEUE_FULL: // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: BLE_QUEUE_FULL, API calls too rapid."); 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; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); 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; 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(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; case 404: // System.println("WebhookManager onReturnRequestWebhookId() Response Code: 404, page not found. Check API URL setting."); Settings.unsetWebhookId(); 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; case 201: @@ -177,7 +177,7 @@ class WebhookManager { // System.println("WebhookManager onReturnRegisterWebhookSensor(): Failure"); Settings.unsetWebhookId(); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String); } break; @@ -185,7 +185,7 @@ class WebhookManager { // System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode); Settings.unsetWebhookId(); 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); } } From 7786efd8833de2f843e819fb7f63777fe389894a Mon Sep 17 00:00:00 2001 From: Philip Abbey Date: Sun, 21 Jan 2024 20:46:55 +0000 Subject: [PATCH 7/9] Update HomeAssistantApp.mc Removed memory metrics --- source/HomeAssistantApp.mc | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/source/HomeAssistantApp.mc b/source/HomeAssistantApp.mc index f2827cd..fd75ee3 100644 --- a/source/HomeAssistantApp.mc +++ b/source/HomeAssistantApp.mc @@ -113,9 +113,6 @@ class HomeAssistantApp extends Application.AppBase { // System.println("HomeAssistantApp fetchMenuConfig(): No Internet connection, skipping API call."); return ErrorView.create(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + "."); } 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(); fetchApiStatus(); if (WidgetApp.isWidget) { @@ -255,16 +252,7 @@ class HomeAssistantApp extends Application.AppBase { } 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); - - stats = System.getSystemStats(); - memUsed = (100f * stats.usedMemory) / stats.totalMemory; - System.println("After menu construction: used = " + stats.usedMemory + ", total = " + stats.totalMemory + ", " + memUsed + "%"); - mQuitTimer.begin(); if (Settings.getIsWidgetStartNoTap()) { // As soon as the menu has been fetched start show the menu of items. From 9c001f340250b1bc6034aa93276772b0bcf188fd Mon Sep 17 00:00:00 2001 From: Philip Abbey Date: Mon, 22 Jan 2024 10:28:35 +0000 Subject: [PATCH 8/9] Cosmetic --- source/BackgroundServiceDelegate.mc | 10 +++++----- source/HomeAssistantView.mc | 4 +--- source/WebLog.mc | 4 +--- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/source/BackgroundServiceDelegate.mc b/source/BackgroundServiceDelegate.mc index 4c367db..a1746cb 100644 --- a/source/BackgroundServiceDelegate.mc +++ b/source/BackgroundServiceDelegate.mc @@ -50,13 +50,13 @@ class BackgroundServiceDelegate extends System.ServiceDelegate { "type" => "update_sensor_states", "data" => [ { - "state" => System.getSystemStats().battery, - "type" => "sensor", + "state" => System.getSystemStats().battery, + "type" => "sensor", "unique_id" => "battery_level" }, { - "state" => System.getSystemStats().charging, - "type" => "binary_sensor", + "state" => System.getSystemStats().charging, + "type" => "binary_sensor", "unique_id" => "battery_is_charging" } ] @@ -64,7 +64,7 @@ class BackgroundServiceDelegate extends System.ServiceDelegate { { :method => Communications.HTTP_REQUEST_METHOD_POST, :headers => { - "Content-Type" => Communications.REQUEST_CONTENT_TYPE_JSON + "Content-Type" => Communications.REQUEST_CONTENT_TYPE_JSON }, :responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON }, diff --git a/source/HomeAssistantView.mc b/source/HomeAssistantView.mc index 81218ab..a518a29 100644 --- a/source/HomeAssistantView.mc +++ b/source/HomeAssistantView.mc @@ -35,9 +35,7 @@ class HomeAssistantView extends WatchUi.Menu2 { } or Null ) { if (options == null) { - options = { - :title => definition.get("title") as Lang.String - }; + options = { :title => definition.get("title") as Lang.String }; } else { options.put(:title, definition.get("title") as Lang.String); } diff --git a/source/WebLog.mc b/source/WebLog.mc index 39eb606..247e0f2 100644 --- a/source/WebLog.mc +++ b/source/WebLog.mc @@ -108,9 +108,7 @@ class WebLog { // System.println(buffer); Communications.makeWebRequest( ClientId.webLogUrl, - { - "log" => buffer - }, + { "log" => buffer }, { :method => Communications.HTTP_REQUEST_METHOD_GET, :headers => { From a95736ebedcc2e8881bf391f14294eb589a93948 Mon Sep 17 00:00:00 2001 From: "Restyled.io" Date: Mon, 22 Jan 2024 22:20:26 +0000 Subject: [PATCH 9/9] Restyled by whitespace --- source/WebLog.mc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/WebLog.mc b/source/WebLog.mc index 247e0f2..05dec93 100644 --- a/source/WebLog.mc +++ b/source/WebLog.mc @@ -20,7 +20,7 @@ // larger submissions in order to prevent overflow of the blue tooth stack. // //----------------------------------------------------------------------------------- -// +// // Usage: // wl = new WebLog(); // wl.clear(); @@ -28,7 +28,7 @@ // wl.flush(); // // https://domain.name/path/log.php -// +// // -// +// // Logs published to: https://domain.name/path/log // // https://domain.name/path/log_clear.php -// +// //