-Subproject commit 1f6f9bcf84837a72ef2a7a79b5af7bee6677facd
+Subproject commit c3f438220061a302c7f6fd6c32da039efaeb541e
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
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
\r
private String mHostBaseUrl;\r
private OwnCloudVersion mDiscoveredVersion;\r
- private boolean mIsSharedSupported;\r
\r
private String mAuthMessageText;\r
private int mAuthMessageVisibility, mServerStatusText, mServerStatusIcon;\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 (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
mHostUrlInput.setText(mHostBaseUrl);\r
String userName = mAccount.name.substring(0, mAccount.name.lastIndexOf('@'));\r
mUsernameInput.setText(userName);\r
- mIsSharedSupported = Boolean.getBoolean(mAccountMgr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_SUPPORTS_SHARE_API));\r
\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
\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
/// 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
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, OwnCloudAccount.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
- mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_SUPPORTS_SHARE_API, Boolean.toString(mIsSharedSupported));\r
if (isSaml) {\r
mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_SUPPORTS_SAML_WEB_SSO, "TRUE"); \r
} else if (isOAuth) {\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.services.OperationsService;
import com.owncloud.android.ui.activity.FileActivity;
import com.owncloud.android.ui.dialog.ActivityChooserDialog;
public boolean isSharedSupported(FileActivity callerActivity) {
if (callerActivity.getAccount() != null) {
AccountManager accountManager = AccountManager.get(callerActivity);
- return Boolean.parseBoolean(accountManager.getUserData(callerActivity.getAccount(), OwnCloudAccount.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);
+ return (new OwnCloudVersion(version, versionString)).isSharedSupported();
+ //return Boolean.parseBoolean(accountManager.getUserData(callerActivity.getAccount(), OwnCloudAccount.Constants.KEY_SUPPORTS_SHARE_API));
}
return false;
}
}
}
- OwnCloudVersion ocv = new OwnCloudVersion(AccountManager.get(this).getUserData(account, OwnCloudAccount.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);
+ OwnCloudVersion ocv = new OwnCloudVersion(version, versionString);
boolean chunked = FileUploader.chunkedUploadIsSupported(ocv);
AbstractList<String> requestedUploads = new Vector<String>();
String uploadKey = null;
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.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;
private Account mAccount;
private Context mContext;
+ private OwnCloudVersion mOwnCloudVersion;
public UpdateOCVersionOperation(Account account, Context context) {
mAccount = account;
mContext = context;
+ mOwnCloudVersion = 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, OwnCloudAccount.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());
+ Log_OC.d(TAG, "Got new OC version " + mOwnCloudVersion.toString());
result = new RemoteOperationResult(ResultCode.OK);
} else {
return result;
}
+
+ public OwnCloudVersion getOCVersion() {
+ return mOwnCloudVersion;
+ }
+
}
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, OwnCloudAccount.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()