-/* ownCloud Android client application\r
+/**\r
+ * ownCloud Android client application\r
+ *\r
+ * @author Bartek Przybylski\r
+ * @author David A. Velasco\r
+ * @author masensio\r
* Copyright (C) 2012 Bartek Przybylski\r
- * Copyright (C) 2012-2015 ownCloud Inc.\r
+ * Copyright (C) 2015 ownCloud Inc.\r
*\r
* This program is free software: you can redistribute it and/or modify\r
* it under the terms of the GNU General Public License version 2,\r
\r
/**\r
* This Activity is used to add an ownCloud account to the App\r
- * \r
- * @author Bartek Przybylski\r
- * @author David A. Velasco\r
- * @author masensio\r
*/\r
public class AuthenticatorActivity extends AccountAuthenticatorActivity\r
implements OnRemoteOperationListener, OnFocusChangeListener, OnEditorActionListener,\r
findViewById(R.id.hostUrlFrame).setVisibility(View.GONE);\r
mRefreshButton = findViewById(R.id.centeredRefreshButton);\r
}\r
- showRefreshButton(mServerIsChecked && !mServerIsValid && \r
+ showRefreshButton(mServerIsChecked && !mServerIsValid &&\r
mWaitingForOpId > Integer.MAX_VALUE);\r
mServerStatusView = (TextView) findViewById(R.id.server_status_text);\r
showServerStatus();\r
mOkButton.setEnabled(false);\r
mServerInfo = new GetServerInfoOperation.ServerInfo();\r
showRefreshButton(false);\r
- \r
+\r
if (uri.length() != 0) {\r
// Handle internationalized domain names\r
uri = DisplayUtils.convertIdn(uri, true);\r
+\r
mServerStatusText = R.string.auth_testing_connection;\r
mServerStatusIcon = R.drawable.progress_small;\r
showServerStatus();\r
Intent getServerInfoIntent = new Intent();\r
getServerInfoIntent.setAction(OperationsService.ACTION_GET_SERVER_INFO);\r
getServerInfoIntent.putExtra(\r
- OperationsService.EXTRA_SERVER_URL, \r
- normalizeUrlSuffix(uri)\r
+ OperationsService.EXTRA_SERVER_URL,\r
+ normalizeUrlSuffix(uri)\r
);\r
if (mOperationsServiceBinder != null) {\r
mWaitingForOpId = mOperationsServiceBinder.queueNewOperation(getServerInfoIntent);\r
\r
if ( mAction == ACTION_CREATE) {\r
mUsernameInput.setText(username);\r
- success = createAccount();\r
+ success = createAccount(result);\r
} else {\r
\r
if (!mUsernameInput.getText().toString().equals(username)) {\r
\r
// TODO remove, if possible\r
private String trimUrlWebdav(String url){ \r
- if(url.toLowerCase().endsWith(AccountUtils.WEBDAV_PATH_4_0)){\r
- url = url.substring(0, url.length() - AccountUtils.WEBDAV_PATH_4_0.length()); \r
- } else if(url.toLowerCase().endsWith(AccountUtils.WEBDAV_PATH_2_0)){\r
- url = url.substring(0, url.length() - AccountUtils.WEBDAV_PATH_2_0.length()); \r
- } else if (url.toLowerCase().endsWith(AccountUtils.WEBDAV_PATH_1_2)){\r
- url = url.substring(0, url.length() - AccountUtils.WEBDAV_PATH_1_2.length()); \r
- } \r
+ if(url.toLowerCase().endsWith(AccountUtils.WEBDAV_PATH_4_0_AND_LATER)){\r
+ url = url.substring(0, url.length() - AccountUtils.WEBDAV_PATH_4_0_AND_LATER.length());\r
+ }\r
return (url != null ? url : "");\r
}\r
\r
Log_OC.d(TAG, "Successful access - time to save the account");\r
\r
boolean success = false;\r
+\r
if (mAction == ACTION_CREATE) {\r
- success = createAccount();\r
+ success = createAccount(result);\r
\r
} else {\r
try {\r
* \r
* TODO Decide how to name the OAuth accounts\r
*/\r
- private boolean createAccount() {\r
+ private boolean createAccount(RemoteOperationResult authResult) {\r
/// create and save new ownCloud account\r
boolean isOAuth = AccountTypeUtils.\r
getAuthTokenTypeAccessToken(MainApp.getAccountType()).equals(mAuthTokenType);\r
boolean isSaml = AccountTypeUtils.\r
getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()).equals(mAuthTokenType);\r
\r
+ String lastPermanentLocation = authResult.getLastPermanentLocation();\r
+ if (lastPermanentLocation != null) {\r
+ mServerInfo.mBaseUrl = AccountUtils.trimWebdavSuffix(lastPermanentLocation);\r
+ }\r
+\r
Uri uri = Uri.parse(mServerInfo.mBaseUrl);\r
String username = mUsernameInput.getText().toString().trim();\r
if (isOAuth) {\r
);\r
}\r
\r
+ // include account version with the new account\r
+ mAccountMgr.setUserData(\r
+ mAccount,\r
+ Constants.KEY_OC_ACCOUNT_VERSION,\r
+ Integer.toString(AccountUtils.ACCOUNT_VERSION)\r
+ );\r
+\r
/// add the new account as default in preferences, if there is none already\r
Account defaultAccount = AccountUtils.getCurrentOwnCloudAccount(this);\r
if (defaultAccount == null) {\r
/// add user data to the new account; TODO probably can be done in the last parameter \r
// addAccountExplicitly, or in KEY_USERDATA\r
mAccountMgr.setUserData(\r
- mAccount, Constants.KEY_OC_VERSION, mServerInfo.mVersion.getVersion()\r
+ mAccount, Constants.KEY_OC_VERSION, mServerInfo.mVersion.getVersion()\r
);\r
mAccountMgr.setUserData(\r
mAccount, Constants.KEY_OC_BASE_URL, mServerInfo.mBaseUrl\r