Skip to content

Commit a91e910

Browse files
committed
Build actions
1 parent 21cafbf commit a91e910

File tree

3 files changed

+63
-3
lines changed

3 files changed

+63
-3
lines changed

app/src/main/java/org/wikipedia/donate/DonorHistoryActivity.kt

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
package org.wikipedia.donate
22

3+
import android.app.DatePickerDialog
34
import android.content.Context
45
import android.content.Intent
56
import android.os.Bundle
7+
import android.text.format.DateUtils
68
import androidx.activity.viewModels
79
import androidx.core.view.isVisible
10+
import com.google.android.material.dialog.MaterialAlertDialogBuilder
811
import org.wikipedia.Constants
912
import org.wikipedia.R
1013
import org.wikipedia.activity.BaseActivity
1114
import org.wikipedia.databinding.ActivityDonorHistoryBinding
1215
import org.wikipedia.settings.Prefs
16+
import org.wikipedia.util.CustomTabsUtil
17+
import org.wikipedia.util.DateUtil
1318
import org.wikipedia.util.ResourceUtil
1419
import kotlin.getValue
1520

@@ -18,18 +23,49 @@ class DonorHistoryActivity : BaseActivity() {
1823
private lateinit var binding: ActivityDonorHistoryBinding
1924
private val viewModel: DonorHistoryViewModel by viewModels { DonorHistoryViewModel.Factory(intent.extras!!) }
2025

26+
private var donorStatusList = arrayOf(
27+
getString(R.string.donor_history_update_donor_status_donor),
28+
getString(R.string.donor_history_update_donor_status_not_a_donor)
29+
)
2130

2231
override fun onCreate(savedInstanceState: Bundle?) {
2332
super.onCreate(savedInstanceState)
2433
binding = ActivityDonorHistoryBinding.inflate(layoutInflater)
34+
35+
init()
2536
}
2637

2738
private fun init() {
2839

2940
binding.donationInfoContainer.isVisible = viewModel.isDonor
3041

42+
updateDonorStatusText()
43+
binding.donorStatus.setOnClickListener {
44+
showDonorStatusDialog()
45+
}
46+
47+
updateLastDonatedText()
48+
binding.lastDonationLabel.setOnClickListener {
49+
showLastDonatedDatePicker()
50+
}
51+
52+
binding.recurringDonorCheckbox.isChecked = viewModel.isRecurringDonor
53+
binding.recurringDonorCheckbox.setOnCheckedChangeListener { _, isChecked ->
54+
viewModel.isRecurringDonor = isChecked
55+
}
56+
57+
binding.donateButton.setOnClickListener {
58+
launchDonateDialog()
59+
}
60+
61+
binding.experimentLink.setOnClickListener {
62+
CustomTabsUtil.openInCustomTab(this, getString(R.string.contributions_dashboard_wiki_url))
63+
}
64+
}
65+
66+
private fun updateDonorStatusText() {
3167
var donorStatusTextColor = R.attr.primary_color
32-
val donorStatusText = if (!Prefs.hasDonorHistorySaved) {
68+
val donorStatusText = if (!Prefs.hasDonorHistorySaved && !viewModel.isDonor) {
3369
donorStatusTextColor = R.attr.placeholder_color
3470
R.string.donor_history_update_donor_status_default
3571
} else if (viewModel.isDonor) {
@@ -39,7 +75,10 @@ class DonorHistoryActivity : BaseActivity() {
3975
}
4076
binding.donorStatus.text = getString(donorStatusText)
4177
binding.donorStatus.setTextColor(ResourceUtil.getThemedColorStateList(this, donorStatusTextColor))
78+
}
4279

80+
private fun updateLastDonatedText() {
81+
binding.lastDonationDate.isVisible = viewModel.lastDonated != null
4382
var lastDonatedTextColor = R.attr.primary_color
4483
val lastDonatedText = if (viewModel.lastDonated == null) {
4584
lastDonatedTextColor = R.attr.placeholder_color
@@ -48,12 +87,31 @@ class DonorHistoryActivity : BaseActivity() {
4887
R.string.donor_history_last_donated
4988
}
5089
binding.lastDonationLabel.text = getString(lastDonatedText)
51-
binding.donorStatus.setTextColor(ResourceUtil.getThemedColorStateList(this, lastDonatedTextColor))
90+
binding.lastDonationLabel.setTextColor(ResourceUtil.getThemedColorStateList(this, lastDonatedTextColor))
91+
viewModel.lastDonated?.let {
92+
binding.lastDonationDate.text = DateUtils.getRelativeTimeSpanString(DateUtil.iso8601DateParse(it).time, System.currentTimeMillis(), 0L)
93+
}
94+
}
5295

53-
binding.recurringDonorCheckbox.isChecked = viewModel.isRecurringDonor
96+
private fun showDonorStatusDialog() {
97+
MaterialAlertDialogBuilder(this)
98+
.setSingleChoiceItems(donorStatusList, -1) { dialog, which ->
99+
viewModel.isDonor = which == 0
100+
updateDonorStatusText()
101+
dialog.dismiss()
102+
}
103+
.show()
104+
}
105+
106+
private fun showLastDonatedDatePicker() {
107+
DatePickerDialog(this, { _, year, month, day ->
108+
viewModel.lastDonated = "$year-${month + 1}-$day"
109+
updateLastDonatedText()
110+
}, 2024, 10, 10).show()
54111
}
55112

56113
companion object {
114+
57115
fun newIntent(context: Context, completedDonation: Boolean = false): Intent {
58116
return Intent(context, DonorHistoryActivity::class.java)
59117
.putExtra(Constants.ARG_BOOLEAN, completedDonation)

app/src/main/res/layout/activity_donor_history.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@
112112
</LinearLayout>
113113

114114
<com.google.android.material.button.MaterialButton
115+
android:id="@+id/donateButton"
115116
style="@style/App.Button.Text.Outline"
116117
android:layout_width="match_parent"
117118
android:layout_height="wrap_content"

app/src/main/res/values/strings_no_translate.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<string name="donate_tax_url">https://donate.wikimedia.org/wiki/Special:LandingCheck?landing_page=Tax_deductibility&amp;basic=true</string>
2222
<string name="donate_email">[email protected]</string>
2323
<string name="donor_privacy_policy_url">https://foundation.wikimedia.org/wiki/Policy:Donor_privacy_policy</string>
24+
<string name="contributions_dashboard_wiki_url">@null</string>
2425

2526
<!-- Accounts -->
2627
<string name="account_name">@string/wikimedia</string>

0 commit comments

Comments
 (0)