Эх сурвалжийг харах

activity: use lastGiven header

Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
tobiasKaminsky 5 жил өмнө
parent
commit
5c06b83a70

+ 1 - 1
scripts/analysis/findbugs-results.txt

@@ -1 +1 @@
-130
+426

+ 13 - 11
src/main/java/com/owncloud/android/ui/activities/ActivitiesActivity.java

@@ -62,6 +62,7 @@ import butterknife.Unbinder;
 
 public class ActivitiesActivity extends FileActivity implements ActivityListInterface, ActivitiesContract.View {
     private static final String TAG = ActivitiesActivity.class.getSimpleName();
+    private static final int UNDEFINED = -1;
 
     @BindView(R.id.empty_list_view)
     public LinearLayout emptyContentContainer;
@@ -92,7 +93,7 @@ public class ActivitiesActivity extends FileActivity implements ActivityListInte
 
     private ActivityListAdapter adapter;
     private Unbinder unbinder;
-    private String nextPageUrl;
+    private int lastGiven;
 
     private boolean isLoadingActivities;
 
@@ -123,10 +124,10 @@ public class ActivitiesActivity extends FileActivity implements ActivityListInte
         }
 
         swipeListRefreshLayout.setOnRefreshListener(() -> {
-            // We set the nextPageUrl variable to null here since when manually refreshing
+            // We set lastGiven variable to undefined here since when manually refreshing
             // activities data we want to clear the list and reset the pagination.
-            nextPageUrl = null;
-            mActionListener.loadActivities(nextPageUrl);
+            lastGiven = UNDEFINED;
+            mActionListener.loadActivities(lastGiven);
         });
 
         // Since we use swipe-to-refresh for progress indication we can hide the inherited
@@ -187,14 +188,14 @@ public class ActivitiesActivity extends FileActivity implements ActivityListInte
 
                 // synchronize loading state when item count changes
                 if (!isLoadingActivities && (totalItemCount - visibleItemCount) <= (firstVisibleItemIndex + 5)
-                    && nextPageUrl != null && !nextPageUrl.isEmpty()) {
+                    && lastGiven > 0) {
                     // Almost reached the end, continue to load new activities
-                    mActionListener.loadActivities(nextPageUrl);
+                    mActionListener.loadActivities(lastGiven);
                 }
             }
         });
 
-        mActionListener.loadActivities(null);
+        mActionListener.loadActivities(UNDEFINED);
     }
 
     @Override
@@ -237,15 +238,16 @@ public class ActivitiesActivity extends FileActivity implements ActivityListInte
     }
 
     @Override
