diff --git a/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.kt b/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.kt index 64d952b99..44cbc116d 100644 --- a/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.kt @@ -126,7 +126,7 @@ class EditProfileActivity : BaseActivity(), Injectable { val me = profileRes.data if (me != null) { - displayNameEditText.setText(me.displayName) + displayNameEditText.setText(me.intentionallyUseDisplayName) noteEditText.setText(me.source?.note) lockedCheckBox.isChecked = me.locked diff --git a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationEntity.kt b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationEntity.kt index a6e1aa832..c899ecf60 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationEntity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationEntity.kt @@ -168,7 +168,7 @@ fun Account.toEntity() = ConversationAccountEntity( id, username, - displayName.orEmpty(), + name, avatar, emojis ?: emptyList() ) diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Account.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Account.kt index 0526e2d2a..208ecb87d 100644 --- a/app/src/main/java/com/keylesspalace/tusky/entity/Account.kt +++ b/app/src/main/java/com/keylesspalace/tusky/entity/Account.kt @@ -17,13 +17,13 @@ package com.keylesspalace.tusky.entity import android.text.Spanned import com.google.gson.annotations.SerializedName -import java.util.Date +import java.util.* data class Account( val id: String, @SerializedName("username") val localUsername: String, @SerializedName("acct", alternate = ["subject"]) val username: String, - @SerializedName("display_name") val displayName: String?, // should never be null per Api definition, but some servers break the contract + @SerializedName("display_name") private val displayName: String?, // should never be null per Api definition, but some servers break the contract val note: Spanned, val url: String, val avatar: String, @@ -46,6 +46,13 @@ data class Account( localUsername } else displayName + /** + * We have to use [localUsername] when [displayName] is empty. + * Should use [name] for displaying purposes. + */ + val intentionallyUseDisplayName: String + get() = displayName.orEmpty() + override fun hashCode(): Int { return id.hashCode() } diff --git a/app/src/main/java/com/keylesspalace/tusky/repository/TimelineRepository.kt b/app/src/main/java/com/keylesspalace/tusky/repository/TimelineRepository.kt index 837bf9fd6..3af6ce40e 100644 --- a/app/src/main/java/com/keylesspalace/tusky/repository/TimelineRepository.kt +++ b/app/src/main/java/com/keylesspalace/tusky/repository/TimelineRepository.kt @@ -313,7 +313,7 @@ fun Account.toEntity(accountId: Long, gson: Gson): TimelineAccountEntity { timelineUserId = accountId, localUsername = localUsername, username = username, - displayName = displayName.orEmpty(), + displayName = name, url = url, avatar = avatar, emojis = gson.toJson(emojis), diff --git a/app/src/main/java/com/keylesspalace/tusky/util/ViewDataUtils.java b/app/src/main/java/com/keylesspalace/tusky/util/ViewDataUtils.java index 6b75ad815..4516d360b 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/ViewDataUtils.java +++ b/app/src/main/java/com/keylesspalace/tusky/util/ViewDataUtils.java @@ -52,7 +52,7 @@ public final class ViewDataUtils { .setSensitive(visibleStatus.getSensitive()) .setIsShowingSensitiveContent(alwaysShowSensitiveMedia || !visibleStatus.getSensitive()) .setSpoilerText(visibleStatus.getSpoilerText()) - .setRebloggedByUsername(status.getReblog() == null ? null : status.getAccount().getDisplayName()) + .setRebloggedByUsername(status.getReblog() == null ? null : status.getAccount().getName()) .setUserFullName(visibleStatus.getAccount().getName()) .setVisibility(visibleStatus.getVisibility()) .setSenderId(visibleStatus.getAccount().getId()) diff --git a/app/src/main/java/com/keylesspalace/tusky/viewmodel/EditProfileViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/viewmodel/EditProfileViewModel.kt index 24a73396e..f5184b5fd 100644 --- a/app/src/main/java/com/keylesspalace/tusky/viewmodel/EditProfileViewModel.kt +++ b/app/src/main/java/com/keylesspalace/tusky/viewmodel/EditProfileViewModel.kt @@ -15,12 +15,12 @@ package com.keylesspalace.tusky.viewmodel -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel import android.content.Context import android.graphics.Bitmap import android.net.Uri import android.util.Log +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel import com.keylesspalace.tusky.EditProfileActivity.Companion.AVATAR_SIZE import com.keylesspalace.tusky.EditProfileActivity.Companion.HEADER_HEIGHT import com.keylesspalace.tusky.EditProfileActivity.Companion.HEADER_WIDTH @@ -36,10 +36,10 @@ import io.reactivex.disposables.CompositeDisposable import io.reactivex.rxkotlin.addTo import io.reactivex.schedulers.Schedulers import okhttp3.MediaType.Companion.toMediaTypeOrNull -import okhttp3.RequestBody.Companion.asRequestBody -import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.MultipartBody import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.asRequestBody +import okhttp3.RequestBody.Companion.toRequestBody import org.json.JSONException import org.json.JSONObject import retrofit2.Call @@ -145,7 +145,7 @@ class EditProfileViewModel @Inject constructor( return } - val displayName = if (oldProfileData?.displayName == newDisplayName) { + val displayName = if (oldProfileData?.intentionallyUseDisplayName == newDisplayName) { null } else { newDisplayName.toRequestBody(MultipartBody.FORM) @@ -285,4 +285,4 @@ class EditProfileViewModel @Inject constructor( } -} \ No newline at end of file +} diff --git a/app/src/main/java/net/accelf/yuito/QuoteInlineHelper.java b/app/src/main/java/net/accelf/yuito/QuoteInlineHelper.java index 698214ff5..b268bc17a 100644 --- a/app/src/main/java/net/accelf/yuito/QuoteInlineHelper.java +++ b/app/src/main/java/net/accelf/yuito/QuoteInlineHelper.java @@ -115,7 +115,7 @@ public class QuoteInlineHelper { public void setupQuoteContainer() { Account account = quoteStatus.getAccount(); - setDisplayName(account.getDisplayName().equals("") ? account.getLocalUsername() : account.getDisplayName(), account.getEmojis()); + setDisplayName(account.getName(), account.getEmojis()); setUsername(account.getUsername()); setContent(quoteStatus.getContent(), quoteStatus.getMentions(), quoteStatus.getEmojis(), listener);