added DEV version to repo
This commit is contained in:
parent
1ef725ef20
commit
23e673bfdf
2135 changed files with 97033 additions and 21206 deletions
|
|
@ -1,9 +1,9 @@
|
|||
/*
|
||||
* Nextcloud - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2023 TSI-mc
|
||||
* SPDX-FileCopyrightText: 2023-2024 TSI-mc <surinder.kumar@t-systems.com>
|
||||
* SPDX-FileCopyrightText: 2019 Chris Narkiewicz <hello@ezaquarii.com>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
package com.nextcloud.client.account;
|
||||
|
||||
|
|
@ -18,10 +18,11 @@ import android.content.Intent;
|
|||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import com.nextcloud.client.onboarding.FirstRunActivity;
|
||||
import com.nextcloud.common.NextcloudClient;
|
||||
import com.nextcloud.utils.extensions.AccountExtensionsKt;
|
||||
import com.nmc.android.ui.LauncherActivity;
|
||||
import com.owncloud.android.MainApp;
|
||||
import com.owncloud.android.R;
|
||||
import com.owncloud.android.authentication.AuthenticatorActivity;
|
||||
|
|
@ -112,25 +113,78 @@ public class UserAccountManagerImpl implements UserAccountManager {
|
|||
|
||||
@Override
|
||||
public boolean exists(Account account) {
|
||||
Account[] nextcloudAccounts = getAccounts();
|
||||
try {
|
||||
if (account == null) {
|
||||
Log_OC.d(TAG, "account is null");
|
||||
return false;
|
||||
}
|
||||
|
||||
Account[] nextcloudAccounts = getAccounts();
|
||||
if (nextcloudAccounts.length == 0) {
|
||||
Log_OC.d(TAG, "nextcloudAccounts are empty");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (account.name.isEmpty()) {
|
||||
Log_OC.d(TAG, "account name is empty");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (account != null && account.name != null) {
|
||||
int lastAtPos = account.name.lastIndexOf('@');
|
||||
if (lastAtPos == -1) {
|
||||
Log_OC.d(TAG, "lastAtPos cannot be found");
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isLastAtPosInBoundsForHostAndPort = lastAtPos + 1 < account.name.length();
|
||||
if (!isLastAtPosInBoundsForHostAndPort) {
|
||||
Log_OC.d(TAG, "lastAtPos not in bounds");
|
||||
return false;
|
||||
}
|
||||
|
||||
String hostAndPort = account.name.substring(lastAtPos + 1);
|
||||
|
||||
String username = account.name.substring(0, lastAtPos);
|
||||
if (hostAndPort.isEmpty() || username.isEmpty()) {
|
||||
Log_OC.d(TAG, "hostAndPort or username is empty");
|
||||
return false;
|
||||
}
|
||||
|
||||
String otherHostAndPort;
|
||||
String otherUsername;
|
||||
|
||||
for (Account otherAccount : nextcloudAccounts) {
|
||||
// Skip null accounts or accounts with null names
|
||||
if (otherAccount == null || otherAccount.name.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
lastAtPos = otherAccount.name.lastIndexOf('@');
|
||||
|
||||
// Skip invalid account names
|
||||
if (lastAtPos == -1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
boolean isLastAtPosInBoundsForOtherHostAndPort = lastAtPos + 1 < otherAccount.name.length();
|
||||
if (!isLastAtPosInBoundsForOtherHostAndPort) {
|
||||
continue;
|
||||
}
|
||||
otherHostAndPort = otherAccount.name.substring(lastAtPos + 1);
|
||||
|
||||
otherUsername = otherAccount.name.substring(0, lastAtPos);
|
||||
|
||||
if (otherHostAndPort.equals(hostAndPort) &&
|
||||
otherUsername.equalsIgnoreCase(username)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
} catch (Exception e) {
|
||||
Log_OC.d(TAG, "Exception caught at UserAccountManagerImpl.exists(): " + e);
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -180,19 +234,20 @@ public class UserAccountManagerImpl implements UserAccountManager {
|
|||
*/
|
||||
@Nullable
|
||||
private User createUserFromAccount(@NonNull Account account) {
|
||||
if (AccountExtensionsKt.isAnonymous(account, context)) {
|
||||
Context safeContext = context != null ? context : MainApp.getAppContext();
|
||||
if (safeContext == null) {
|
||||
Log_OC.e(TAG, "Unable to obtain a valid context");
|
||||
return null;
|
||||
}
|
||||
|
||||
if (context == null) {
|
||||
Log_OC.d(TAG, "Context is null MainApp.getAppContext() used");
|
||||
context = MainApp.getAppContext();
|
||||
if (AccountExtensionsKt.isAnonymous(account, safeContext)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
OwnCloudAccount ownCloudAccount;
|
||||
try {
|
||||
ownCloudAccount = new OwnCloudAccount(account, context);
|
||||
} catch (AccountUtils.AccountNotFoundException ex) {
|
||||
ownCloudAccount = new OwnCloudAccount(account, safeContext);
|
||||
} catch (Exception ex) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
@ -212,7 +267,7 @@ public class UserAccountManagerImpl implements UserAccountManager {
|
|||
*/
|
||||
String serverAddressStr = accountManager.getUserData(account, AccountUtils.Constants.KEY_OC_BASE_URL);
|
||||
if (serverAddressStr == null || serverAddressStr.isEmpty()) {
|
||||
return AnonymousUser.fromContext(context);
|
||||
return AnonymousUser.fromContext(safeContext);
|
||||
}
|
||||
URI serverUri = URI.create(serverAddressStr); // TODO: validate
|
||||
|
||||
|
|
@ -398,6 +453,10 @@ public class UserAccountManagerImpl implements UserAccountManager {
|
|||
|
||||
@Override
|
||||
public void startAccountCreation(final Activity activity) {
|
||||
|
||||
// skipping AuthenticatorActivity redirection when user is on Launcher or FirstRun Activity
|
||||
if (activity instanceof LauncherActivity || activity instanceof FirstRunActivity) return;
|
||||
|
||||
Intent intent = new Intent(context, AuthenticatorActivity.class);
|
||||
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue