Fixed a race condition duw to which renamed shared folders continued showing in mysha...
[pithos-web-client] / src / gr / grnet / pithos / web / client / Pithos.java
index 3f3e0f3..191a4f5 100644 (file)
@@ -813,7 +813,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
                History.newItem(key);
        }
 
-    public void deleteFolder(final Folder folder) {
+    public void deleteFolder(final Folder folder, final Command callback) {
         String path = getApiPath() + folder.getOwner() + "/" + folder.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(folder.getPrefix()) + "&t=" + System.currentTimeMillis();
         RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, path);
         builder.setHeader("X-Auth-Token", getToken());
@@ -826,7 +826,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
                         JSONArray array = json.isArray();
                         int i = 0;
                         if (array != null) {
-                            deleteObject(folder, i, array);
+                            deleteObject(folder, i, array, callback);
                         }
                     }
                 }
@@ -842,7 +842,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
         }
     }
 
-    void deleteObject(final Folder folder, final int i, final JSONArray array) {
+    void deleteObject(final Folder folder, final int i, final JSONArray array, final Command callback) {
         if (i < array.size()) {
             JSONObject o = array.get(i).isObject();
             if (o != null && !o.containsKey("subdir")) {
@@ -851,7 +851,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
                 DeleteRequest delete = new DeleteRequest(getApiPath(), folder.getOwner(), URL.encode(path)) {
                     @Override
                     public void onSuccess(Resource result) {
-                        deleteObject(folder, i + 1, array);
+                        deleteObject(folder, i + 1, array, callback);
                     }
 
                     @Override
@@ -888,7 +888,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
                                         array.set(l++, array2.get(j));
                                     }
                                 }
-                                deleteObject(folder, i + 1, array);
+                                deleteObject(folder, i + 1, array, callback);
                             }
                         }
 
@@ -913,6 +913,8 @@ public class Pithos implements EntryPoint, ResizeHandler {
                                                @Override
                                                public void execute() {
                                                        updateStatistics();
+                                                       if (callback != null)
+                                                               callback.execute();
                                                }
                                        });
                 }