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

github.com/stefan-niedermann/nextcloud-notes.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-05-11 15:45:22 +0300
committerNiedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com>2021-05-12 11:58:43 +0300
commitccc812dc6edb0b42976ab0199f87e804ef5b2f74 (patch)
tree636c29b9024764919b8a29d3ac5f9d4e32f5774a /app/src/main/java
parent1bc0d8c9c1a4acc653360e8479bd01e972b281d0 (diff)
#1079 Show DisplayName instead of uid attribute for LDAP users
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherDialog.java2
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherViewHolder.java2
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountActivity.java5
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountViewModel.java5
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java3
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java44
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesClient.java28
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesWorker.java1
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRepository.java8
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/AccountDao.java12
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/Account.java14
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/sync/OcsAPI.java7
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/shared/account/AccountChooserViewHolder.java2
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/shared/model/OcsResponse.java32
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/shared/model/User.java15
15 files changed, 144 insertions, 36 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherDialog.java b/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherDialog.java
index f5643d86..e1ba3e8e 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherDialog.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherDialog.java
@@ -67,7 +67,7 @@ public class AccountSwitcherDialog extends BrandedDialogFragment {
account$.observe(requireActivity(), (currentLocalAccount) -> {
account$.removeObservers(requireActivity());
- binding.accountName.setText(currentLocalAccount.getUserName());
+ binding.accountName.setText(currentLocalAccount.getDisplayName());
binding.accountHost.setText(Uri.parse(currentLocalAccount.getUrl()).getHost());
Glide.with(requireContext())
.load(currentLocalAccount.getUrl() + "/index.php/avatar/" + Uri.encode(currentLocalAccount.getUserName()) + "/64")
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherViewHolder.java b/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherViewHolder.java
index 70f8004b..852c7d40 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherViewHolder.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherViewHolder.java
@@ -25,7 +25,7 @@ public class AccountSwitcherViewHolder extends RecyclerView.ViewHolder {
}
public void bind(@NonNull Account localAccount, @NonNull Consumer<Account> onAccountClick) {
- binding.accountName.setText(localAccount.getUserName());
+ binding.accountName.setText(localAccount.getDisplayName());
binding.accountHost.setText(Uri.parse(localAccount.getUrl()).getHost());
Glide.with(itemView.getContext())
.load(new SingleSignOnUrl(localAccount.getAccountName(), localAccount.getUrl() + "/index.php/avatar/" + Uri.encode(localAccount.getUserName()) + "/64"))
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountActivity.java
index 0761306d..37a0bde6 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountActivity.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountActivity.java
@@ -1,9 +1,7 @@
package it.niedermann.owncloud.notes.importaccount;
-import android.content.Context;
import android.accounts.NetworkErrorException;
import android.content.Intent;
-import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
@@ -93,7 +91,8 @@ public class ImportAccountActivity extends AppCompatActivity {
try {
Log.i(TAG, "Loading capabilities for " + ssoAccount.name);
final Capabilities capabilities = CapabilitiesClient.getCapabilities(getApplicationContext(), ssoAccount, null);
- importAccountViewModel.addAccount(ssoAccount.url, ssoAccount.userId, ssoAccount.name, capabilities, new IResponseCallback<Account>() {
+ final String displayName = CapabilitiesClient.getDisplayName(getApplicationContext(), ssoAccount);
+ importAccountViewModel.addAccount(ssoAccount.url, ssoAccount.userId, ssoAccount.name, capabilities, displayName, new IResponseCallback<Account>() {
/**
* Update syncing when adding account
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountViewModel.java b/app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountViewModel.java
index 905a59b1..70b3b565 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountViewModel.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountViewModel.java
@@ -3,6 +3,7 @@ package it.niedermann.owncloud.notes.importaccount;
import android.app.Application;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
@@ -23,7 +24,7 @@ public class ImportAccountViewModel extends AndroidViewModel {
this.repo = NotesRepository.getInstance(application);
}
- public void addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities, @NonNull IResponseCallback<Account> callback) {
- repo.addAccount(url, username, accountName, capabilities, callback);
+ public void addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities, @Nullable String displayName, @NonNull IResponseCallback<Account> callback) {
+ repo.addAccount(url, username, accountName, capabilities, displayName, callback);
}
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java
index d889689d..26ae3548 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java
@@ -657,7 +657,8 @@ public class MainActivity extends LockedActivity implements NoteClickListener, A
try {
Log.i(TAG, "Refreshing capabilities for " + ssoAccount.name);
final Capabilities capabilities = CapabilitiesClient.getCapabilities(getApplicationContext(), ssoAccount, null);
- mainViewModel.addAccount(ssoAccount.url, ssoAccount.userId, ssoAccount.name, capabilities, new IResponseCallback<Account>() {
+ final String displayName = CapabilitiesClient.getDisplayName(getApplicationContext(), ssoAccount);
+ mainViewModel.addAccount(ssoAccount.url, ssoAccount.userId, ssoAccount.name, capabilities, displayName, new IResponseCallback<Account>() {
@Override
public void onSuccess(Account result) {
new Thread(() -> {
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java b/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java
index ec0e71c7..aa1af633 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java
@@ -20,6 +20,7 @@ import com.nextcloud.android.sso.AccountImporter;
import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException;
import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException;
import com.nextcloud.android.sso.helper.SingleAccountHelper;
+import com.nextcloud.android.sso.model.SingleSignOnAccount;
import java.util.ArrayList;
import java.util.Collection;
@@ -394,26 +395,31 @@ public class MainViewModel extends AndroidViewModel {
}
if (repo.isSyncPossible()) {
try {
- final Capabilities capabilities = CapabilitiesClient.getCapabilities(getApplication(), AccountImporter.getSingleSignOnAccount(getApplication(), localAccount.getAccountName()), localAccount.getCapabilitiesETag());
- repo.updateCapabilitiesETag(localAccount.getId(), capabilities.getETag());
- repo.updateBrand(localAccount.getId(), capabilities.getColor(), capabilities.getTextColor());
- localAccount.setColor(capabilities.getColor());
- localAccount.setTextColor(capabilities.getTextColor());
- BrandingUtil.saveBrandColors(getApplication(), localAccount.getColor(), localAccount.getTextColor());
- repo.updateApiVersion(localAccount.getId(), capabilities.getApiVersion());
- callback.onSuccess(null);
+ final SingleSignOnAccount ssoAccount = AccountImporter.getSingleSignOnAccount(getApplication(), localAccount.getAccountName());
+ try {
+ final Capabilities capabilities = CapabilitiesClient.getCapabilities(getApplication(), ssoAccount, localAccount.getCapabilitiesETag());
+ repo.updateCapabilitiesETag(localAccount.getId(), capabilities.getETag());
+ repo.updateBrand(localAccount.getId(), capabilities.getColor(), capabilities.getTextColor());
+ localAccount.setColor(capabilities.getColor());
+ localAccount.setTextColor(capabilities.getTextColor());
+ BrandingUtil.saveBrandColors(getApplication(), localAccount.getColor(), localAccount.getTextColor());
+ repo.updateApiVersion(localAccount.getId(), capabilities.getApiVersion());
+ callback.onSuccess(null);
+ } catch (Throwable t) {
+ if (t.getClass() == NextcloudHttpRequestFailedException.class || t instanceof NextcloudHttpRequestFailedException) {
+ if (((NextcloudHttpRequestFailedException) t).getStatusCode() == HTTP_NOT_MODIFIED) {
+ Log.d(TAG, "Server returned HTTP Status Code " + ((NextcloudHttpRequestFailedException) t).getStatusCode() + " - Capabilities not modified.");
+ callback.onSuccess(null);
+ return;
+ }
+ }
+ callback.onError(t);
+ } finally {
+ repo.updateDisplayName(localAccount.getId(), CapabilitiesClient.getDisplayName(getApplication(), ssoAccount));
+ }
} catch (NextcloudFilesAppAccountNotFoundException e) {
repo.deleteAccount(localAccount);
callback.onError(e);
- } catch (Throwable t) {
- if (t.getClass() == NextcloudHttpRequestFailedException.class || t instanceof NextcloudHttpRequestFailedException) {
- if (((NextcloudHttpRequestFailedException) t).getStatusCode() == HTTP_NOT_MODIFIED) {
- Log.d(TAG, "Server returned HTTP Status Code " + ((NextcloudHttpRequestFailedException) t).getStatusCode() + " - Capabilities not modified.");
- callback.onSuccess(null);
- return;
- }
- }
- callback.onError(t);
}
} else {
if (repo.isNetworkConnected() && repo.isSyncOnlyOnWifi()) {
@@ -528,8 +534,8 @@ public class MainViewModel extends AndroidViewModel {
});
}
- public void addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities, @NonNull IResponseCallback<Account> callback) {
- repo.addAccount(url, username, accountName, capabilities, callback);
+ public void addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities, @Nullable String displayName, @NonNull IResponseCallback<Account> callback) {
+ repo.addAccount(url, username, accountName, capabilities, displayName, callback);
}
public LiveData<Note> getFullNote$(long id) {
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesClient.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesClient.java
index 8afc64b8..960984ff 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesClient.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesClient.java
@@ -14,6 +14,9 @@ import java.util.Map;
import it.niedermann.owncloud.notes.persistence.sync.OcsAPI;
import it.niedermann.owncloud.notes.shared.model.Capabilities;
+import it.niedermann.owncloud.notes.shared.model.OcsResponse;
+import it.niedermann.owncloud.notes.shared.model.User;
+import retrofit2.Response;
@WorkerThread
public class CapabilitiesClient {
@@ -22,6 +25,7 @@ public class CapabilitiesClient {
private static final String HEADER_KEY_ETAG = "ETag";
+ @WorkerThread
public static Capabilities getCapabilities(@NonNull Context context, @NonNull SingleSignOnAccount ssoAccount, @Nullable String lastETag) throws Throwable {
final OcsAPI ocsAPI = ApiProvider.getOcsAPI(context, ssoAccount);
try {
@@ -36,11 +40,33 @@ public class CapabilitiesClient {
return capabilities;
} catch (RuntimeException e) {
final Throwable cause = e.getCause();
- if(cause != null) {
+ if (cause != null) {
throw cause;
} else {
throw e;
}
}
}
+
+ @WorkerThread
+ @Nullable
+ public static String getDisplayName(@NonNull Context context, @NonNull SingleSignOnAccount ssoAccount) {
+ final OcsAPI ocsAPI = ApiProvider.getOcsAPI(context, ssoAccount);
+ try {
+ final Response<OcsResponse<User>> userResponse = ocsAPI.getUser(ssoAccount.userId).execute();
+ if (userResponse.isSuccessful()) {
+ final OcsResponse<User> ocsResponse = userResponse.body();
+ if (ocsResponse != null) {
+ return ocsResponse.ocs.data.displayName;
+ } else {
+ Log.w(TAG, "ocsResponse is null");
+ }
+ } else {
+ Log.w(TAG, "Fetching user was not successful.");
+ }
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ return null;
+ }
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesWorker.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesWorker.java
index 1dff46cf..32edbed7 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesWorker.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesWorker.java
@@ -52,6 +52,7 @@ public class CapabilitiesWorker extends Worker {
repo.updateBrand(account.getId(), capabilities.getColor(), capabilities.getTextColor());
repo.updateApiVersion(account.getId(), capabilities.getApiVersion());
Log.i(TAG, capabilities.toString());
+ repo.updateDisplayName(account.getId(), CapabilitiesClient.getDisplayName(getApplicationContext(), ssoAccount));
} catch (Throwable e) {
if (e instanceof NextcloudHttpRequestFailedException) {
if (((NextcloudHttpRequestFailedException) e).getStatusCode() == HttpURLConnection.HTTP_NOT_MODIFIED) {
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRepository.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRepository.java
index 37116e4b..861987f0 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRepository.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRepository.java
@@ -161,8 +161,8 @@ public class NotesRepository {
// Accounts
@AnyThread
- public void addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities, @NonNull IResponseCallback<Account> callback) {
- final Account createdAccount = db.getAccountDao().getAccountById(db.getAccountDao().insert(new Account(url, username, accountName, capabilities)));
+ public void addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities, @Nullable String displayName, @NonNull IResponseCallback<Account> callback) {
+ final Account createdAccount = db.getAccountDao().getAccountById(db.getAccountDao().insert(new Account(url, username, accountName, displayName, capabilities)));
if (createdAccount == null) {
callback.onError(new Exception("Could not read created account."));
} else {
@@ -921,4 +921,8 @@ public class NotesRepository {
public LiveData<ArrayList<Throwable>> getSyncErrors() {
return this.syncErrors;
}
+
+ public void updateDisplayName(long id, @Nullable String displayName) {
+ db.getAccountDao().updateDisplayName(id, displayName);
+ }
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/AccountDao.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/AccountDao.java
index 085c0a16..7723e1f0 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/AccountDao.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/AccountDao.java
@@ -1,6 +1,7 @@
package it.niedermann.owncloud.notes.persistence.dao;
import androidx.annotation.ColorInt;
+import androidx.annotation.Nullable;
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Delete;
@@ -18,10 +19,10 @@ public interface AccountDao {
long insert(Account localAccount);
@Delete
- int deleteAccount(Account localAccount);
+ void deleteAccount(Account localAccount);
- String getAccounts = "SELECT * FROM Account";
- String getAccountById = "SELECT * FROM Account WHERE ID = :accountId";
+ String getAccounts = "SELECT id, url, userName, accountName, eTag, modified, apiVersion, color, textColor, capabilitiesEtag, COALESCE(displayName, userName) as displayName FROM Account";
+ String getAccountById = "SELECT id, url, userName, accountName, eTag, modified, apiVersion, color, textColor, capabilitiesEtag, COALESCE(displayName, userName) as displayName FROM Account WHERE ID = :accountId";
@Query(getAccounts)
LiveData<List<Account>> getAccounts$();
@@ -35,7 +36,7 @@ public interface AccountDao {
@Query(getAccountById)
Account getAccountById(long accountId);
- @Query("SELECT * FROM Account WHERE ACCOUNTNAME = :accountName")
+ @Query("SELECT id, url, userName, accountName, eTag, modified, apiVersion, color, textColor, capabilitiesEtag, COALESCE(displayName, userName) as displayName FROM Account WHERE ACCOUNTNAME = :accountName")
Account getAccountByName(String accountName);
@Query("SELECT COUNT(*) FROM Account")
@@ -55,4 +56,7 @@ public interface AccountDao {
@Query("UPDATE Account SET APIVERSION = :apiVersion WHERE id = :id AND ((APIVERSION IS NULL AND :apiVersion IS NOT NULL) OR (APIVERSION IS NOT NULL AND :apiVersion IS NULL) OR APIVERSION <> :apiVersion)")
int updateApiVersion(Long id, String apiVersion);
+
+ @Query("UPDATE Account SET DISPLAYNAME = :displayName WHERE id = :id")
+ void updateDisplayName(long id, @Nullable String displayName);
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/Account.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/Account.java
index 09f3fc26..07d91afc 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/Account.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/Account.java
@@ -58,15 +58,18 @@ public class Account implements Serializable {
private int textColor = Color.WHITE;
@Nullable
private String capabilitiesETag;
+ @Nullable
+ private String displayName;
public Account() {
// Default constructor
}
- public Account(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities) {
+ public Account(@NonNull String url, @NonNull String username, @NonNull String accountName, @Nullable String displayName, @NonNull Capabilities capabilities) {
setUrl(url);
setUserName(username);
setAccountName(accountName);
+ setDisplayName(displayName);
setCapabilities(capabilities);
}
@@ -189,6 +192,15 @@ public class Account implements Serializable {
this.capabilitiesETag = capabilitiesETag;
}
+ @Nullable
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public void setDisplayName(@Nullable String displayName) {
+ this.displayName = displayName;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/sync/OcsAPI.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/sync/OcsAPI.java
index 27ef57c4..d22113fa 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/sync/OcsAPI.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/sync/OcsAPI.java
@@ -5,8 +5,12 @@ import com.nextcloud.android.sso.api.ParsedResponse;
import io.reactivex.Observable;
import it.niedermann.owncloud.notes.shared.model.Capabilities;
+import it.niedermann.owncloud.notes.shared.model.OcsResponse;
+import it.niedermann.owncloud.notes.shared.model.User;
+import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Header;
+import retrofit2.http.Path;
/**
* @link <a href="https://deck.readthedocs.io/en/latest/API/">Deck REST API</a>
@@ -15,4 +19,7 @@ public interface OcsAPI {
@GET("capabilities?format=json")
Observable<ParsedResponse<Capabilities>> getCapabilities(@Header("If-None-Match") String eTag);
+
+ @GET("users/{userId}?format=json")
+ Call<OcsResponse<User>> getUser(@Path("userId") String userId);
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/account/AccountChooserViewHolder.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/account/AccountChooserViewHolder.java
index 7688b1b1..5d3d2963 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/shared/account/AccountChooserViewHolder.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/shared/account/AccountChooserViewHolder.java
@@ -31,7 +31,7 @@ public class AccountChooserViewHolder extends RecyclerView.ViewHolder {
.into(binding.accountItemAvatar);
binding.accountLayout.setOnClickListener((v) -> targetAccountConsumer.accept(localAccount));
- binding.accountName.setText(localAccount.getUserName());
+ binding.accountName.setText(localAccount.getDisplayName());
binding.accountHost.setText(Uri.parse(localAccount.getUrl()).getHost());
}
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/model/OcsResponse.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/model/OcsResponse.java
new file mode 100644
index 00000000..c47b4151
--- /dev/null
+++ b/app/src/main/java/it/niedermann/owncloud/notes/shared/model/OcsResponse.java
@@ -0,0 +1,32 @@
+package it.niedermann.owncloud.notes.shared.model;
+
+import com.google.gson.annotations.Expose;
+
+import java.io.Serializable;
+
+/**
+ * <a href="https://www.open-collaboration-services.org/">OpenCollaborationServices</a>
+ *
+ * @param <T> defines the payload of this {@link OcsResponse}.
+ */
+public class OcsResponse<T> implements Serializable {
+
+ @Expose
+ public OcsWrapper<T> ocs;
+
+ public static class OcsWrapper<T> {
+ @Expose
+ public OcsMeta meta;
+ @Expose
+ public T data;
+ }
+
+ public static class OcsMeta {
+ @Expose
+ public String status;
+ @Expose
+ public int statuscode;
+ @Expose
+ public String message;
+ }
+} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/model/User.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/model/User.java
new file mode 100644
index 00000000..0033b610
--- /dev/null
+++ b/app/src/main/java/it/niedermann/owncloud/notes/shared/model/User.java
@@ -0,0 +1,15 @@
+package it.niedermann.owncloud.notes.shared.model;
+
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
+import java.io.Serializable;
+
+public class User implements Serializable {
+ @Expose
+ @SerializedName("id")
+ public String userId;
+ @Expose
+ @SerializedName("displayname")
+ public String displayName;
+} \ No newline at end of file