mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
bunch of fixes
This commit is contained in:
parent
d82de5f333
commit
3e3d3b11f6
18 changed files with 73 additions and 48 deletions
|
|
@ -46,6 +46,7 @@ dependencies {
|
|||
implementation 'com.google.android.material:material:1.6.1'
|
||||
implementation "androidx.recyclerview:recyclerview:$recyclerview_version"
|
||||
implementation "androidx.preference:preference-ktx:$preferences_version"
|
||||
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
|
||||
|
||||
//Desugaring
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.6'
|
||||
|
|
@ -86,20 +87,18 @@ dependencies {
|
|||
androidTestImplementation 'io.kotest:kotest-assertions-core:5.3.0'
|
||||
androidTestUtil("androidx.test:orchestrator:1.4.1")
|
||||
|
||||
implementation "com.google.accompanist:accompanist-appcompat-theme:0.16.0"
|
||||
|
||||
implementation 'com.facebook.shimmer:shimmer:0.5.0'
|
||||
|
||||
//Leak Detection
|
||||
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'
|
||||
//Push Notifications
|
||||
implementation platform('com.google.firebase:firebase-bom:30.0.0')
|
||||
implementation platform("com.google.firebase:firebase-bom:$firebase_bom")
|
||||
implementation 'com.google.firebase:firebase-crashlytics-ktx'
|
||||
implementation 'com.google.firebase:firebase-core'
|
||||
implementation 'com.google.firebase:firebase-messaging-ktx'
|
||||
implementation 'com.google.firebase:firebase-config-ktx'
|
||||
implementation 'com.google.firebase:firebase-perf-ktx'
|
||||
implementation 'com.google.android.gms:play-services-ads:21.0.0'
|
||||
implementation 'com.google.android.gms:play-services-ads:21.1.0'
|
||||
implementation "com.google.android.gms:play-services-auth:$play_auth_version"
|
||||
implementation 'com.google.android.flexbox:flexbox:3.0.0'
|
||||
implementation "com.google.android.gms:play-services-wearable:$play_wearables_version"
|
||||
|
|
|
|||
|
|
@ -31,8 +31,7 @@
|
|||
android:layout_marginStart="@dimen/button_padding_small"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:padding="8dp"
|
||||
android:src="@drawable/ic_arrow_back_white_36dp"
|
||||
app:tint="@color/back_button" />
|
||||
android:src="?attr/homeAsUpIndicator" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/confirm_action_textview"
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@
|
|||
android:foreground="?selectableItemBackground"
|
||||
android:paddingTop="@dimen/spacing_small"
|
||||
android:paddingBottom="@dimen/spacing_small"/>
|
||||
<androidx.legacy.widget.Space
|
||||
<Space
|
||||
android:id="@+id/cutout_space"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="wrap_content" />
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="20dp"
|
||||
style="@style/Pill.Content"
|
||||
android:textSize="12sp"
|
||||
android:gravity="center"
|
||||
android:layout_margin="2dp"/>
|
||||
android:layout_margin="2dp"
|
||||
tools:text="Test pill" />
|
||||
|
|
@ -484,11 +484,11 @@
|
|||
<item name="android:textColor">@color/text_ternary</item>
|
||||
</style>
|
||||
|
||||
<style name="Pill.Window">
|
||||
<style name="Pill.Window" parent="Pill">
|
||||
<item name="android:background">@drawable/pill_bg_window</item>
|
||||
</style>
|
||||
|
||||
<style name="Pill.Content">
|
||||
<style name="Pill.Content" parent="Pill">
|
||||
<item name="android:background">@drawable/pill_bg_content</item>
|
||||
</style>
|
||||
<style name="Pill.Purple">
|
||||
|
|
|
|||
|
|
@ -13,13 +13,14 @@ import com.habitrpg.android.habitica.databinding.ItemPublicGuildBinding
|
|||
import com.habitrpg.android.habitica.databinding.ItemUserGuildBinding
|
||||
import com.habitrpg.android.habitica.databinding.PillTextviewBinding
|
||||
import com.habitrpg.android.habitica.extensions.inflate
|
||||
import com.habitrpg.common.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.common.habitica.helpers.NumberAbbreviator
|
||||
import com.habitrpg.android.habitica.models.social.Group
|
||||
import com.habitrpg.android.habitica.ui.adapter.BaseRecyclerViewAdapter
|
||||
import com.habitrpg.common.habitica.helpers.EmojiParser
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.common.habitica.extensions.dpToPx
|
||||
import com.habitrpg.common.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.common.habitica.helpers.EmojiParser
|
||||
import com.habitrpg.common.habitica.helpers.NumberAbbreviator
|
||||
import io.realm.Case
|
||||
import io.realm.OrderedRealmCollection
|
||||
import java.util.Locale
|
||||
|
|
@ -142,6 +143,9 @@ class GuildListAdapter : BaseRecyclerViewAdapter<Group, RecyclerView.ViewHolder>
|
|||
textView.root.setTextColor(ContextCompat.getColor(itemView.context, R.color.text_secondary))
|
||||
ContextCompat.getDrawable(itemView.context, R.drawable.pill_bg_gray)
|
||||
}
|
||||
val hPadding = 10.dpToPx(itemView.context)
|
||||
val vPadding = 3.dpToPx(itemView.context)
|
||||
textView.root.setPadding(hPadding, vPadding, hPadding, vPadding)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import android.text.TextWatcher
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.WindowManager
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import com.habitrpg.android.habitica.R
|
||||
|
|
@ -33,7 +32,6 @@ class HabiticaAccountDialog(private var thisContext: Context) : DialogFragment(R
|
|||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
|
||||
when (accountAction) {
|
||||
"reset_account" -> setResetAccountViews()
|
||||
"delete_account" -> setDeleteAccountViews()
|
||||
|
|
|
|||
|
|
@ -16,10 +16,11 @@ import com.habitrpg.android.habitica.helpers.MainNavigationController
|
|||
import com.habitrpg.android.habitica.helpers.PurchaseHandler
|
||||
import com.habitrpg.android.habitica.helpers.PurchaseTypes
|
||||
import com.habitrpg.android.habitica.proxy.AnalyticsManager
|
||||
import javax.inject.Inject
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
* Created by phillip on 27.09.17.
|
||||
|
|
@ -69,14 +70,19 @@ class InsufficientGemsDialog(context: Context, var gemPrice: Int) : Insufficient
|
|||
CoroutineScope(Dispatchers.IO).launch {
|
||||
val sku = purchaseHandler.getInAppPurchaseSKU(PurchaseTypes.Purchase4Gems)
|
||||
?: return@launch
|
||||
val purchaseTextView =
|
||||
contentView.findViewById<TextView>(R.id.purchase_textview)
|
||||
purchaseTextView.text = sku.title
|
||||
purchaseButton?.text = sku.price
|
||||
withContext(Dispatchers.Main) {
|
||||
val purchaseTextView =
|
||||
contentView.findViewById<TextView>(R.id.purchase_textview)
|
||||
purchaseTextView.text = sku.title
|
||||
purchaseButton?.text = sku.price
|
||||
|
||||
purchaseButton?.setOnClickListener {
|
||||
FirebaseAnalytics.getInstance(context).logEvent("purchased_gems_from_insufficient", bundleOf(Pair("gemPrice", gemPrice), Pair("sku", "")))
|
||||
purchaseHandler.purchase(activity, sku)
|
||||
purchaseButton?.setOnClickListener {
|
||||
FirebaseAnalytics.getInstance(context).logEvent(
|
||||
"purchased_gems_from_insufficient",
|
||||
bundleOf(Pair("gemPrice", gemPrice), Pair("sku", ""))
|
||||
)
|
||||
purchaseHandler.purchase(activity, sku)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
25
build.gradle
25
build.gradle
|
|
@ -7,22 +7,23 @@ buildscript {
|
|||
app_version_code = 0
|
||||
|
||||
|
||||
kotlin_version = '1.7.0'
|
||||
core_ktx_version = '1.8.0'
|
||||
appcompat_version = '1.4.2'
|
||||
lifecycle_version = '2.5.0'
|
||||
coroutines_version = '1.6.2'
|
||||
okhttp_version = '4.9.3'
|
||||
retrofit_version = '2.9.0'
|
||||
daggerhilt_version = '2.42'
|
||||
recyclerview_version = '1.2.1'
|
||||
amplitude_version = '3.35.1'
|
||||
preferences_version = '1.2.0'
|
||||
markwon_version = '4.6.2'
|
||||
appcompat_version = '1.4.2'
|
||||
coil_version = '2.1.0'
|
||||
core_ktx_version = '1.8.0'
|
||||
coroutines_version = '1.6.2'
|
||||
daggerhilt_version = '2.42'
|
||||
firebase_bom = '30.2.0'
|
||||
kotlin_version = '1.7.10'
|
||||
lifecycle_version = '2.5.0'
|
||||
markwon_version = '4.6.2'
|
||||
moshi_version = '1.13.0'
|
||||
okhttp_version = '4.9.3'
|
||||
play_wearables_version = '17.1.0'
|
||||
play_auth_version = '20.2.0'
|
||||
moshi_version = '1.13.0'
|
||||
preferences_version = '1.2.0'
|
||||
retrofit_version = '2.9.0'
|
||||
recyclerview_version = '1.2.1'
|
||||
}
|
||||
|
||||
repositories {
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ dependencies {
|
|||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
||||
kapt("com.squareup.moshi:moshi-kotlin-codegen:$moshi_version")
|
||||
|
||||
implementation platform('com.google.firebase:firebase-bom:30.2.0')
|
||||
implementation platform("com.google.firebase:firebase-bom:$firebase_bom")
|
||||
implementation 'com.google.firebase:firebase-crashlytics-ktx'
|
||||
implementation 'com.google.firebase:firebase-analytics-ktx'
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import com.habitrpg.wearos.habitica.ui.activities.BaseActivity
|
|||
import com.habitrpg.wearos.habitica.ui.activities.FaintActivity
|
||||
import com.habitrpg.wearos.habitica.ui.activities.MainActivity
|
||||
import com.habitrpg.wearos.habitica.ui.activities.RYAActivity
|
||||
import com.habitrpg.wearos.habitica.ui.activities.TaskResultActivity
|
||||
import dagger.hilt.android.HiltAndroidApp
|
||||
import kotlinx.coroutines.MainScope
|
||||
import kotlinx.coroutines.flow.collect
|
||||
|
|
@ -35,7 +36,7 @@ class MainApplication : Application() {
|
|||
|
||||
MainScope().launch {
|
||||
userRepository.getUser().onEach {
|
||||
if (it.isDead && BaseActivity.currentActivityClassName == MainActivity::class.java.name) {
|
||||
if (it.isDead && (BaseActivity.currentActivityClassName == MainActivity::class.java.name) || (BaseActivity.currentActivityClassName == TaskResultActivity::class.java.name)) {
|
||||
val intent = Intent(this@MainApplication, FaintActivity::class.java)
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
startActivity(intent)
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ class InputActivity: BaseActivity<ActivityInputBinding, InputViewModel>() {
|
|||
|
||||
private fun showKeyboard() {
|
||||
binding.editText.hint = binding.titleView.text
|
||||
binding.editText.setText(viewModel.existingInput)
|
||||
binding.editText.requestFocus()
|
||||
binding.editText.postDelayed(100) {
|
||||
val imm: InputMethodManager =
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import com.habitrpg.common.habitica.models.tasks.TaskType
|
|||
import com.habitrpg.common.habitica.models.tasks.streakString
|
||||
import com.habitrpg.wearos.habitica.ui.viewmodels.TaskDetailViewModel
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import java.text.DateFormat
|
||||
|
||||
@AndroidEntryPoint
|
||||
class TaskDetailActivity : BaseActivity<ActivityTaskDetailBinding, TaskDetailViewModel>() {
|
||||
|
|
@ -56,12 +57,21 @@ class TaskDetailActivity : BaseActivity<ActivityTaskDetailBinding, TaskDetailVie
|
|||
} else {
|
||||
binding.taskNotesView.isVisible = false
|
||||
}
|
||||
val streakString = task?.streakString
|
||||
if (streakString != null) {
|
||||
binding.taskStreakView.isVisible = true
|
||||
binding.taskStreakView.text = streakString
|
||||
if (task?.type == TaskType.TODO) {
|
||||
task.dueDate?.let { dueDate ->
|
||||
val format = DateFormat.getDateInstance()
|
||||
binding.taskStreakView.text = format.format(dueDate)
|
||||
binding.taskStreakView.isVisible = true
|
||||
binding.taskStreakView.setCompoundDrawables(null, null, null, null)
|
||||
}
|
||||
} else {
|
||||
binding.taskStreakView.isVisible = false
|
||||
val streakString = task?.streakString
|
||||
if (streakString != null) {
|
||||
binding.taskStreakView.isVisible = true
|
||||
binding.taskStreakView.text = streakString
|
||||
} else {
|
||||
binding.taskStreakView.isVisible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ class TaskFormActivity : BaseActivity<ActivityTaskFormBinding, TaskFormViewModel
|
|||
private fun requestInput() {
|
||||
val intent = Intent(this, InputActivity::class.java).apply {
|
||||
putExtra("title", getString(R.string.task_title_hint))
|
||||
putExtra("input", binding.editText.text.toString())
|
||||
}
|
||||
inputResult.launch(intent)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,11 +13,11 @@ open class TaskListAdapter : BaseAdapter<Any>() {
|
|||
var onTaskTapped:((Task) -> Unit)? = null
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
|
||||
if (viewType == TYPE_HEADER) {
|
||||
return if (viewType == TYPE_HEADER) {
|
||||
val inflater = parent.context.layoutInflater
|
||||
return HeaderTaskViewHolder(RowTaskHeaderBinding.inflate(inflater, parent, false).root)
|
||||
HeaderTaskViewHolder(RowTaskHeaderBinding.inflate(inflater, parent, false).root)
|
||||
} else {
|
||||
return super.onCreateViewHolder(parent, viewType)
|
||||
super.onCreateViewHolder(parent, viewType)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -50,7 +50,7 @@ open class TaskListAdapter : BaseAdapter<Any>() {
|
|||
TYPE_HEADER
|
||||
} else {
|
||||
val item = data[position - 1]
|
||||
if (item is Task) 1 else 0
|
||||
if (item is Task) 1 else TYPE_HEADER
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -17,4 +17,5 @@ class InputViewModel @Inject constructor(
|
|||
appStateManager: AppStateManager
|
||||
) : BaseViewModel(userRepository, taskRepository, exceptionBuilder, appStateManager) {
|
||||
val title = savedStateHandle.get<String>("title") ?: ""
|
||||
val existingInput = savedStateHandle.get<String>("input")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
style="@style/Text.SubHeader1"
|
||||
android:textColor="@color/watch_white"
|
||||
android:layout_marginBottom="@dimen/spacing_large"/>
|
||||
<LinearLayout
|
||||
android:id="@+id/picker_layout"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
|
@ -14,4 +14,4 @@
|
|||
android:layout_height="39dp"
|
||||
android:layout_gravity="center|bottom"
|
||||
app:layout_behavior="com.habitrpg.wearos.habitica.util.ScrollAwayBehavior"/>
|
||||
</FrameLayout>
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
Loading…
Reference in a new issue