From c977103aef48dead5f5d4899f57adb2dd8187fb2 Mon Sep 17 00:00:00 2001 From: desperateCoder Date: Fri, 31 Jan 2025 13:45:01 +0100 Subject: [PATCH] #1727 owner null: better error output --- .../deck/database/DataBaseAdapter.java | 4 +++ .../nextcloud/deck/database/dao/UserDao.java | 2 ++ .../deck/repository/SyncRepository.java | 27 ++++++++++++++++++- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/database/DataBaseAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/database/DataBaseAdapter.java index 1149316eb..a7db8e1d2 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/database/DataBaseAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/database/DataBaseAdapter.java @@ -875,6 +875,10 @@ public LiveData> getUsersForAccount(final long accountId) { .distinctUntilChanged(); } + public List getAllUsersDirectly() { + return db.getUserDao().getAllUsersDirectly(); + } + public LiveData> searchUserByUidOrDisplayName(final long accountId, final long boardId, final long notYetAssignedToLocalCardId, final String searchTerm) { validateSearchTerm(searchTerm); return new ReactiveLiveData<>(db.getUserDao().searchUserByUidOrDisplayName(accountId, boardId, notYetAssignedToLocalCardId, "%" + searchTerm.trim() + "%")) diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/database/dao/UserDao.java b/app/src/main/java/it/niedermann/nextcloud/deck/database/dao/UserDao.java index 10f3289ce..1729b55a3 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/database/dao/UserDao.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/database/dao/UserDao.java @@ -13,6 +13,8 @@ public interface UserDao extends GenericDao { @Query("SELECT * FROM user WHERE accountId = :accountId") LiveData> getUsersForAccount(final long accountId); + @Query("SELECT * FROM user") + List getAllUsersDirectly(); @Query("SELECT * FROM user WHERE accountId = :accountId and localId = :localId") LiveData getUserByLocalId(final long accountId, final long localId); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/repository/SyncRepository.java b/app/src/main/java/it/niedermann/nextcloud/deck/repository/SyncRepository.java index 8b55bbe00..3d150c856 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/repository/SyncRepository.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/repository/SyncRepository.java @@ -348,7 +348,8 @@ public void createBoard(@NonNull Account account, @NonNull Board board, @NonNull executor.submit(() -> { final User owner = dataBaseAdapter.getUserByUidDirectly(account.getId(), account.getUserName()); if (owner == null) { - callback.onError(new IllegalStateException("Owner is null. This can be the case if the Deck app has never before been opened in the webinterface")); + StringBuilder sb = buildOwnerNullMessage(account); + callback.onError(new IllegalStateException(sb.toString())); } else { final FullBoard fullBoard = new FullBoard(); board.setOwnerId(owner.getLocalId()); @@ -361,6 +362,30 @@ public void createBoard(@NonNull Account account, @NonNull Board board, @NonNull }); } + @NonNull + private StringBuilder buildOwnerNullMessage(@NonNull Account account) { + StringBuilder sb = new StringBuilder("Owner is null. This can be the case if the Deck app has never before been opened in the webinterface. More:"); + sb.append("\naccount_id:"); + sb.append(account.getId()); + sb.append("\nusername:"); + sb.append(account.getUserName()); + + sb.append("\nList of available Users:"); + sb.append(account.getUserName()); + List allUsers = dataBaseAdapter.getAllUsersDirectly(); + if (allUsers != null) { + for (User u : allUsers) { + sb.append("\nuid:"); + sb.append(u.getUid()); + sb.append(" | account_id:"); + sb.append(u.getAccountId()); + } + } else { + sb.append("[none]"); + } + return sb; + } + /** * Creates a new {@link Board} and adds the same {@link Label} and {@link Stack} as in the origin {@link Board}. * Owner of the target {@link Board} will be the {@link User} with the {@link Account} of {@param targetAccountId}.