Search in sources :

Example 1 with ReadFileVersionsRemoteOperation

use of com.owncloud.android.lib.resources.files.ReadFileVersionsRemoteOperation in project android by nextcloud.

the class FileDetailActivitiesFragment method fetchAndSetData.

/**
 * @param lastGiven int; -1 to disable
 */
private void fetchAndSetData(int lastGiven) {
    final FragmentActivity activity = getActivity();
    if (activity == null) {
        Log_OC.e(this, "Activity is null, aborting!");
        return;
    }
    final User user = accountManager.getUser();
    if (user.isAnonymous()) {
        activity.runOnUiThread(() -> {
            setEmptyContent(getString(R.string.common_error), getString(R.string.file_detail_activity_error));
        });
        return;
    }
    Thread t = new Thread(() -> {
        try {
            ownCloudClient = clientFactory.create(user);
            nextcloudClient = clientFactory.createNextcloudClient(user);
            isLoadingActivities = true;
            GetActivitiesRemoteOperation getRemoteNotificationOperation;
            if (lastGiven > 0) {
                getRemoteNotificationOperation = new GetActivitiesRemoteOperation(file.getLocalId(), lastGiven);
            } else {
                getRemoteNotificationOperation = new GetActivitiesRemoteOperation(file.getLocalId());
            }
            Log_OC.d(TAG, "BEFORE getRemoteActivitiesOperation.execute");
            RemoteOperationResult result = nextcloudClient.execute(getRemoteNotificationOperation);
            ArrayList<Object> versions = null;
            if (restoreFileVersionSupported) {
                ReadFileVersionsRemoteOperation readFileVersionsOperation = new ReadFileVersionsRemoteOperation(file.getLocalId());
                RemoteOperationResult result1 = readFileVersionsOperation.execute(ownCloudClient);
                if (result1.isSuccess()) {
                    versions = result1.getData();
                }
            }
            if (result.isSuccess() && result.getData() != null) {
                final List<Object> data = result.getData();
                final List<Object> activitiesAndVersions = (ArrayList) data.get(0);
                this.lastGiven = (int) data.get(1);
                if (activitiesAndVersions.isEmpty()) {
                    this.lastGiven = END_REACHED;
                }
                if (restoreFileVersionSupported && versions != null) {
                    activitiesAndVersions.addAll(versions);
                }
                activity.runOnUiThread(() -> {
                    if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) {
                        populateList(activitiesAndVersions, lastGiven == -1);
                    }
                });
            } else {
                Log_OC.d(TAG, result.getLogMessage());
                // show error
                String logMessage = result.getLogMessage();
                if (result.getHttpCode() == HttpStatus.SC_NOT_MODIFIED) {
                    logMessage = getString(R.string.activities_no_results_message);
                }
                final String finalLogMessage = logMessage;
                activity.runOnUiThread(() -> {
                    if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) {
                        setErrorContent(finalLogMessage);
                        isLoadingActivities = false;
                    }
                });
            }
            hideRefreshLayoutLoader(activity);
        } catch (ClientFactory.CreationException e) {
            Log_OC.e(TAG, "Error fetching file details activities", e);
        }
    });
    t.start();
}
Also used : User(com.nextcloud.client.account.User) RemoteOperationResult(com.owncloud.android.lib.common.operations.RemoteOperationResult) ArrayList(java.util.ArrayList) ClientFactory(com.nextcloud.client.network.ClientFactory) GetActivitiesRemoteOperation(com.owncloud.android.lib.resources.activities.GetActivitiesRemoteOperation) FragmentActivity(androidx.fragment.app.FragmentActivity) ReadFileVersionsRemoteOperation(com.owncloud.android.lib.resources.files.ReadFileVersionsRemoteOperation) RichObject(com.owncloud.android.lib.resources.activities.model.RichObject)

Aggregations

FragmentActivity (androidx.fragment.app.FragmentActivity)1 User (com.nextcloud.client.account.User)1 ClientFactory (com.nextcloud.client.network.ClientFactory)1 RemoteOperationResult (com.owncloud.android.lib.common.operations.RemoteOperationResult)1 GetActivitiesRemoteOperation (com.owncloud.android.lib.resources.activities.GetActivitiesRemoteOperation)1 RichObject (com.owncloud.android.lib.resources.activities.model.RichObject)1 ReadFileVersionsRemoteOperation (com.owncloud.android.lib.resources.files.ReadFileVersionsRemoteOperation)1 ArrayList (java.util.ArrayList)1