From 6cc92e33f72d9fdebc5cac5467ec84c3d779470f Mon Sep 17 00:00:00 2001 From: Pierre Nicolas <pierre.nicolas@savoirfairelinux.com> Date: Fri, 22 Sep 2023 15:42:29 -0400 Subject: [PATCH] donation: show card only during campaign Appears Monday, November 27, 2023 12:00:00 AM Disappears Wednesday, January 31, 2024 11:59:59.999 PM GitLab: #1361 GitLab: https://git.jami.net/savoirfairelinux/jami-project/-/issues/1330 Change-Id: I6a49003ae30cb2c02654edaf13690ca7b82583bd --- .../cx/ring/account/AccountEditionFragment.kt | 10 ++++++++-- .../java/cx/ring/settings/SettingsFragment.kt | 18 +++++++++++++----- .../main/res/layout/frag_account_settings.xml | 1 + .../app/src/main/res/layout/frag_settings.xml | 2 ++ .../main/kotlin/net/jami/home/HomePresenter.kt | 5 +++++ .../kotlin/net/jami/utils/DonationUtils.kt | 13 +++++++++++++ 6 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 jami-android/libjamiclient/src/main/kotlin/net/jami/utils/DonationUtils.kt diff --git a/jami-android/app/src/main/java/cx/ring/account/AccountEditionFragment.kt b/jami-android/app/src/main/java/cx/ring/account/AccountEditionFragment.kt index cea5635e6..626f3cb5e 100644 --- a/jami-android/app/src/main/java/cx/ring/account/AccountEditionFragment.kt +++ b/jami-android/app/src/main/java/cx/ring/account/AccountEditionFragment.kt @@ -39,6 +39,7 @@ import cx.ring.utils.ActionHelper.openJamiDonateWebPage import dagger.hilt.android.AndroidEntryPoint import net.jami.account.AccountEditionPresenter import net.jami.account.AccountEditionView +import net.jami.utils.DonationUtils @AndroidEntryPoint class AccountEditionFragment : BaseSupportFragment<AccountEditionPresenter, AccountEditionView>(), @@ -50,9 +51,14 @@ class AccountEditionFragment : BaseSupportFragment<AccountEditionPresenter, Acco override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View = FragAccountSettingsBinding.inflate(inflater, container, false).apply { toolbar.setNavigationOnClickListener { activity?.onBackPressedDispatcher?.onBackPressed() } - donateButton.setOnClickListener { - openJamiDonateWebPage(requireContext()) + + if (DonationUtils.isDonationPeriod()) { + donateButton.visibility = View.VISIBLE + donateButton.setOnClickListener { + openJamiDonateWebPage(requireContext()) + } } + mBinding = this }.root diff --git a/jami-android/app/src/main/java/cx/ring/settings/SettingsFragment.kt b/jami-android/app/src/main/java/cx/ring/settings/SettingsFragment.kt index 1e99a23f2..7fd6a0674 100644 --- a/jami-android/app/src/main/java/cx/ring/settings/SettingsFragment.kt +++ b/jami-android/app/src/main/java/cx/ring/settings/SettingsFragment.kt @@ -51,6 +51,8 @@ import net.jami.model.Settings import net.jami.mvp.GenericView import net.jami.settings.SettingsPresenter import net.jami.settings.SettingsViewModel +import net.jami.utils.DonationUtils.endDonationTimeMillis +import net.jami.utils.DonationUtils.startDonationTimeMillis @AndroidEntryPoint class SettingsFragment : @@ -79,9 +81,18 @@ class SettingsFragment : override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View = FragSettingsBinding.inflate(inflater, container, false).apply { - donateButton.setOnClickListener { - openJamiDonateWebPage(requireContext()) + + if (System.currentTimeMillis() in startDonationTimeMillis until endDonationTimeMillis) { + donateButton.visibility= View.VISIBLE + settingsDonateLayout.visibility = View.VISIBLE + donateButton.setOnClickListener { + openJamiDonateWebPage(requireContext()) + } + settingsDonateSwitch.setOnCheckedChangeListener { _, _ -> + saveDonationSettings(binding!!) + } } + settingsPluginsLayout.setOnClickListener { if (JamiService.getPluginsEnabled()) { goToPluginsListSettings() @@ -106,9 +117,6 @@ class SettingsFragment : settingsVideoLayout.setOnClickListener { goToVideoSettings() } - settingsDonateSwitch.setOnCheckedChangeListener { _, _ -> - saveDonationSettings(binding!!) - } val singleItems = arrayOf( getString(R.string.notification_private), diff --git a/jami-android/app/src/main/res/layout/frag_account_settings.xml b/jami-android/app/src/main/res/layout/frag_account_settings.xml index 36ad14438..29d972d9d 100644 --- a/jami-android/app/src/main/res/layout/frag_account_settings.xml +++ b/jami-android/app/src/main/res/layout/frag_account_settings.xml @@ -49,6 +49,7 @@ android:outlineProvider="none" android:text="@string/donation_donate" android:textColor="@color/black" + android:visibility="gone" app:backgroundTint="@color/donation_card_background_color" app:cornerRadius="16dp" app:icon="@drawable/baseline_favorite_24" diff --git a/jami-android/app/src/main/res/layout/frag_settings.xml b/jami-android/app/src/main/res/layout/frag_settings.xml index ca6edf25d..dcbd10d46 100644 --- a/jami-android/app/src/main/res/layout/frag_settings.xml +++ b/jami-android/app/src/main/res/layout/frag_settings.xml @@ -54,6 +54,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. android:outlineProvider="none" android:text="@string/donation_donate" android:textColor="@color/black" + android:visibility="gone" app:backgroundTint="@color/donation_card_background_color" app:cornerRadius="16dp" app:icon="@drawable/baseline_favorite_24" @@ -225,6 +226,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. android:id="@+id/settings_donate_layout" android:layout_width="match_parent" android:layout_height="wrap_content" + android:visibility="gone" android:padding="@dimen/padding_large"> <ImageView diff --git a/jami-android/libjamiclient/src/main/kotlin/net/jami/home/HomePresenter.kt b/jami-android/libjamiclient/src/main/kotlin/net/jami/home/HomePresenter.kt index 26e0e2f4c..d55206aae 100644 --- a/jami-android/libjamiclient/src/main/kotlin/net/jami/home/HomePresenter.kt +++ b/jami-android/libjamiclient/src/main/kotlin/net/jami/home/HomePresenter.kt @@ -19,6 +19,7 @@ package net.jami.home import net.jami.model.DonationSettings import net.jami.mvp.RootPresenter import net.jami.services.PreferencesService +import net.jami.utils.DonationUtils import javax.inject.Inject class HomePresenter @Inject constructor( @@ -26,6 +27,10 @@ class HomePresenter @Inject constructor( ) : RootPresenter<HomeView>() { override fun bindView(view: HomeView) { super.bindView(view) + + if (!DonationUtils.isDonationPeriod()) + return + mCompositeDisposable.add(mPreferencesService.donationSettings().subscribe { settings -> // No need to show the reminder if user specified not to display it anymore if (!settings.donationReminderVisibility) { diff --git a/jami-android/libjamiclient/src/main/kotlin/net/jami/utils/DonationUtils.kt b/jami-android/libjamiclient/src/main/kotlin/net/jami/utils/DonationUtils.kt new file mode 100644 index 000000000..8ab0779a4 --- /dev/null +++ b/jami-android/libjamiclient/src/main/kotlin/net/jami/utils/DonationUtils.kt @@ -0,0 +1,13 @@ +package net.jami.utils + +object DonationUtils { + // First millisecond of 27 November 2023 GMT + const val startDonationTimeMillis = 1701043200000 + + // Last millisecond of 31 January 2024 GMT + const val endDonationTimeMillis = 1706745599999 + + fun isDonationPeriod(): Boolean { + return System.currentTimeMillis() in startDonationTimeMillis until endDonationTimeMillis + } +} \ No newline at end of file -- GitLab