From c463efe521fb4fda84d7836e457991f04b242b5a Mon Sep 17 00:00:00 2001 From: Erik Johansson Date: Wed, 24 Jan 2018 22:49:52 +0100 Subject: [PATCH] Cache the selected scale user --- .../com/health/openscale/core/OpenScale.java | 43 +++++++++++-------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java b/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java index eb91a638..a2e59bca 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java +++ b/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java @@ -65,6 +65,8 @@ public class OpenScale { private AppDatabase appDB; private ScaleMeasurementDAO measurementDAO; private ScaleUserDAO userDAO; + + private ScaleUser selectedScaleUser; private List scaleMeasurementList; private BluetoothCommunication btCom; @@ -145,50 +147,55 @@ public class OpenScale { public void selectScaleUser(int userId) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); prefs.edit().putInt("selectedUserId", userId).commit(); + + selectedScaleUser = null; } public int getSelectedScaleUserId() { + if (selectedScaleUser != null) { + return selectedScaleUser.getId(); + } SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); return prefs.getInt("selectedUserId", -1); } - public List getScaleUserList() - { + public List getScaleUserList() { return userDAO.getAll(); } - public ScaleUser getScaleUser(int userId) - { + public ScaleUser getScaleUser(int userId) { + if (selectedScaleUser != null && selectedScaleUser.getId() == userId) { + return selectedScaleUser; + } return userDAO.get(userId); } - public ScaleUser getSelectedScaleUser() - { - ScaleUser scaleUser = new ScaleUser(); + public ScaleUser getSelectedScaleUser() { + if (selectedScaleUser != null) { + return selectedScaleUser; + } try { - int selectedUserId = getSelectedScaleUserId(); - - if (selectedUserId == -1) { - return scaleUser; + final int selectedUserId = getSelectedScaleUserId(); + if (selectedUserId != -1) { + selectedScaleUser = userDAO.get(selectedUserId); + return selectedScaleUser; } - - scaleUser = userDAO.get(selectedUserId); } catch (Exception e) { Toast.makeText(context, "Error: " + e.getMessage(), Toast.LENGTH_SHORT).show(); } - return scaleUser; + return new ScaleUser(); } - public void deleteScaleUser(int id) - { + public void deleteScaleUser(int id) { userDAO.delete(userDAO.get(id)); + selectedScaleUser = null; } - public void updateScaleUser(ScaleUser user) - { + public void updateScaleUser(ScaleUser user) { userDAO.update(user); + selectedScaleUser = null; } public List getScaleMeasurementList() {