Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorNiedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com>2021-04-18 14:18:30 +0300
committerGitHub <noreply@github.com>2021-04-18 14:18:30 +0300
commit05486c126a0bdfeaaf1d1230596a09b649d457c6 (patch)
tree287cce950f0b8303376e7d45b6154ead9859d234 /app
parent33c323483c88f3c7159ef3e8e079d7d2474d9a18 (diff)
#864 Show DisplayName instead of UID attribute for LDAP users (#925)
* #864 Show DisplayName instead of UID attribute for LDAP users Signed-off-by: Stefan Niedermann <info@niedermann.it> * #864 include accounts username in liveData * #864 Show DisplayName instead of UID attribute for LDAP users Signed-off-by: Stefan Niedermann <info@niedermann.it> * #864 Show DisplayName instead of UID attribute for LDAP users Signed-off-by: Stefan Niedermann <info@niedermann.it> Co-authored-by: desperateCoder <echotodevnull@gmail.com>
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/model/Account.java14
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java29
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/UserDao.java3
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherDialog.java13
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherViewHolder.java9
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/manageaccounts/ManageAccountViewHolder.java9
6 files changed, 63 insertions, 14 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/model/Account.java b/app/src/main/java/it/niedermann/nextcloud/deck/model/Account.java
index 8abcbced7..19108f353 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/model/Account.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/model/Account.java
@@ -4,6 +4,7 @@ import android.net.Uri;
import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.Px;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
@@ -34,6 +35,10 @@ public class Account implements Serializable {
@NonNull
private String userName;
+ @Ignore
+ @Nullable
+ private String userDisplayName;
+
@NonNull
private String url;
@@ -183,6 +188,15 @@ public class Account implements Serializable {
this.maintenanceEnabled = maintenanceEnabled;
}
+ @Nullable
+ public String getUserDisplayName() {
+ return userDisplayName;
+ }
+
+ public void setUserDisplayName(@Nullable String userDisplayName) {
+ this.userDisplayName = userDisplayName;
+ }
+
public String getEtag() {
return etag;
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
index 49face983..c66edbc42 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
@@ -324,7 +324,7 @@ public class DataBaseAdapter {
}
if (filter.getFilterText() != null && !filter.getFilterText().isEmpty()) {
query.append(" and (c.description like ? or c.title like ?) ");
- String filterText = "%"+filter.getFilterText()+"%";
+ String filterText = "%" + filter.getFilterText() + "%";
args.add(filterText);
args.add(filterText);
}
@@ -535,13 +535,31 @@ public class DataBaseAdapter {
db.getAccountDao().update(account);
}
+ @AnyThread
public LiveData<Account> readAccount(long id) {
- return distinctUntilChanged(db.getAccountDao().getAccountById(id));
+ return fillAccountsUserName(db.getAccountDao().getAccountById(id));
}
+ @AnyThread
public LiveData<Account> readAccount(String name) {
- return LiveDataHelper.wrapInLiveData(() -> db.getAccountDao().getAccountByNameDirectly(name));
-// return distinctUntilChanged(db.getAccountDao().getAccountByName(name));
+ return fillAccountsUserName(db.getAccountDao().getAccountByName(name));
+ }
+
+ @AnyThread
+ public LiveData<List<Account>> readAccounts() {
+ return fillAccountsListUserName(db.getAccountDao().getAllAccounts());
+ }
+
+ private LiveData<Account> fillAccountsUserName(LiveData<Account> source) {
+ return LiveDataHelper.interceptLiveData(distinctUntilChanged(source), data -> data.setUserDisplayName(db.getUserDao().getUserNameByUidDirectly(data.getId(), data.getUserName())));
+ }
+
+ private LiveData<List<Account>> fillAccountsListUserName(LiveData<List<Account>> source) {
+ return LiveDataHelper.interceptLiveData(distinctUntilChanged(source), data -> {
+ for (Account a : data) {
+ a.setUserDisplayName(db.getUserDao().getUserNameByUidDirectly(a.getId(), a.getUserName()));
+ }
+ });
}
@WorkerThread
@@ -549,9 +567,6 @@ public class DataBaseAdapter {
return db.getAccountDao().getAccountByIdDirectly(id);
}
- public LiveData<List<Account>> readAccounts() {
- return distinctUntilChanged(db.getAccountDao().getAllAccounts());
- }
public LiveData<List<Board>> getBoards(long accountId) {
return distinctUntilChanged(db.getBoardDao().getBoardsForAccount(accountId));
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/UserDao.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/UserDao.java
index 6e42cdaae..671f044b0 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/UserDao.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/UserDao.java
@@ -20,6 +20,9 @@ public interface UserDao extends GenericDao<User> {
@Query("SELECT * FROM user WHERE accountId = :accountId and uid = :uid")
LiveData<User> getUserByUid(final long accountId, final String uid);
+ @Query("SELECT u.displayname FROM user u WHERE accountId = :accountId and uid = :uid")
+ String getUserNameByUidDirectly(final long accountId, final String uid);
+
@Query("SELECT u.* FROM user u WHERE accountId = :accountId " +
" AND NOT EXISTS (" +
" select 1 from joincardwithuser ju" +
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherDialog.java
index fc6a93f8f..311857850 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherDialog.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherDialog.java
@@ -3,6 +3,7 @@ package it.niedermann.nextcloud.deck.ui.accountswitcher;
import android.app.Dialog;
import android.net.Uri;
import android.os.Bundle;
+import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
@@ -21,6 +22,7 @@ import it.niedermann.nextcloud.deck.DeckApplication;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogAccountSwitcherBinding;
+import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.ui.MainViewModel;
import it.niedermann.nextcloud.deck.ui.manageaccounts.ManageAccountsActivity;
@@ -38,12 +40,17 @@ public class AccountSwitcherDialog extends DialogFragment {
binding = DialogAccountSwitcherBinding.inflate(requireActivity().getLayoutInflater());
viewModel = new ViewModelProvider(requireActivity()).get(MainViewModel.class);
- binding.accountName.setText(viewModel.getCurrentAccount().getUserName());
- binding.accountHost.setText(Uri.parse(viewModel.getCurrentAccount().getUrl()).getHost());
+ final Account currentAccount = viewModel.getCurrentAccount();
+ binding.accountName.setText(
+ TextUtils.isEmpty(currentAccount.getUserDisplayName())
+ ? currentAccount.getUserName()
+ : currentAccount.getUserDisplayName()
+ );
+ binding.accountHost.setText(Uri.parse(currentAccount.getUrl()).getHost());
binding.check.setSelected(true);
Glide.with(requireContext())
- .load(viewModel.getCurrentAccount().getAvatarUrl(DimensionUtil.INSTANCE.dpToPx(binding.currentAccountItemAvatar.getContext(), R.dimen.avatar_size)))
+ .load(currentAccount.getAvatarUrl(DimensionUtil.INSTANCE.dpToPx(binding.currentAccountItemAvatar.getContext(), R.dimen.avatar_size)))
.placeholder(R.drawable.ic_baseline_account_circle_24)
.error(R.drawable.ic_baseline_account_circle_24)
.apply(RequestOptions.circleCropTransform())
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherViewHolder.java
index a60b6a0ea..345a2fe23 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherViewHolder.java
@@ -1,6 +1,7 @@
package it.niedermann.nextcloud.deck.ui.accountswitcher;
import android.net.Uri;
+import android.text.TextUtils;
import android.view.View;
import androidx.annotation.NonNull;
@@ -18,7 +19,7 @@ import it.niedermann.nextcloud.sso.glide.SingleSignOnUrl;
public class AccountSwitcherViewHolder extends RecyclerView.ViewHolder {
- ItemAccountChooseBinding binding;
+ private final ItemAccountChooseBinding binding;
public AccountSwitcherViewHolder(@NonNull View itemView) {
super(itemView);
@@ -26,7 +27,11 @@ public class AccountSwitcherViewHolder extends RecyclerView.ViewHolder {
}
public void bind(@NonNull Account account, @NonNull Consumer<Account> onAccountClick) {
- binding.accountName.setText(account.getUserName());
+ binding.accountName.setText(
+ TextUtils.isEmpty(account.getUserDisplayName())
+ ? account.getUserName()
+ : account.getUserDisplayName()
+ );
binding.accountHost.setText(Uri.parse(account.getUrl()).getHost());
Glide.with(itemView.getContext())
.load(new SingleSignOnUrl(account.getName(), account.getAvatarUrl(DimensionUtil.INSTANCE.dpToPx(binding.accountItemAvatar.getContext(), R.dimen.avatar_size))))
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/manageaccounts/ManageAccountViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/manageaccounts/ManageAccountViewHolder.java
index 0892eb437..1eabbd1b6 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/manageaccounts/ManageAccountViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/manageaccounts/ManageAccountViewHolder.java
@@ -1,6 +1,7 @@
package it.niedermann.nextcloud.deck.ui.manageaccounts;
import android.net.Uri;
+import android.text.TextUtils;
import android.view.View;
import androidx.annotation.NonNull;
@@ -22,7 +23,7 @@ import static android.view.View.VISIBLE;
public class ManageAccountViewHolder extends RecyclerView.ViewHolder {
- private ItemAccountChooseBinding binding;
+ private final ItemAccountChooseBinding binding;
public ManageAccountViewHolder(@NonNull View itemView) {
super(itemView);
@@ -30,7 +31,11 @@ public class ManageAccountViewHolder extends RecyclerView.ViewHolder {
}
public void bind(@NonNull Account account, @NonNull Consumer<Account> onAccountClick, @Nullable Consumer<Account> onAccountDelete, boolean isCurrentAccount) {
- binding.accountName.setText(account.getUserName());
+ binding.accountName.setText(
+ TextUtils.isEmpty(account.getUserDisplayName())
+ ? account.getUserName()
+ : account.getUserDisplayName()
+ );
binding.accountHost.setText(Uri.parse(account.getUrl()).getHost());
Glide.with(itemView.getContext())
.load(new SingleSignOnUrl(account.getName(), account.getAvatarUrl(DimensionUtil.INSTANCE.dpToPx(binding.accountItemAvatar.getContext(), R.dimen.avatar_size))))