diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/Keyhelper.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/Keyhelper.kt index b0a970157..52fec9c52 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/Keyhelper.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/Keyhelper.kt @@ -202,7 +202,7 @@ constructor(ctx: Context, var sharedPreferences: SharedPreferences, var keyStore putString(PUBLIC_IV, publicIV) } } - return publicIV + return publicIV ?: "" } companion object { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt index 8b620b400..d815e0729 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt @@ -256,14 +256,14 @@ open class Task : RealmObject, Parcelable { dest.writeString(this.attribute) dest.writeString(this.type) dest.writeDouble(this.value) - dest.writeList(this.tags) + dest.writeList(this.tags as List<*>?) dest.writeLong(this.dateCreated?.time ?: -1) dest.writeInt(this.position) dest.writeValue(this.up) dest.writeValue(this.down) dest.writeByte(if (this.completed) 1.toByte() else 0.toByte()) - dest.writeList(this.checklist) - dest.writeList(this.reminders) + dest.writeList(this.checklist as List<*>?) + dest.writeList(this.reminders as List<*>?) dest.writeString(this.frequency) dest.writeValue(this.everyX) dest.writeValue(this.streak) @@ -287,7 +287,7 @@ open class Task : RealmObject, Parcelable { this.type = `in`.readString() ?: "" this.value = `in`.readDouble() this.tags = RealmList() - `in`.readList(this.tags, TaskTag::class.java.classLoader) + `in`.readList(this.tags as List<*>, TaskTag::class.java.classLoader) val tmpDateCreated = `in`.readLong() this.dateCreated = if (tmpDateCreated == -1L) null else Date(tmpDateCreated) this.position = `in`.readInt() @@ -295,9 +295,9 @@ open class Task : RealmObject, Parcelable { this.down = `in`.readValue(Boolean::class.java.classLoader) as? Boolean ?: false this.completed = `in`.readByte().toInt() != 0 this.checklist = RealmList() - `in`.readList(this.checklist, ChecklistItem::class.java.classLoader) + `in`.readList(this.checklist as List<*>, ChecklistItem::class.java.classLoader) this.reminders = RealmList() - `in`.readList(this.reminders, RemindersItem::class.java.classLoader) + `in`.readList(this.reminders as List<*>, RemindersItem::class.java.classLoader) this.frequency = `in`.readString() this.everyX = `in`.readValue(Int::class.java.classLoader) as? Int ?: 1 this.streak = `in`.readValue(Int::class.java.classLoader) as? Int ?: 0 diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt index 53ecec408..af58d9b4b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt @@ -59,7 +59,7 @@ class AvatarView : View { val canvasRect = Rect() avatarRectF?.round(canvasRect) avatarBitmap = Bitmap.createBitmap(canvasRect.width(), canvasRect.height(), Bitmap.Config.ARGB_8888) - avatarCanvas = Canvas(avatarBitmap) + avatarBitmap?.let { avatarCanvas = Canvas(it) } draw(avatarCanvas) return avatarBitmap diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt index 6aa493148..4c5ac8972 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt @@ -193,7 +193,7 @@ class FullProfileActivity : BaseActivity() { val clipboard = view.context .getSystemService(Context.CLIPBOARD_SERVICE) as? android.content.ClipboardManager val clip = android.content.ClipData.newPlainText(user.username, user.username) - clipboard?.primaryClip = clip + clipboard?.setPrimaryClip(clip) } avatarView.setAvatar(user) @@ -371,10 +371,10 @@ class FullProfileActivity : BaseActivity() { val buffs = stats.buffs addAttributeRow(getString(R.string.profile_allocated), stats.strength?.toFloat() ?: 0f, stats.intelligence?.toFloat() ?: 0f, stats.constitution?.toFloat() ?: 0f, stats.per?.toFloat() ?: 0f, true, false) - addAttributeRow(getString(R.string.buffs), buffs?.getStr() ?: 0f, buffs?.get_int() ?: 0f, buffs?.getCon() ?: 0f, buffs?.getPer() ?: 0f, true, false) + addAttributeRow(getString(R.string.buffs), buffs?.getStr() ?: 0f, buffs?.get_int() ?: 0f, buffs?.getCon() ?: 0f, buffs?.getPer() ?: 0f, roundDown = true, isSummary = false) // Summary row - addAttributeRow("", attributeStrSum, attributeIntSum, attributeConSum, attributePerSum, false, true) + addAttributeRow("", attributeStrSum, attributeIntSum, attributeConSum, attributePerSum, roundDown = false, isSummary = true) } private fun addAttributeRow(label: String, strVal: Float, intVal: Float, conVal: Float, perVal: Float, roundDown: Boolean, isSummary: Boolean) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt index c45e15dcd..b82f16098 100755 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt @@ -273,7 +273,7 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction { } if (intent.hasExtra("notificationIdentifier")) { - val identifier = intent.getStringExtra("notificationIdentifier") + val identifier = intent.getStringExtra("notificationIdentifier") ?: "" val additionalData = HashMap() additionalData["identifier"] = identifier AmplitudeManager.sendEvent("open notification", AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR, AmplitudeManager.EVENT_HITTYPE_EVENT, additionalData) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SimpleSpinnerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SimpleSpinnerAdapter.kt index 274a1556b..43912d36d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SimpleSpinnerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SimpleSpinnerAdapter.kt @@ -16,8 +16,8 @@ class SimpleSpinnerAdapter(context: Context, resource: Int) : ArrayAdapter showAddLocalAuthDialog() else -> { val clipMan = activity?.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager - clipMan?.primaryClip = ClipData.newPlainText(preference.key, preference.summary) + clipMan?.setPrimaryClip(ClipData.newPlainText(preference.key, preference.summary)) Toast.makeText(activity, "Copied " + preference.key + " to clipboard.", Toast.LENGTH_SHORT).show() } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatFragment.kt index 94823ae32..428293f44 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatFragment.kt @@ -186,7 +186,7 @@ class ChatFragment : BaseFragment(), SwipeRefreshLayout.OnRefreshListener { private fun copyMessageToClipboard(chatMessage: ChatMessage) { val clipMan = activity?.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager val messageText = ClipData.newPlainText("Chat message", chatMessage.text) - clipMan?.primaryClip = messageText + clipMan?.setPrimaryClip(messageText) val activity = activity as? MainActivity if (activity != null) { showSnackbar(activity.snackbarContainer, getString(R.string.chat_message_copied), SnackbarDisplayType.NORMAL) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.kt index e3ca1b3f8..cb2d72c76 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.kt @@ -241,7 +241,7 @@ class ChatListFragment : BaseFragment(), SwipeRefreshLayout.OnRefreshListener { private fun copyMessageToClipboard(chatMessage: ChatMessage) { val clipMan = activity?.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager val messageText = ClipData.newPlainText("Chat message", chatMessage.text) - clipMan?.primaryClip = messageText + clipMan?.setPrimaryClip(messageText) val activity = activity as? MainActivity if (activity != null) { showSnackbar(activity.snackbarContainer, getString(R.string.chat_message_copied), SnackbarDisplayType.NORMAL) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.kt index b99c38d5d..71b8690f1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.kt @@ -99,7 +99,7 @@ class GroupInformationFragment : BaseFragment() { username_textview.setOnClickListener { val clipboard = context?.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager val clip = ClipData.newPlainText(context?.getString(R.string.username), user?.username) - clipboard?.primaryClip = clip + clipboard?.setPrimaryClip(clip) val activity = activity as? MainActivity if (activity != null) { HabiticaSnackbar.showSnackbar(activity.snackbarContainer, getString(R.string.username_copied), HabiticaSnackbar.SnackbarDisplayType.NORMAL) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.kt index 4254b0dbf..735e497d0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.kt @@ -139,7 +139,7 @@ class InboxMessageListFragment : BaseMainFragment(), androidx.swiperefreshlayout private fun copyMessageToClipboard(chatMessage: ChatMessage) { val clipMan = getActivity()?.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager val messageText = ClipData.newPlainText("Chat message", chatMessage.text) - clipMan?.primaryClip = messageText + clipMan?.setPrimaryClip(messageText) val activity = getActivity() as? MainActivity if (activity != null) { showSnackbar(activity.snackbarContainer, getString(R.string.chat_message_copied), HabiticaSnackbar.SnackbarDisplayType.NORMAL) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/NPCBannerView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/NPCBannerView.kt index 36d7ca250..631956268 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/NPCBannerView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/NPCBannerView.kt @@ -18,7 +18,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.functions.Consumer import kotlin.math.roundToInt -class NPCBannerView(context: Context?, attrs: AttributeSet?) : FrameLayout(context, attrs) { +class NPCBannerView(context: Context, attrs: AttributeSet?) : FrameLayout(context, attrs) { private val backgroundView: ImageView by bindView(R.id.backgroundView) private val sceneView: SimpleDraweeView by bindView(R.id.sceneView) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/RoundedCornerLayout.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/RoundedCornerLayout.kt index 5ec567078..2834d6830 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/RoundedCornerLayout.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/RoundedCornerLayout.kt @@ -48,7 +48,7 @@ class RoundedCornerLayout : FrameLayout { maskBitmap = createMask(width, height) } - offscreenCanvas.drawBitmap(maskBitmap, 0f, 0f, maskPaint) + maskBitmap?.let { offscreenCanvas.drawBitmap(it, 0f, 0f, maskPaint) } canvas.drawBitmap(offscreenBitmap, 0f, 0f, paint) } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogQuestContent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogQuestContent.kt index 9c22c825e..caadbdec0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogQuestContent.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogQuestContent.kt @@ -11,10 +11,10 @@ import android.widget.RatingBar import android.widget.TextView import com.facebook.drawee.view.SimpleDraweeView import com.habitrpg.android.habitica.R -import com.habitrpg.android.habitica.ui.helpers.bindView import com.habitrpg.android.habitica.models.inventory.QuestContent import com.habitrpg.android.habitica.models.inventory.QuestDropItem import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils +import com.habitrpg.android.habitica.ui.helpers.bindView import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper class PurchaseDialogQuestContent : PurchaseDialogContent { @@ -51,7 +51,7 @@ class PurchaseDialogQuestContent : PurchaseDialogContent { } else { questTypeTextView.setText(R.string.collection_quest) val collectionList = questContent.collect?.map { it.count.toString() + " " + it.text } - questCollectTextView.text = TextUtils.join(", ", collectionList) + questCollectTextView.text = TextUtils.join(", ", collectionList ?: listOf()) bossHealthView.visibility = View.GONE