From 8208f928020e602bd9f100949bc6d2adc074ca12 Mon Sep 17 00:00:00 2001 From: Koen J Date: Thu, 5 Jun 2025 15:18:45 +0200 Subject: [PATCH] Added view license in settings. --- .../java/com/futo/platformplayer/Settings.kt | 18 ++++++++++- .../platformplayer/activities/MainActivity.kt | 3 +- .../mainactivity/MainActivityFragment.kt | 2 +- .../bottombar/MenuBottomBarFragment.kt | 4 +-- .../fragment/mainactivity/main/BuyFragment.kt | 32 +++++++++++-------- app/src/main/res/values/strings.xml | 2 ++ 6 files changed, 42 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/Settings.kt b/app/src/main/java/com/futo/platformplayer/Settings.kt index d3a24fca..560ceb0a 100644 --- a/app/src/main/java/com/futo/platformplayer/Settings.kt +++ b/app/src/main/java/com/futo/platformplayer/Settings.kt @@ -900,7 +900,23 @@ class Settings : FragmentedStorageFileJson() { @FormField(R.string.payment_status, FieldForm.READONLYTEXT, -1, 1) val paymentStatus: String get() = SettingsActivity.getActivity()?.let { if (StatePayment.instance.hasPaid) it.getString(R.string.paid) else it.getString(R.string.not_paid); } ?: "Unknown"; - @FormField(R.string.clear_payment, FieldForm.BUTTON, R.string.deletes_license_keys_from_app, 2) + @FormField(R.string.license_status, FieldForm.BUTTON, R.string.view_license_status, 2) + fun viewLicenseStatus() { + SettingsActivity.getActivity()?.let { + try { + if (StatePayment.instance.hasPaid) { + val paymentKey = StatePayment.instance.getPaymentKey() + UIDialogs.showDialogOk(it, R.drawable.ic_paid, "License activated\n" + paymentKey.first) + } else { + UIDialogs.showDialogOk(it, R.drawable.ic_paid, "No license activated") + } + } catch (e: Throwable) { + Logger.e(TAG, "Failed to show license status dialog", e) + } + } + } + + @FormField(R.string.clear_payment, FieldForm.BUTTON, R.string.deletes_license_keys_from_app, 3) fun clearPayment() { SettingsActivity.getActivity()?.let { context -> UIDialogs.showConfirmationDialog(context, "Are you sure you want to delete your license?", { diff --git a/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt b/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt index fcb10008..b46b6502 100644 --- a/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt +++ b/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt @@ -184,7 +184,7 @@ class MainActivity : AppCompatActivity, IWithResultLauncher { lateinit var _fragVideoDetail: VideoDetailFragment; //State - private val _queue: Queue> = LinkedList(); + private val _queue: LinkedList> = LinkedList(); lateinit var fragCurrent: MainFragment private set; private var _parameterCurrent: Any? = null; @@ -1184,7 +1184,6 @@ class MainActivity : AppCompatActivity, IWithResultLauncher { if (segment.isOverlay && !fragCurrent.isOverlay && withHistory)// && fragCurrent.isHistory) fragBeforeOverlay = fragCurrent; - fragCurrent = segment; _parameterCurrent = parameter; } diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/MainActivityFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/MainActivityFragment.kt index 6244004b..c9b89d82 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/MainActivityFragment.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/MainActivityFragment.kt @@ -23,7 +23,7 @@ open class MainActivityFragment : Fragment() { fun navigate(frag: MainFragment, parameter: Any? = null, withHistory: Boolean = true) { val a = activity if (a is MainActivity) - (activity as MainActivity).navigate(frag, parameter, withHistory) + (activity as MainActivity).navigate(frag, parameter, withHistory, false) else Log.e(TAG, "Failed to navigate due to activity not being a main activity.") } diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/bottombar/MenuBottomBarFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/bottombar/MenuBottomBarFragment.kt index 521fb016..c8f0d62e 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/bottombar/MenuBottomBarFragment.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/bottombar/MenuBottomBarFragment.kt @@ -330,7 +330,7 @@ class MenuBottomBarFragment : MainActivityFragment() { } if (!StatePayment.instance.hasPaid) { - newCurrentButtonDefinitions.add(ButtonDefinition(98, R.drawable.ic_paid, R.drawable.ic_paid_filled, R.string.buy, canToggle = false, { it.currentMain is BuyFragment }, { it.navigate(withHistory = false) })) + newCurrentButtonDefinitions.add(ButtonDefinition(98, R.drawable.ic_paid, R.drawable.ic_paid_filled, R.string.buy, canToggle = false, { it.currentMain is BuyFragment }, { it.navigate(withHistory = true) })) } //Add conditional buttons here, when you add a conditional button, be sure to add the register and unregister events for when the button needs to be updated @@ -396,7 +396,7 @@ class MenuBottomBarFragment : MainActivityFragment() { ButtonDefinition(9, R.drawable.ic_subscriptions, R.drawable.ic_subscriptions_filled, R.string.subscription_group_menu, canToggle = true, { it.currentMain is SubscriptionGroupListFragment }, { it.navigate(withHistory = false) }), ButtonDefinition(10, R.drawable.ic_help_square, R.drawable.ic_help_square_fill, R.string.tutorials, canToggle = true, { it.currentMain is TutorialFragment }, { it.navigate(withHistory = false) }), ButtonDefinition(7, R.drawable.ic_settings, R.drawable.ic_settings_filled, R.string.settings, canToggle = false, { false }, { - val c = it.context ?: return@ButtonDefinition; + val c = it.context ?: return@ButtonDefinition; Logger.i(TAG, "settings preventPictureInPicture()"); it.requireFragment().preventPictureInPicture(); val intent = Intent(c, SettingsActivity::class.java); diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/BuyFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/BuyFragment.kt index e79e0c13..eaa84e3e 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/BuyFragment.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/BuyFragment.kt @@ -1,6 +1,8 @@ package com.futo.platformplayer.fragment.mainactivity.main import android.os.Bundle +import android.os.Handler +import android.os.Looper import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -66,8 +68,7 @@ class BuyFragment : MainFragment() { _paymentManager = PaymentManager(StatePayment.instance, fragment, _overlayPaying) { success, _, exception -> if(success) { - UIDialogs.showDialog(context, R.drawable.ic_check, context.getString(R.string.payment_succeeded), context.getString(R.string.thanks_for_your_purchase_a_key_will_be_sent_to_your_email_after_your_payment_has_been_received), null, 0, - UIDialogs.Action("Ok", {}, UIDialogs.ActionStyle.PRIMARY)); + UIDialogs.showDialog(context, R.drawable.ic_check, context.getString(R.string.payment_succeeded), context.getString(R.string.thanks_for_your_purchase_a_key_will_be_sent_to_your_email_after_your_payment_has_been_received), null, 0, UIDialogs.Action("Ok", {}, UIDialogs.ActionStyle.PRIMARY)); _fragment.close(true); } else { @@ -115,11 +116,14 @@ class BuyFragment : MainFragment() { val licenseInput = SlideUpMenuTextInput(context, context.getString(R.string.license)); val productLicenseDialog = SlideUpMenuOverlay(context, findViewById(R.id.overlay_paid), context.getString(R.string.enter_license_key), context.getString(R.string.ok), true, licenseInput); productLicenseDialog.onOK.subscribe { + licenseInput.deactivate(); val licenseText = licenseInput.text; if (licenseText.isNullOrEmpty()) { UIDialogs.showDialogOk(context, R.drawable.ic_error_pred, context.getString(R.string.invalid_license_key)); return@subscribe; } + licenseInput.clear(); + productLicenseDialog.hide(true); _fragment.lifecycleScope.launch(Dispatchers.IO) { @@ -127,17 +131,18 @@ class BuyFragment : MainFragment() { val activationResult = StatePayment.instance.setPaymentLicense(licenseText); withContext(Dispatchers.Main) { - if(activationResult) { - licenseInput.deactivate(); - licenseInput.clear(); - productLicenseDialog.hide(true); - - UIDialogs.showDialogOk(context, R.drawable.ic_check, context.getString(R.string.your_license_key_has_been_set_an_app_restart_might_be_required)); - _fragment.close(true); - } - else - { - UIDialogs.showDialogOk(context, R.drawable.ic_error_pred, context.getString(R.string.invalid_license_key)); + try { + if(activationResult) { + UIDialogs.showDialogOk(context, R.drawable.ic_check, context.getString(R.string.your_license_key_has_been_set_an_app_restart_might_be_required)) { + _fragment.close(true) + } + } + else + { + UIDialogs.showDialogOk(context, R.drawable.ic_error_pred, context.getString(R.string.invalid_license_key)); + } + } catch (e: Throwable) { + Logger.e(TAG, "Failed to update UI after buy complete", e) } } } @@ -158,5 +163,6 @@ class BuyFragment : MainFragment() { companion object { fun newInstance() = BuyFragment().apply {} + private val TAG = "BuyFragment" } } \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c245ccac..98f542c0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -442,6 +442,8 @@ If home filters should show full plugin names or just icons Log Level Logging + License status + View license status Sync Grayjay Sync your data across multiple devices Manage Polycentric identity