From 2b26195511000f963e6409185c76139182ddef6e Mon Sep 17 00:00:00 2001 From: "Jeffrey I. Schiller" Date: Wed, 22 Jan 2025 15:18:41 -0500 Subject: [PATCH] Conditionally save project.properties We were always saving project.properties every time we loaded a project, even when there are no changes. This is because the computed settings don't store the qualifiedName (package name, called "main") as well as the project name itself. We add them here before the comparison. Change-Id: I6b0e206dbef6bfc100c5c3ce89db1ca7395e17e0 --- .../youngandroid/YoungAndroidProjectService.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/server/project/youngandroid/YoungAndroidProjectService.java b/appinventor/appengine/src/com/google/appinventor/server/project/youngandroid/YoungAndroidProjectService.java index b1581a5d85c..1e44d7b5203 100644 --- a/appinventor/appengine/src/com/google/appinventor/server/project/youngandroid/YoungAndroidProjectService.java +++ b/appinventor/appengine/src/com/google/appinventor/server/project/youngandroid/YoungAndroidProjectService.java @@ -238,12 +238,17 @@ public void storeProjectSettings(String userId, long projectId, String projectSe YoungAndroidSettingsBuilder oldProperties = new YoungAndroidSettingsBuilder(properties); + // Project settings do not include the name and package (main). So we add them + // here so the comparison below is accurate. Before this change, we always write out the + // project properties file, even when there are no changes to it. + String projectName = properties.getProperty("name"); + String qualifiedName = properties.getProperty("main"); + newProperties.setProjectName(projectName) + .setQualifiedFormName(qualifiedName); + if (!oldProperties.equals(newProperties)) { // Recreate the project.properties and upload it to storageIo. - String projectName = properties.getProperty("name"); - String qualifiedName = properties.getProperty("main"); - String newContent = newProperties.setProjectName(projectName) - .setQualifiedFormName(qualifiedName).toProperties(); + String newContent = newProperties.toProperties(); storageIo.uploadFileForce(projectId, PROJECT_PROPERTIES_FILE_NAME, userId, newContent, StorageUtil.DEFAULT_CHARSET); }