浏览代码

Directly remove notification, on error reload (#3968)

Directly remove notification, on error reload
Tobias Kaminsky 6 年之前
父节点
当前提交
10f61729e2

+ 14 - 10
src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java

@@ -374,17 +374,21 @@ public class NotificationsActivity extends FileActivity implements Notifications
     }
 
     @Override
-    public void onRemovedNotification(boolean isSuccess, NotificationListAdapter.NotificationViewHolder holder) {
-        if (isSuccess) {
-            adapter.removeNotification(holder);
-
-            if (adapter.getItemCount() == 0) {
-                setEmptyContent(noResultsHeadline, noResultsMessage);
-                swipeListRefreshLayout.setVisibility(View.GONE);
-                swipeEmptyListRefreshLayout.setVisibility(View.VISIBLE);
-            }
-        } else {
+    public void onRemovedNotification(boolean isSuccess) {
+        if (!isSuccess) {
             DisplayUtils.showSnackMessage(this, getString(R.string.remove_notification_failed));
+            fetchAndSetData();
+        }
+    }
+
+    @Override
+    public void removeNotification(NotificationListAdapter.NotificationViewHolder holder) {
+        adapter.removeNotification(holder);
+
+        if (adapter.getItemCount() == 0) {
+            setEmptyContent(noResultsHeadline, noResultsMessage);
+            swipeListRefreshLayout.setVisibility(View.GONE);
+            swipeEmptyListRefreshLayout.setVisibility(View.VISIBLE);
         }
     }
 

+ 6 - 2
src/main/java/com/owncloud/android/ui/asynctasks/DeleteNotificationTask.java

@@ -48,8 +48,12 @@ public class DeleteNotificationTask extends AsyncTask<Action, Void, Boolean> {
     }
 
     @Override
-    protected Boolean doInBackground(Action... actions) {
+    protected void onPreExecute() {
+        notificationsActivity.removeNotification(holder);
+    }
 
+    @Override
+    protected Boolean doInBackground(Action... actions) {
         RemoteOperationResult result = new DeleteNotificationRemoteOperation(notification.notificationId)
             .execute(client);
 
@@ -58,6 +62,6 @@ public class DeleteNotificationTask extends AsyncTask<Action, Void, Boolean> {
 
     @Override
     protected void onPostExecute(Boolean success) {
-        notificationsActivity.onRemovedNotification(success, holder);
+        notificationsActivity.onRemovedNotification(success);
     }
 }

+ 3 - 1
src/main/java/com/owncloud/android/ui/notifications/NotificationsContract.java

@@ -26,7 +26,9 @@ import com.owncloud.android.ui.adapter.NotificationListAdapter;
 public interface NotificationsContract {
 
     interface View {
-        void onRemovedNotification(boolean isSuccess, NotificationListAdapter.NotificationViewHolder holder);
+        void onRemovedNotification(boolean isSuccess);
+
+        void removeNotification(NotificationListAdapter.NotificationViewHolder holder);
 
         void onRemovedAllNotifications(boolean isSuccess);