-    public void showActivities(List<Object> activities, OwnCloudClient client, String nextPageUrl) {
+    public void showActivities(List<Object> activities, OwnCloudClient client, int lastGiven) {
         boolean clear = false;
-        if (this.nextPageUrl == null) {
+        if (this.lastGiven == UNDEFINED) {
             clear = true;
         }
         adapter.setActivityItems(activities, client, clear);
-        this.nextPageUrl = nextPageUrl;
+        this.lastGiven = lastGiven;
+
         // Hide the recyclerView if list is empty
-        if (activities.isEmpty()) {
+        if (adapter.isEmpty()) {
             recyclerView.setVisibility(View.INVISIBLE);
 
             emptyContentMessage.setText(noResultsMessage);

+ 2 - 2
src/main/java/com/owncloud/android/ui/activities/ActivitiesContract.java

@@ -27,7 +27,7 @@ import java.util.List;
 public interface ActivitiesContract {
 
     interface View {
-        void showActivities(List<Object> activities, OwnCloudClient client, String nextPageUrl);
+        void showActivities(List<Object> activities, OwnCloudClient client, int lastGiven);
         void showActivitiesLoadError(String error);
         void showActivityDetailUI(OCFile ocFile);
         void showActivityDetailUIIsNull();
@@ -38,7 +38,7 @@ public interface ActivitiesContract {
     }
 
     interface ActionListener {
-        void loadActivities(String pageUrl);
+        void loadActivities(int lastGiven);
 
         void openActivity(String fileUrl, BaseActivity baseActivity);
 

+ 4 - 5
src/main/java/com/owncloud/android/ui/activities/ActivitiesPresenter.java

@@ -47,16 +47,15 @@ public class ActivitiesPresenter implements ActivitiesContract.ActionListener {
     }
 
     @Override
-    public void loadActivities(String pageUrl) {
+    public void loadActivities(int lastGiven) {
         activitiesView.setProgressIndicatorState(true);
-        activitiesRepository.getActivities(pageUrl, new ActivitiesRepository.LoadActivitiesCallback() {
+        activitiesRepository.getActivities(lastGiven, new ActivitiesRepository.LoadActivitiesCallback() {
             @Override
-            public void onActivitiesLoaded(List<Object> activities, OwnCloudClient client,
-                                           String nextPageUrl) {
+            public void onActivitiesLoaded(List<Object> activities, OwnCloudClient client, int lastGiven) {
 
                 if (!activityStopped) {
                     activitiesView.setProgressIndicatorState(false);
-                    activitiesView.showActivities(activities, client, nextPageUrl);
+                    activitiesView.showActivities(activities, client, lastGiven);
                 }
             }
 

+ 2 - 3
src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesRepository.java

@@ -29,10 +29,9 @@ import androidx.annotation.NonNull;
  */
 public interface ActivitiesRepository {
     interface LoadActivitiesCallback {
-        void onActivitiesLoaded(List<Object> activities, OwnCloudClient client,
-                                String nextPageUrl);
+        void onActivitiesLoaded(List<Object> activities, OwnCloudClient client, int lastGiven);
         void onActivitiesLoadedError(String error);
     }
 
-    void getActivities(String pageUrl, @NonNull LoadActivitiesCallback callback);
+    void getActivities(int lastGiven, @NonNull LoadActivitiesCallback callback);
 }

+ 2 - 2
src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesServiceApi.java

@@ -31,10 +31,10 @@ import java.util.List;
 public interface ActivitiesServiceApi {
 
     interface ActivitiesServiceCallback<T> {
-        void onLoaded (T activities, OwnCloudClient client, String nextPageUrl);
+        void onLoaded(T activities, OwnCloudClient client, int lastGiven);
         void onError (String error);
     }
 
-    void getAllActivities(String pageUrl, ActivitiesServiceApi.ActivitiesServiceCallback<List<Object>> callback);
+    void getAllActivities(int lastGiven, ActivitiesServiceApi.ActivitiesServiceCallback<List<Object>> callback);
 
 }

+ 14 - 11
src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesServiceApiImpl.java

@@ -57,9 +57,9 @@ public class ActivitiesServiceApiImpl implements ActivitiesServiceApi {
     }
 
     @Override
-    public void getAllActivities(String pageUrl, ActivitiesServiceCallback<List<Object>> callback) {
+    public void getAllActivities(int lastGiven, ActivitiesServiceCallback<List<Object>> callback) {
         Account account = accountManager.getCurrentAccount();
-        GetActivityListTask getActivityListTask = new GetActivityListTask(account, accountManager, pageUrl, callback);
+        GetActivityListTask getActivityListTask = new GetActivityListTask(account, accountManager, lastGiven, callback);
         getActivityListTask.execute();
     }
 
@@ -69,16 +69,17 @@ public class ActivitiesServiceApiImpl implements ActivitiesServiceApi {
         private List<Object> activities;
         private Account account;
         private UserAccountManager accountManager;
-        private String pageUrl;
+        private int lastGiven;
         private String errorMessage;
         private OwnCloudClient ownCloudClient;
 
         private GetActivityListTask(Account account,
                                     UserAccountManager accountManager,
-                                    String pageUrl, ActivitiesServiceCallback<List<Object>> callback) {
+                                    int lastGiven,
+                                    ActivitiesServiceCallback<List<Object>> callback) {
             this.account = account;
             this.accountManager = accountManager;
-            this.pageUrl = pageUrl;
+            this.lastGiven = lastGiven;
             this.callback = callback;
             activities = new ArrayList<>();
         }
@@ -94,18 +95,20 @@ public class ActivitiesServiceApiImpl implements ActivitiesServiceApi {
                         getClientFor(ocAccount, MainApp.getAppContext());
                 ownCloudClient.setOwnCloudVersion(accountManager.getServerVersion(account));
 
-                GetActivitiesRemoteOperation getRemoteNotificationOperation = new GetActivitiesRemoteOperation();
-                if (pageUrl != null) {
-                    getRemoteNotificationOperation.setNextUrl(pageUrl);
+                GetActivitiesRemoteOperation getRemoteActivitiesOperation;
+                if (lastGiven > 0) {
+                    getRemoteActivitiesOperation = new GetActivitiesRemoteOperation(lastGiven);
+                } else {
+                    getRemoteActivitiesOperation = new GetActivitiesRemoteOperation();
                 }
 
-                final RemoteOperationResult result = getRemoteNotificationOperation.execute(ownCloudClient);
+                final RemoteOperationResult result = getRemoteActivitiesOperation.execute(ownCloudClient);
 
                 if (result.isSuccess() && result.getData() != null) {
                     final ArrayList<Object> data = result.getData();
                     activities = (ArrayList) data.get(0);
 
-                    pageUrl = (String) data.get(1);
+                    lastGiven = (int) data.get(1);
                     return true;
                 } else {
                     Log_OC.d(TAG, result.getLogMessage());
@@ -138,7 +141,7 @@ public class ActivitiesServiceApiImpl implements ActivitiesServiceApi {
         protected void onPostExecute(Boolean success) {
             super.onPostExecute(success);
             if (success) {
-                callback.onLoaded(activities, ownCloudClient, pageUrl);
+                callback.onLoaded(activities, ownCloudClient, lastGiven);
             } else {
                 callback.onError(errorMessage);
             }

+ 5 - 5
src/main/java/com/owncloud/android/ui/activities/data/activities/RemoteActivitiesRepository.java

@@ -34,12 +34,12 @@ public class RemoteActivitiesRepository implements ActivitiesRepository {
 
 
     @Override
-    public void getActivities(String pageUrl, @NonNull LoadActivitiesCallback callback) {
-        activitiesServiceApi.getAllActivities(pageUrl, new ActivitiesServiceApi.ActivitiesServiceCallback<List<Object>>() {
+    public void getActivities(int lastGiven, @NonNull LoadActivitiesCallback callback) {
+        activitiesServiceApi.getAllActivities(lastGiven,
+                                              new ActivitiesServiceApi.ActivitiesServiceCallback<List<Object>>() {
             @Override
-            public void onLoaded(List<Object> activities, OwnCloudClient client,
-                                 String nextPageUrl) {
-                callback.onActivitiesLoaded(activities, client, nextPageUrl);
+            public void onLoaded(List<Object> activities, OwnCloudClient client, int lastGiven) {
+                callback.onActivitiesLoaded(activities, client, lastGiven);
             }
 
             @Override

+ 4 - 0
src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java

@@ -401,6 +401,10 @@ public class ActivityListAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
         return values.size();
     }
 
+    public boolean isEmpty() {
+        return values.isEmpty();
+    }
+
     /**
      * Converts size of file icon from dp to pixel
      *

+ 16 - 15
src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java

@@ -107,7 +107,7 @@ public class FileDetailActivitiesFragment extends Fragment implements
     private OCFile file;
     private Account account;
 
-    private String nextPageUrl;
+    private int lastGiven;
     private boolean isLoadingActivities;
 
     @BindView(R.id.empty_list_view)
@@ -179,7 +179,7 @@ public class FileDetailActivitiesFragment extends Fragment implements
         onCreateSwipeToRefresh(swipeEmptyListRefreshLayout);
         onCreateSwipeToRefresh(swipeListRefreshLayout);
 
-        fetchAndSetData(null);
+        fetchAndSetData(-1);
 
         swipeListRefreshLayout.setOnRefreshListener(() -> onRefreshListLayout(swipeListRefreshLayout));
         swipeEmptyListRefreshLayout.setOnRefreshListener(() -> onRefreshListLayout(swipeEmptyListRefreshLayout));
@@ -189,7 +189,7 @@ public class FileDetailActivitiesFragment extends Fragment implements
             @Override
             public void onSuccess() {
                 commentInput.getText().clear();
-                fetchAndSetData(null);
+                fetchAndSetData(-1);
             }
 
             @Override
@@ -228,7 +228,7 @@ public class FileDetailActivitiesFragment extends Fragment implements
         if (refreshLayout != null && refreshLayout.isRefreshing()) {
             refreshLayout.setRefreshing(false);
         }
-        fetchAndSetData(null);
+        fetchAndSetData(-1);
     }
 
     private void setLoadingMessage() {
@@ -275,22 +275,22 @@ public class FileDetailActivitiesFragment extends Fragment implements
 
                 // synchronize loading state when item count changes
                 if (!isLoadingActivities && (totalItemCount - visibleItemCount) <= (firstVisibleItemIndex + 5)
-                        && nextPageUrl != null && !nextPageUrl.isEmpty()) {
+                    && lastGiven > 0) {
                     // Almost reached the end, continue to load new activities
-                    fetchAndSetData(nextPageUrl);
+                    fetchAndSetData(lastGiven);
                 }
             }
         });
     }
 
     public void reload() {
-        fetchAndSetData(null);
+        fetchAndSetData(-1);
     }
 
     /**
-     * @param pageUrl String
+     * @param lastGiven int; -1 to disable
      */
-    private void fetchAndSetData(String pageUrl) {
+    private void fetchAndSetData(int lastGiven) {
         final Account currentAccount = accountManager.getCurrentAccount();
         final Context context = MainApp.getAppContext();
         final FragmentActivity activity = getActivity();
@@ -308,11 +308,12 @@ public class FileDetailActivitiesFragment extends Fragment implements
                 ownCloudClient.setOwnCloudVersion(accountManager.getServerVersion(currentAccount));
                 isLoadingActivities = true;
 
-                GetActivitiesRemoteOperation getRemoteNotificationOperation = new GetActivitiesRemoteOperation(
-                        file.getLocalId());
+                GetActivitiesRemoteOperation getRemoteNotificationOperation;
 
-                if (pageUrl != null) {
-                    getRemoteNotificationOperation.setNextUrl(pageUrl);
+                if (lastGiven > 0) {
+                    getRemoteNotificationOperation = new GetActivitiesRemoteOperation(file.getLocalId());
+                } else {
+                    getRemoteNotificationOperation = new GetActivitiesRemoteOperation(file.getLocalId(), lastGiven);
                 }
 
                 Log_OC.d(TAG, "BEFORE getRemoteActivitiesOperation.execute");
@@ -335,10 +336,10 @@ public class FileDetailActivitiesFragment extends Fragment implements
                     if (restoreFileVersionSupported && versions != null) {
                         activitiesAndVersions.addAll(versions);
                     }
-                    nextPageUrl = (String) data.get(1);
+                    this.lastGiven = (int) data.get(1);
 
                     activity.runOnUiThread(() -> {
-                        populateList(activitiesAndVersions, pageUrl == null);
+                        populateList(activitiesAndVersions, lastGiven == -1);
                         if (activitiesAndVersions.isEmpty()) {
                             setEmptyContent(noResultsHeadline, noResultsMessage);
                             list.setVisibility(View.GONE);

+ 6 - 7
src/test/java/com/owncloud/android/ui/activities/ActivitiesPresenterTest.java

@@ -81,28 +81,27 @@ public class ActivitiesPresenterTest {
     @Test
     public void loadActivitiesFromRepositoryIntoView() {
         // When loading activities from repository is requested from presenter...
-        mPresenter.loadActivities(null);
+        mPresenter.loadActivities(-1);
         // Progress indicator is shown in view
         verify(mView).setProgressIndicatorState(eq(true));
         // Repository starts retrieving activities from server
-        verify(mActivitiesRepository).getActivities(eq(null), mLoadActivitiesCallbackCaptor.capture());
+        verify(mActivitiesRepository).getActivities(eq(-1), mLoadActivitiesCallbackCaptor.capture());
         // Repository returns data
-        mLoadActivitiesCallbackCaptor.getValue().onActivitiesLoaded(activitiesList,
-                mOwnCloudClient, null);
+        mLoadActivitiesCallbackCaptor.getValue().onActivitiesLoaded(activitiesList, mOwnCloudClient, -1);
         // Progress indicator is hidden
         verify(mView).setProgressIndicatorState(eq(false));
         // List of activities is shown in view.
-        verify(mView).showActivities(eq(activitiesList), eq(mOwnCloudClient), eq(null));
+        verify(mView).showActivities(eq(activitiesList), eq(mOwnCloudClient), eq(-1));
     }
 
     @Test
     public void loadActivitiesFromRepositoryShowError() {
         // When loading activities from repository is requested from presenter...
-        mPresenter.loadActivities(null);
+        mPresenter.loadActivities(-1);
         // Progress indicator is shown in view
         verify(mView).setProgressIndicatorState(eq(true));
         // Repository starts retrieving activities from server
-        verify(mActivitiesRepository).getActivities(eq(null), mLoadActivitiesCallbackCaptor.capture());
+        verify(mActivitiesRepository).getActivities(eq(-1), mLoadActivitiesCallbackCaptor.capture());
         // Repository returns data
         mLoadActivitiesCallbackCaptor.getValue().onActivitiesLoadedError("error");
         // Progress indicator is hidden

+ 6 - 6
src/test/java/com/owncloud/android/ui/activities/data/activities/RemoteActivitiesRepositoryTest.java

@@ -60,16 +60,16 @@ public class RemoteActivitiesRepositoryTest {
 
     @Test
     public void loadActivitiesReturnSuccess() {
-        mActivitiesRepository.getActivities("null", mockedLoadActivitiesCallback);
-        verify(serviceApi).getAllActivities(eq("null"), activitiesServiceCallbackCaptor.capture());
-        activitiesServiceCallbackCaptor.getValue().onLoaded(activitiesList, ownCloudClient, "nextPageUrl");
-        verify(mockedLoadActivitiesCallback).onActivitiesLoaded(eq(activitiesList), eq(ownCloudClient), eq("nextPageUrl"));
+        mActivitiesRepository.getActivities(-1, mockedLoadActivitiesCallback);
+        verify(serviceApi).getAllActivities(eq(-1), activitiesServiceCallbackCaptor.capture());
+        activitiesServiceCallbackCaptor.getValue().onLoaded(activitiesList, ownCloudClient, -1);
+        verify(mockedLoadActivitiesCallback).onActivitiesLoaded(eq(activitiesList), eq(ownCloudClient), eq(-1));
     }
 
     @Test
     public void loadActivitiesReturnError() {
-        mActivitiesRepository.getActivities("null", mockedLoadActivitiesCallback);
-        verify(serviceApi).getAllActivities(eq("null"), activitiesServiceCallbackCaptor.capture());
+        mActivitiesRepository.getActivities(-1, mockedLoadActivitiesCallback);
+        verify(serviceApi).getAllActivities(eq(-1), activitiesServiceCallbackCaptor.capture());
         activitiesServiceCallbackCaptor.getValue().onError("error");
         verify(mockedLoadActivitiesCallback).onActivitiesLoadedError(eq("error"));
     }