From 12c402f25bfbcce192c4cd6416b1882cc0b19b58 Mon Sep 17 00:00:00 2001 From: kyori19 Date: Thu, 4 Mar 2021 15:26:59 +0900 Subject: [PATCH 1/2] Avoid using displayName for displaying purpose --- .../tusky/components/conversation/ConversationEntity.kt | 2 +- .../com/keylesspalace/tusky/repository/TimelineRepository.kt | 2 +- .../main/java/com/keylesspalace/tusky/util/ViewDataUtils.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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 8ee1a284a..e35d460d4 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 @@ -167,7 +167,7 @@ fun Account.toEntity() = ConversationAccountEntity( id, username, - displayName.orEmpty(), + name, avatar, emojis ?: emptyList() ) 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 945c55d33..b3e12aeb0 100644 --- a/app/src/main/java/com/keylesspalace/tusky/repository/TimelineRepository.kt +++ b/app/src/main/java/com/keylesspalace/tusky/repository/TimelineRepository.kt @@ -298,7 +298,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 ffe64a14b..2e8e67efc 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()) From e6c2b2c8221d0e55e0774fccdf5216fcb8648836 Mon Sep 17 00:00:00 2001 From: kyori19 Date: Thu, 4 Mar 2021 22:09:54 +0900 Subject: [PATCH 2/2] [Proposal] Hide displayName to prevent mistakes --- .../com/keylesspalace/tusky/EditProfileActivity.kt | 2 +- .../java/com/keylesspalace/tusky/entity/Account.kt | 11 +++++++++-- .../tusky/viewmodel/EditProfileViewModel.kt | 12 ++++++------ 3 files changed, 16 insertions(+), 9 deletions(-) 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/entity/Account.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Account.kt index d4940fe0e..5c95579c2 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") 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, @@ -45,6 +45,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/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 +}