- Subproject commit 1df8349e216bd264b9e4e48f32b4c839ef973870
-Subproject commit b3ac14f575da5100eecff00de744d9330b668f66
++Subproject commit cd4414a7bda686c84e1ca75dd10bcbf9b3f57f83
<string name="actionbar_mkdir">Create directory</string>
<string name="actionbar_settings">Settings</string>
<string name="actionbar_see_details">Details</string>
-
+ <string name="actionbar_send_file">Send</string>
<string name="prefs_category_general">General</string>
<string name="prefs_category_more">More</string>
<string name="prefs_accounts">Accounts</string>
<string name="sync_fail_in_favourites_content">Contents of %1$d files could not be sync\'ed (%2$d conflicts)</string>
<string name="sync_foreign_files_forgotten_ticker">Some local files were forgotten</string>
<string name="sync_foreign_files_forgotten_content">%1$d files out of the %2$s directory could not be copied into</string>
- <string name="sync_foreign_files_forgotten_explanation">As of version 1.3.16, files uploaded from this device are copied into the local %1$s folder to prevent data loss when a single file is synced with multiple accounts.\n\nDue to this change, all files uploaded in previous versions of this app were copied into the %2$s folder. However, an error prevented the completion of this operation during account synchronization. You may either leave the file(s) as is and remove the link to %3$s, or move the file(s) into the %1$s directory and retain the link to %4$s.\n\nListed below are the local file(s), and the the remote file(s) in %5$s they were linked to.</string>
+ <string name="sync_foreign_files_forgotten_explanation">As of version 1.3.16, files uploaded from this device are copied into the local %1$s folder to prevent data loss when a single file is synced with multiple accounts.\n\nDue to this change, all files uploaded in previous versions of this app were copied into the %2$s folder. However, an error prevented the completion of this operation during account synchronization. You may either leave the file(s) as is and remove the link to %3$s, or move the file(s) into the %1$s directory and retain the link to %4$s.\n\nListed below are the local file(s), and the remote file(s) in %5$s they were linked to.</string>
<string name="sync_current_folder_was_removed">Folder %1$s does not exist anymore</string>
<string name="foreign_files_move">"Move all"</string>
<string name="foreign_files_success">"All files were moved"</string>
<string name="share_link_file_error">An error occurred while trying to share this file or folder</string>
<string name="unshare_link_file_no_exist">Unable to unshare this file or folder. It does not exist.</string>
<string name="unshare_link_file_error">An error occurred while trying to unshare this file or folder</string>
+
+ <string name="copy_link">Copy link</string>
+ <string name="clipboard_text_copied">Copied to clipboard</string>
</resources>
import android.text.Editable;\r
import android.text.InputType;\r
import android.text.TextWatcher;\r
- import android.util.Log;\r
import android.view.KeyEvent;\r
import android.view.MotionEvent;\r
import android.view.View;\r
import com.owncloud.android.MainApp;\r
import com.owncloud.android.R;\r
import com.owncloud.android.authentication.SsoWebViewClient.SsoWebViewClientListener;\r
-import com.owncloud.android.lib.accounts.AccountTypeUtils;\r
-import com.owncloud.android.lib.accounts.OwnCloudAccount;\r
-import com.owncloud.android.lib.network.OwnCloudClientFactory;\r
-import com.owncloud.android.lib.network.OwnCloudClient;\r
+import com.owncloud.android.lib.common.accounts.AccountTypeUtils;\r
+import com.owncloud.android.lib.common.accounts.AccountUtils.Constants;\r
+import com.owncloud.android.lib.common.OwnCloudClientFactory;\r
+import com.owncloud.android.lib.common.OwnCloudClient;\r
import com.owncloud.android.operations.OAuth2GetAccessToken;\r
-import com.owncloud.android.lib.operations.common.OnRemoteOperationListener;\r
-import com.owncloud.android.lib.operations.remote.OwnCloudServerCheckOperation;\r
-import com.owncloud.android.lib.operations.common.RemoteOperation;\r
-import com.owncloud.android.lib.operations.common.RemoteOperationResult;\r
-import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode;\r
-import com.owncloud.android.lib.operations.remote.ExistenceCheckRemoteOperation;\r
-import com.owncloud.android.lib.operations.remote.GetUserNameRemoteOperation;\r
+import com.owncloud.android.lib.common.operations.OnRemoteOperationListener;\r
+import com.owncloud.android.lib.resources.status.GetRemoteStatusOperation;\r
+import com.owncloud.android.lib.common.operations.RemoteOperation;\r
+import com.owncloud.android.lib.common.operations.RemoteOperationResult;\r
+import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;\r
+import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation;\r
+import com.owncloud.android.lib.resources.users.GetRemoteUserNameOperation;\r
import com.owncloud.android.ui.dialog.SamlWebViewDialog;\r
import com.owncloud.android.ui.dialog.SslValidatorDialog;\r
import com.owncloud.android.ui.dialog.SslValidatorDialog.OnSslValidatorListener;\r
import com.owncloud.android.utils.Log_OC;\r
-import com.owncloud.android.lib.utils.OwnCloudVersion;\r
+import com.owncloud.android.lib.resources.status.OwnCloudVersion;\r
\r
/**\r
* This Activity is used to add an ownCloud account to the App\r
private static final String KEY_AUTH_MESSAGE_TEXT = "AUTH_MESSAGE_TEXT";\r
private static final String KEY_HOST_URL_TEXT = "HOST_URL_TEXT";\r
private static final String KEY_OC_VERSION = "OC_VERSION";\r
+ private static final String KEY_OC_VERSION_STRING = "OC_VERSION_STRING";\r
private static final String KEY_ACCOUNT = "ACCOUNT";\r
private static final String KEY_SERVER_VALID = "SERVER_VALID";\r
private static final String KEY_SERVER_CHECKED = "SERVER_CHECKED";\r
private static final String KEY_AUTH_STATUS_TEXT = "AUTH_STATUS_TEXT";\r
private static final String KEY_AUTH_STATUS_ICON = "AUTH_STATUS_ICON";\r
private static final String KEY_REFRESH_BUTTON_ENABLED = "KEY_REFRESH_BUTTON_ENABLED";\r
-- private static final String KEY_IS_SHARED_SUPPORTED = "KEY_IS_SHARE_SUPPORTED";\r
++ //private static final String KEY_IS_SHARED_SUPPORTED = "KEY_IS_SHARE_SUPPORTED";\r
\r
private static final String AUTH_ON = "on";\r
private static final String AUTH_OFF = "off";\r
\r
private String mHostBaseUrl;\r
private OwnCloudVersion mDiscoveredVersion;\r
- private boolean mIsSharedSupported;\r
\r
private String mAuthMessageText;\r
private int mAuthMessageVisibility, mServerStatusText, mServerStatusIcon;\r
\r
private final Handler mHandler = new Handler();\r
private Thread mOperationThread;\r
- private OwnCloudServerCheckOperation mOcServerChkOperation;\r
+ private GetRemoteStatusOperation mOcServerChkOperation;\r
private ExistenceCheckRemoteOperation mAuthCheckOperation;\r
private RemoteOperationResult mLastSslUntrustedServerResult;\r
\r
mServerIsChecked = false;\r
mIsSslConn = false;\r
mAuthStatusText = mAuthStatusIcon = 0;\r
- mIsSharedSupported = false;\r
\r
/// retrieve extras from intent\r
mAccount = getIntent().getExtras().getParcelable(EXTRA_ACCOUNT);\r
-- if (mAccount != null) {\r
- String ocVersion = mAccountMgr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_VERSION);\r
- String ocVersionString = mAccountMgr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_VERSION_STRING);\r
++ if (mAccount != null) {
+ String ocVersion = mAccountMgr.getUserData(mAccount, Constants.KEY_OC_VERSION);\r
++ String ocVersionString = mAccountMgr.getUserData(mAccount, Constants.KEY_OC_VERSION_STRING);
if (ocVersion != null) {\r
- mDiscoveredVersion = new OwnCloudVersion(ocVersion);\r
+ mDiscoveredVersion = new OwnCloudVersion(ocVersion, ocVersionString);\r
}\r
- mHostBaseUrl = normalizeUrl(mAccountMgr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_BASE_URL));\r
+ mHostBaseUrl = normalizeUrl(mAccountMgr.getUserData(mAccount, Constants.KEY_OC_BASE_URL));\r
mHostUrlInput.setText(mHostBaseUrl);\r
String userName = mAccount.name.substring(0, mAccount.name.lastIndexOf('@'));\r
-- mUsernameInput.setText(userName);\r
- mIsSharedSupported = Boolean.getBoolean(mAccountMgr.getUserData(mAccount, Constants.KEY_SUPPORTS_SHARE_API));\r
++ mUsernameInput.setText(userName);
\r
}\r
initAuthorizationMethod(); // checks intent and setup.xml to determine mCurrentAuthorizationMethod\r
\r
/// server data\r
String ocVersion = savedInstanceState.getString(KEY_OC_VERSION);\r
- mIsSharedSupported = savedInstanceState.getBoolean(KEY_IS_SHARED_SUPPORTED, false);\r
+ String ocVersionString = savedInstanceState.getString(KEY_OC_VERSION_STRING);\r
if (ocVersion != null) {\r
- mDiscoveredVersion = new OwnCloudVersion(ocVersion);\r
+ mDiscoveredVersion = new OwnCloudVersion(ocVersion, ocVersionString);\r
}\r
mHostBaseUrl = savedInstanceState.getString(KEY_HOST_URL_TEXT);\r
\r
if (mAuthTokenType == null) { \r
if (mAccount != null) {\r
/// same authentication method than the one used to create the account to update\r
- oAuthRequired = (mAccountMgr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_SUPPORTS_OAUTH2) != null);\r
- samlWebSsoRequired = (mAccountMgr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_SUPPORTS_SAML_WEB_SSO) != null);\r
+ oAuthRequired = (mAccountMgr.getUserData(mAccount, Constants.KEY_SUPPORTS_OAUTH2) != null);\r
+ samlWebSsoRequired = (mAccountMgr.getUserData(mAccount, Constants.KEY_SUPPORTS_SAML_WEB_SSO) != null);\r
\r
} else {\r
/// use the one set in setup.xml\r
\r
/// server data\r
if (mDiscoveredVersion != null) {\r
- outState.putString(KEY_OC_VERSION, mDiscoveredVersion.toString());\r
+ outState.putString(KEY_OC_VERSION, mDiscoveredVersion.getVersion());\r
+ outState.putString(KEY_OC_VERSION_STRING, mDiscoveredVersion.getVersionString());\r
}\r
outState.putString(KEY_HOST_URL_TEXT, mHostBaseUrl);\r
- outState.putBoolean(KEY_IS_SHARED_SUPPORTED, mIsSharedSupported);\r
\r
/// account data, if updating\r
if (mAccount != null) {\r
\r
mServerIsValid = false;\r
mServerIsChecked = false;\r
- mIsSharedSupported = false;\r
mOkButton.setEnabled(false);\r
mDiscoveredVersion = null;\r
hideRefreshButton();\r
mServerStatusText = R.string.auth_testing_connection;\r
mServerStatusIcon = R.drawable.progress_small;\r
showServerStatus();\r
- mOcServerChkOperation = new OwnCloudServerCheckOperation(uri, this);\r
+ mOcServerChkOperation = new GetRemoteStatusOperation(uri, this);\r
OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(uri), this, true);\r
mOperationThread = mOcServerChkOperation.execute(client, this, mHandler);\r
} else {\r
@Override\r
public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationResult result) {\r
\r
- if (operation instanceof OwnCloudServerCheckOperation) {\r
- onOcServerCheckFinish((OwnCloudServerCheckOperation) operation, result);\r
+ if (operation instanceof GetRemoteStatusOperation) {\r
+ onOcServerCheckFinish((GetRemoteStatusOperation) operation, result);\r
\r
} else if (operation instanceof OAuth2GetAccessToken) {\r
onGetOAuthAccessTokenFinish((OAuth2GetAccessToken)operation, result);\r
} else {\r
onAuthorizationCheckFinish((ExistenceCheckRemoteOperation)operation, result);\r
}\r
- } else if (operation instanceof GetUserNameRemoteOperation) {\r
- onGetUserNameFinish((GetUserNameRemoteOperation) operation, result);\r
+ } else if (operation instanceof GetRemoteUserNameOperation) {\r
+ onGetUserNameFinish((GetRemoteUserNameOperation) operation, result);\r
\r
}\r
\r
}\r
\r
- private void onGetUserNameFinish(GetUserNameRemoteOperation operation, RemoteOperationResult result) {\r
+ private void onGetUserNameFinish(GetRemoteUserNameOperation operation, RemoteOperationResult result) {\r
if (result.isSuccess()) {\r
boolean success = false;\r
String username = operation.getUserName();\r
* @param operation Server check performed.\r
* @param result Result of the check.\r
*/\r
- private void onOcServerCheckFinish(OwnCloudServerCheckOperation operation, RemoteOperationResult result) {\r
+ private void onOcServerCheckFinish(GetRemoteStatusOperation operation, RemoteOperationResult result) {\r
if (operation.equals(mOcServerChkOperation)) {\r
/// save result state\r
mServerIsChecked = true;\r
/// allow or not the user try to access the server\r
mOkButton.setEnabled(mServerIsValid);\r
\r
- /// retrieve if is supported the Share API\r
- mIsSharedSupported = operation.isSharedSupported();\r
- \r
} // else nothing ; only the last check operation is considered; \r
// multiple can be triggered if the user amends a URL before a previous check can be triggered\r
}\r
if (isOAuth || isSaml) {\r
mAccountMgr.setAuthToken(mAccount, mAuthTokenType, mAuthToken);\r
}\r
-- /// add user data to the new account; TODO probably can be done in the last parameter addAccountExplicitly, or in KEY_USERDATA\r
- mAccountMgr.setUserData(mAccount, Constants.KEY_OC_VERSION, mDiscoveredVersion.toString());\r
- mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_VERSION, mDiscoveredVersion.getVersion());\r
- mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_VERSION_STRING, mDiscoveredVersion.getVersionString());\r
- mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_BASE_URL, mHostBaseUrl);\r
++ /// add user data to the new account; TODO probably can be done in the last parameter addAccountExplicitly, or in KEY_USERDATA
++ mAccountMgr.setUserData(mAccount, Constants.KEY_OC_VERSION, mDiscoveredVersion.getVersion());\r
++ mAccountMgr.setUserData(mAccount, Constants.KEY_OC_VERSION_STRING, mDiscoveredVersion.getVersionString());\r
+ mAccountMgr.setUserData(mAccount, Constants.KEY_OC_BASE_URL, mHostBaseUrl);\r
- mAccountMgr.setUserData(mAccount, Constants.KEY_SUPPORTS_SHARE_API, Boolean.toString(mIsSharedSupported));\r
++
if (isSaml) {\r
- mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_SUPPORTS_SAML_WEB_SSO, "TRUE"); \r
+ mAccountMgr.setUserData(mAccount, Constants.KEY_SUPPORTS_SAML_WEB_SSO, "TRUE"); \r
} else if (isOAuth) {\r
- mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_SUPPORTS_OAUTH2, "TRUE"); \r
+ mAccountMgr.setUserData(mAccount, Constants.KEY_SUPPORTS_OAUTH2, "TRUE"); \r
}\r
\r
setAccountAuthenticatorResult(intent.getExtras());\r
if (sessionCookie != null && sessionCookie.length() > 0) {\r
mAuthToken = sessionCookie;\r
\r
- GetUserNameRemoteOperation getUserOperation = new GetUserNameRemoteOperation(); \r
+ GetRemoteUserNameOperation getUserOperation = new GetRemoteUserNameOperation(); \r
OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mHostBaseUrl), getApplicationContext(), true);\r
client.setSsoSessionCookie(mAuthToken);\r
getUserOperation.execute(client, this, mHandler);\r
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.lib.resources.shares.OCShare;
+import com.owncloud.android.lib.resources.shares.ShareType;
+import com.owncloud.android.lib.resources.files.FileUtils;
import com.owncloud.android.utils.FileStorageUtils;
import com.owncloud.android.utils.Log_OC;
return share;
}
- public OCShare getShareByPath(String path) {
- Cursor c = getShareCursorForValue(ProviderTableMeta.OCSHARES_PATH, path);
+ public OCShare getFirstShareByPathAndType(String path, ShareType type) {
+ Cursor c = null;
+ if (getContentResolver() != null) {
+ c = getContentResolver().query(
+ ProviderTableMeta.CONTENT_URI_SHARE,
+ null,
+ ProviderTableMeta.OCSHARES_PATH + "=? AND "
+ + ProviderTableMeta.OCSHARES_SHARE_TYPE + "=? AND "
+ + ProviderTableMeta.OCSHARES_ACCOUNT_OWNER + "=?",
+ new String[] { path, Integer.toString(type.getValue()), mAccount.name },
+ null);
+ } else {
+ try {
+ c = getContentProviderClient().query(
+ ProviderTableMeta.CONTENT_URI_SHARE,
+ null,
+ ProviderTableMeta.OCSHARES_PATH + "=? AND "
+ + ProviderTableMeta.OCSHARES_SHARE_TYPE + "=? AND "
+ + ProviderTableMeta.OCSHARES_ACCOUNT_OWNER + "=?",
+ new String[] { path, Integer.toString(type.getValue()), mAccount.name },
+ null);
+
+ } catch (RemoteException e) {
+ Log_OC.e(TAG, "Could not get file details: " + e.getMessage());
+ c = null;
+ }
+ }
OCShare share = null;
if (c.moveToFirst()) {
share = createShareInstance(c);
import com.owncloud.android.R;
import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.lib.accounts.OwnCloudAccount;
-import com.owncloud.android.lib.network.webdav.WebdavUtils;
-import com.owncloud.android.lib.utils.OwnCloudVersion;
++
+import com.owncloud.android.lib.common.accounts.AccountUtils.Constants;
+import com.owncloud.android.lib.common.network.WebdavUtils;
++import com.owncloud.android.lib.resources.status.OwnCloudVersion;
import com.owncloud.android.services.OperationsService;
import com.owncloud.android.ui.activity.FileActivity;
- import com.owncloud.android.ui.dialog.ActivityChooserDialog;
+ import com.owncloud.android.ui.dialog.ShareLinkToDialog;
import com.owncloud.android.utils.Log_OC;
/**
String link = "https://fake.url";
Intent intent = createShareWithLinkIntent(link);
String[] packagesToExclude = new String[] { callerActivity.getPackageName() };
- DialogFragment chooserDialog = ActivityChooserDialog.newInstance(intent, packagesToExclude, file);
+ DialogFragment chooserDialog = ShareLinkToDialog.newInstance(intent, packagesToExclude, file);
chooserDialog.show(callerActivity.getSupportFragmentManager(), FTAG_CHOOSER_DIALOG);
} else {
public boolean isSharedSupported(FileActivity callerActivity) {
if (callerActivity.getAccount() != null) {
AccountManager accountManager = AccountManager.get(callerActivity);
- return Boolean.parseBoolean(accountManager.getUserData(callerActivity.getAccount(), Constants.KEY_SUPPORTS_SHARE_API));
- String version = accountManager.getUserData(callerActivity.getAccount(), OwnCloudAccount.Constants.KEY_OC_VERSION);
- String versionString = accountManager.getUserData(callerActivity.getAccount(), OwnCloudAccount.Constants.KEY_OC_VERSION_STRING);
++
++ String version = accountManager.getUserData(callerActivity.getAccount(), Constants.KEY_OC_VERSION);
++ String versionString = accountManager.getUserData(callerActivity.getAccount(), Constants.KEY_OC_VERSION_STRING);
+ return (new OwnCloudVersion(version, versionString)).isSharedSupported();
+ //return Boolean.parseBoolean(accountManager.getUserData(callerActivity.getAccount(), OwnCloudAccount.Constants.KEY_SUPPORTS_SHARE_API));
}
return false;
}
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.db.DbHandler;
import com.owncloud.android.operations.CreateFolderOperation;
-import com.owncloud.android.lib.operations.common.RemoteFile;
-import com.owncloud.android.lib.operations.common.RemoteOperation;
-import com.owncloud.android.lib.operations.common.RemoteOperationResult;
+import com.owncloud.android.lib.resources.files.RemoteFile;
+import com.owncloud.android.lib.common.operations.RemoteOperation;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult;
import com.owncloud.android.operations.UploadFileOperation;
-import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode;
-import com.owncloud.android.lib.operations.remote.ExistenceCheckRemoteOperation;
-import com.owncloud.android.lib.operations.remote.ReadRemoteFileOperation;
-import com.owncloud.android.lib.utils.FileUtils;
-import com.owncloud.android.lib.utils.OwnCloudVersion;
-import com.owncloud.android.lib.network.OnDatatransferProgressListener;
-import com.owncloud.android.lib.accounts.OwnCloudAccount;
-import com.owncloud.android.lib.network.OwnCloudClientFactory;
-import com.owncloud.android.lib.network.OwnCloudClient;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
+import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation;
+import com.owncloud.android.lib.resources.files.ReadRemoteFileOperation;
+import com.owncloud.android.lib.resources.files.FileUtils;
+import com.owncloud.android.lib.resources.status.OwnCloudVersion;
+import com.owncloud.android.lib.common.accounts.AccountUtils.Constants;
+import com.owncloud.android.lib.common.network.OnDatatransferProgressListener;
+import com.owncloud.android.lib.common.OwnCloudClientFactory;
+import com.owncloud.android.lib.common.OwnCloudClient;
import com.owncloud.android.ui.activity.FailedUploadActivity;
import com.owncloud.android.ui.activity.FileActivity;
import com.owncloud.android.ui.activity.FileDisplayActivity;
}
}
- OwnCloudVersion ocv = new OwnCloudVersion(AccountManager.get(this).getUserData(account, Constants.KEY_OC_VERSION));
+ AccountManager aMgr = AccountManager.get(this);
- String version = aMgr.getUserData(account, OwnCloudAccount.Constants.KEY_OC_VERSION);
- String versionString = aMgr.getUserData(account, OwnCloudAccount.Constants.KEY_OC_VERSION_STRING);
++ String version = aMgr.getUserData(account, Constants.KEY_OC_VERSION);
++ String versionString = aMgr.getUserData(account, Constants.KEY_OC_VERSION_STRING);
+ OwnCloudVersion ocv = new OwnCloudVersion(version, versionString);
++
boolean chunked = FileUploader.chunkedUploadIsSupported(ocv);
AbstractList<String> requestedUploads = new Vector<String>();
String uploadKey = null;
import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.lib.network.OwnCloudClient;
-import com.owncloud.android.lib.operations.common.OCShare;
-import com.owncloud.android.lib.operations.common.RemoteOperation;
-import com.owncloud.android.lib.operations.common.RemoteOperationResult;
-import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode;
-import com.owncloud.android.lib.operations.remote.GetSharesForFileRemoteOperation;
-import com.owncloud.android.lib.operations.remote.ReadRemoteFileOperation;
-import com.owncloud.android.lib.operations.remote.ReadRemoteFolderOperation;
-import com.owncloud.android.lib.operations.common.RemoteFile;
-import com.owncloud.android.lib.utils.FileUtils;
++
+import com.owncloud.android.lib.common.OwnCloudClient;
+import com.owncloud.android.lib.resources.shares.OCShare;
+import com.owncloud.android.lib.common.operations.RemoteOperation;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
+import com.owncloud.android.lib.resources.shares.GetRemoteSharesForFileOperation;
++import com.owncloud.android.lib.resources.files.FileUtils;
+import com.owncloud.android.lib.resources.files.ReadRemoteFileOperation;
+import com.owncloud.android.lib.resources.files.ReadRemoteFolderOperation;
+import com.owncloud.android.lib.resources.files.RemoteFile;
++
import com.owncloud.android.syncadapter.FileSyncAdapter;
import com.owncloud.android.utils.FileStorageUtils;
import com.owncloud.android.utils.Log_OC;
private boolean mSyncFullAccount;
/** 'True' means that Share resources bound to the files into the folder should be refreshed also */
- private boolean mRefreshShares;
+ private boolean mIsShareSupported;
/** 'True' means that the remote folder changed from last synchronization and should be fetched */
private boolean mRemoteFolderChanged;
public SynchronizeFolderOperation( OCFile folder,
long currentSyncTime,
boolean syncFullAccount,
- boolean refreshShares,
+ boolean isShareSupported,
FileDataStorageManager dataStorageManager,
Account account,
Context context ) {
mLocalFolder = folder;
mCurrentSyncTime = currentSyncTime;
mSyncFullAccount = syncFullAccount;
- mRefreshShares = refreshShares;
+ mIsShareSupported = isShareSupported;
mStorageManager = dataStorageManager;
mAccount = account;
mContext = context;
mConflictsFound = 0;
mForgottenLocalFiles.clear();
+ if (FileUtils.PATH_SEPARATOR.equals(mLocalFolder.getRemotePath()) && !mSyncFullAccount) {
+ updateOCVersion(client);
+ }
+
result = checkForChanges(client);
if (result.isSuccess()) {
sendLocalBroadcast(EVENT_SINGLE_FOLDER_CONTENTS_SYNCED, mLocalFolder.getRemotePath(), result);
}
- if (result.isSuccess() && mRefreshShares) {
+ if (result.isSuccess() && mIsShareSupported) {
RemoteOperationResult shareResult = refreshSharesForFolder(client);
if (shareResult.getCode() != ResultCode.FILE_NOT_FOUND) {
result = shareResult;
}
+
+ private void updateOCVersion(OwnCloudClient client) {
+ UpdateOCVersionOperation update = new UpdateOCVersionOperation(mAccount, mContext);
+ RemoteOperationResult result = update.execute(client);
+ if (result.isSuccess()) {
+ mIsShareSupported = update.getOCVersion().isSharedSupported();
+ }
+ }
+
+
private RemoteOperationResult checkForChanges(OwnCloudClient client) {
mRemoteFolderChanged = false;
RemoteOperationResult result = null;
RemoteOperationResult result = null;
// remote request
- GetSharesForFileRemoteOperation operation = new GetSharesForFileRemoteOperation(mLocalFolder.getRemotePath(), false, true);
+ GetRemoteSharesForFileOperation operation = new GetRemoteSharesForFileOperation(mLocalFolder.getRemotePath(), false, true);
result = operation.execute(client);
if (result.isSuccess()) {
import android.content.Context;
import com.owncloud.android.datamodel.OCFile;
-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.common.ShareType;
-import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode;
-import com.owncloud.android.lib.operations.remote.ExistenceCheckRemoteOperation;
-import com.owncloud.android.lib.operations.remote.RemoveRemoteShareOperation;
++
+import com.owncloud.android.lib.common.OwnCloudClient;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
+import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation;
+import com.owncloud.android.lib.resources.shares.OCShare;
+import com.owncloud.android.lib.resources.shares.RemoveRemoteShareOperation;
++import com.owncloud.android.lib.resources.shares.ShareType;
++
import com.owncloud.android.operations.common.SyncOperation;
import com.owncloud.android.utils.Log_OC;
RemoteOperationResult result = null;
// Get Share for a file
- OCShare share = getStorageManager().getShareByPath(mRemotePath);
+ OCShare share = getStorageManager().getFirstShareByPathAndType(mRemotePath, ShareType.PUBLIC_LINK);
if (share != null) {
RemoveRemoteShareOperation operation = new RemoveRemoteShareOperation((int) share.getIdRemoteShared());
import org.json.JSONObject;
import com.owncloud.android.authentication.AccountUtils;
-import com.owncloud.android.lib.accounts.OwnCloudAccount;
-import com.owncloud.android.lib.network.OwnCloudClient;
-import com.owncloud.android.lib.operations.common.RemoteOperation;
-import com.owncloud.android.lib.operations.common.RemoteOperationResult;
-import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode;
-import com.owncloud.android.lib.utils.OwnCloudVersion;
+import com.owncloud.android.lib.common.OwnCloudClient;
+import com.owncloud.android.lib.common.accounts.AccountUtils.Constants;
+import com.owncloud.android.lib.common.operations.RemoteOperation;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
+import com.owncloud.android.lib.resources.status.OwnCloudVersion;
import com.owncloud.android.utils.Log_OC;
import android.accounts.Account;
private Account mAccount;
private Context mContext;
+ private OwnCloudVersion mOwnCloudVersion;
public UpdateOCVersionOperation(Account account, Context context) {
mAccount = account;
mContext = context;
+ mOwnCloudVersion = null;
}
@Override
protected RemoteOperationResult run(OwnCloudClient client) {
AccountManager accountMngr = AccountManager.get(mContext);
- String statUrl = accountMngr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_BASE_URL);
+ String statUrl = accountMngr.getUserData(mAccount, Constants.KEY_OC_BASE_URL);
statUrl += AccountUtils.STATUS_PATH;
RemoteOperationResult result = null;
GetMethod get = null;
if (response != null) {
JSONObject json = new JSONObject(response);
if (json != null && json.getString("version") != null) {
- OwnCloudVersion ocver = new OwnCloudVersion(json.getString("version"));
- if (ocver.isVersionValid()) {
- accountMngr.setUserData(mAccount, Constants.KEY_OC_VERSION, ocver.toString());
- Log_OC.d(TAG, "Got new OC version " + ocver.toString());
++
+ String version = json.getString("version");
+ String versionstring = json.getString("versionstring");
+ mOwnCloudVersion = new OwnCloudVersion(version, versionstring);
+ if (mOwnCloudVersion.isVersionValid()) {
- accountMngr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_VERSION, mOwnCloudVersion.getVersion());
- accountMngr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_VERSION_STRING, mOwnCloudVersion.getVersionString());
++ accountMngr.setUserData(mAccount, Constants.KEY_OC_VERSION, mOwnCloudVersion.getVersion());
++ accountMngr.setUserData(mAccount, Constants.KEY_OC_VERSION_STRING, mOwnCloudVersion.getVersionString());
+ Log_OC.d(TAG, "Got new OC version " + mOwnCloudVersion.toString());
++
result = new RemoteOperationResult(ResultCode.OK);
} else {
return result;
}
+
+ public OwnCloudVersion getOCVersion() {
+ return mOwnCloudVersion;
+ }
+
}
import com.owncloud.android.authentication.AuthenticatorActivity;
import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.lib.accounts.OwnCloudAccount;
-import com.owncloud.android.lib.operations.common.RemoteOperationResult;
+import com.owncloud.android.lib.common.accounts.AccountUtils.Constants;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult;
import com.owncloud.android.operations.SynchronizeFolderOperation;
import com.owncloud.android.operations.UpdateOCVersionOperation;
-import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
import com.owncloud.android.ui.activity.ErrorsWhileCopyingHandlerActivity;
import com.owncloud.android.utils.DisplayUtils;
import com.owncloud.android.utils.Log_OC;
private SyncResult mSyncResult;
/** 'True' means that the server supports the share API */
- private boolean mIsSharedSupported;
+ private boolean mIsShareSupported;
/**
this.setContentProviderClient(providerClient);
this.setStorageManager(new FileDataStorageManager(account, providerClient));
- AccountManager accountManager = getAccountManager();
- mIsSharedSupported = Boolean.parseBoolean(accountManager.getUserData(account, Constants.KEY_SUPPORTS_SHARE_API));
-
try {
this.initClientForCurrentAccount();
} catch (IOException e) {
RemoteOperationResult result = update.execute(getClient());
if (!result.isSuccess()) {
mLastFailedResult = result;
+ } else {
+ mIsShareSupported = update.getOCVersion().isSharedSupported();
}
}
SynchronizeFolderOperation synchFolderOp = new SynchronizeFolderOperation( folder,
mCurrentSyncTime,
true,
- mIsSharedSupported,
+ mIsShareSupported,
getStorageManager(),
getAccount(),
getContext()