mirror of
https://github.com/nextcloud/android.git
synced 2024-11-23 21:55:48 +03:00
OC-2677: Add GetSharesForFile operation
This commit is contained in:
parent
8bf072f71c
commit
f7bb011b7e
4 changed files with 114 additions and 36 deletions
|
@ -1 +1 @@
|
|||
Subproject commit cc71eeaa21e9217947dfce213049e16d02629b0b
|
||||
Subproject commit 781e738347a87c2b24144e03f7fe8fe32603f2f3
|
|
@ -29,6 +29,7 @@ import com.owncloud.android.MainApp;
|
|||
import com.owncloud.android.db.ProviderMeta.ProviderTableMeta;
|
||||
import com.owncloud.android.lib.operations.common.OCShare;
|
||||
import com.owncloud.android.lib.operations.common.ShareType;
|
||||
import com.owncloud.android.lib.utils.FileUtils;
|
||||
import com.owncloud.android.utils.FileStorageUtils;
|
||||
import com.owncloud.android.utils.Log_OC;
|
||||
|
||||
|
@ -1098,4 +1099,36 @@ public class FileDataStorageManager {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void saveSharesDB(ArrayList<OCShare> shares) {
|
||||
|
||||
if (shares.size() > 0) {
|
||||
// Save share file
|
||||
saveShares(shares);
|
||||
|
||||
ArrayList<OCFile> sharedFiles = new ArrayList<OCFile>();
|
||||
|
||||
for (OCShare share : shares) {
|
||||
// Get the path
|
||||
String path = share.getPath();
|
||||
if (share.isDirectory()) {
|
||||
path = path + FileUtils.PATH_SEPARATOR;
|
||||
}
|
||||
|
||||
// Update OCFile with data from share: ShareByLink ¿and publicLink?
|
||||
OCFile file = getFileByPath(path);
|
||||
if (file != null) {
|
||||
if (share.getShareType().equals(ShareType.PUBLIC_LINK)) {
|
||||
file.setShareByLink(true);
|
||||
sharedFiles.add(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (sharedFiles.size() > 0) {
|
||||
updateSharedFiles(sharedFiles);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
/* ownCloud Android client application
|
||||
* Copyright (C) 2012-2013 ownCloud Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
package com.owncloud.android.operations;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.owncloud.android.lib.network.OwnCloudClient;
|
||||
import com.owncloud.android.lib.operations.common.OCShare;
|
||||
import com.owncloud.android.lib.operations.common.RemoteOperationResult;
|
||||
import com.owncloud.android.lib.operations.remote.GetSharesForFileRemoteOperation;
|
||||
import com.owncloud.android.operations.common.SyncOperation;
|
||||
import com.owncloud.android.utils.Log_OC;
|
||||
|
||||
/**
|
||||
* Provide a list shares for a specific file.
|
||||
*
|
||||
* @author masensio
|
||||
*
|
||||
*/
|
||||
public class GetSharesForFileOperation extends SyncOperation {
|
||||
|
||||
private static final String TAG = GetSharesForFileOperation.class.getSimpleName();
|
||||
|
||||
private String mPath;
|
||||
private boolean mReshares;
|
||||
private boolean mSubfiles;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param path Path to file or folder
|
||||
* @param reshares If set to ‘false’ (default), only shares from the current user are returned
|
||||
* If set to ‘true’, all shares from the given file are returned
|
||||
* @param subfiles If set to ‘false’ (default), lists only the folder being shared
|
||||
* If set to ‘true’, all shared files within the folder are returned.
|
||||
*/
|
||||
public GetSharesForFileOperation(String path, boolean reshares, boolean subfiles) {
|
||||
mPath = path;
|
||||
mReshares = reshares;
|
||||
mSubfiles = subfiles;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RemoteOperationResult run(OwnCloudClient client) {
|
||||
GetSharesForFileRemoteOperation operation = new GetSharesForFileRemoteOperation(mPath, mReshares, mSubfiles);
|
||||
RemoteOperationResult result = operation.execute(client);
|
||||
|
||||
if (result.isSuccess()) {
|
||||
|
||||
// Update DB with the response
|
||||
Log_OC.d(TAG, "File = " + mPath + " Share list size " + result.getData().size());
|
||||
ArrayList<OCShare> shares = new ArrayList<OCShare>();
|
||||
for(Object obj: result.getData()) {
|
||||
shares.add((OCShare) obj);
|
||||
}
|
||||
|
||||
getStorageManager().saveSharesDB(shares);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
|
@ -19,13 +19,10 @@ package com.owncloud.android.operations;
|
|||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.owncloud.android.datamodel.OCFile;
|
||||
import com.owncloud.android.lib.network.OwnCloudClient;
|
||||
import com.owncloud.android.lib.operations.common.RemoteOperationResult;
|
||||
import com.owncloud.android.lib.operations.common.OCShare;
|
||||
import com.owncloud.android.lib.operations.common.ShareType;
|
||||
import com.owncloud.android.lib.operations.remote.GetRemoteSharesOperation;
|
||||
import com.owncloud.android.lib.utils.FileUtils;
|
||||
import com.owncloud.android.operations.common.SyncOperation;
|
||||
import com.owncloud.android.utils.Log_OC;
|
||||
|
||||
|
@ -55,41 +52,10 @@ public class GetSharesOperation extends SyncOperation {
|
|||
shares.add((OCShare) obj);
|
||||
}
|
||||
|
||||
saveSharesDB(shares);
|
||||
getStorageManager().saveSharesDB(shares);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private void saveSharesDB(ArrayList<OCShare> shares) {
|
||||
|
||||
if (shares.size() > 0) {
|
||||
// Save share file
|
||||
getStorageManager().saveShares(shares);
|
||||
|
||||
ArrayList<OCFile> sharedFiles = new ArrayList<OCFile>();
|
||||
|
||||
for (OCShare share : shares) {
|
||||
// Get the path
|
||||
String path = share.getPath();
|
||||
if (share.isDirectory()) {
|
||||
path = path + FileUtils.PATH_SEPARATOR;
|
||||
}
|
||||
|
||||
// Update OCFile with data from share: ShareByLink ¿and publicLink?
|
||||
OCFile file = getStorageManager().getFileByPath(path);
|
||||
if (file != null) {
|
||||
if (share.getShareType().equals(ShareType.PUBLIC_LINK)) {
|
||||
file.setShareByLink(true);
|
||||
sharedFiles.add(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (sharedFiles.size() > 0) {
|
||||
getStorageManager().updateSharedFiles(sharedFiles);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue