From 903423b842e4615eebbe5535e121accca05ba471 Mon Sep 17 00:00:00 2001 From: aayush262 Date: Tue, 11 Jun 2024 20:56:59 +0530 Subject: [PATCH] fix: random things --- .../profile/activity/ActivityFragment.kt | 25 +++++++--- .../dantotsu/profile/activity/ActivityItem.kt | 7 ++- .../settings/UserInterfaceSettingsActivity.kt | 28 +++++------ .../ani/dantotsu/util/AlertDialogBuilder.kt | 46 ++++++++----------- .../main/res/layout/item_activity_reply.xml | 1 - app/src/main/res/xml/anime_preferences.xml | 5 +- 6 files changed, 56 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/profile/activity/ActivityFragment.kt b/app/src/main/java/ani/dantotsu/profile/activity/ActivityFragment.kt index b56f947d..3b9b32d0 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/ActivityFragment.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/ActivityFragment.kt @@ -48,9 +48,11 @@ class ActivityFragment : Fragment() { userId = it.getInt("userId") activityId = it.getInt("activityId") } - binding.titleBar.visibility = if (type == ActivityType.OTHER_USER) View.VISIBLE else View.GONE - binding.titleText.text = if (userId == Anilist.userid) getString(R.string.create_new_activity) else getString(R.string.write_a_message) - binding.titleImage.setOnClickListener{handleTitleImageClick() } + binding.titleBar.visibility = + if (type == ActivityType.OTHER_USER) View.VISIBLE else View.GONE + binding.titleText.text = + if (userId == Anilist.userid) getString(R.string.create_new_activity) else getString(R.string.write_a_message) + binding.titleImage.setOnClickListener { handleTitleImageClick() } binding.listRecyclerView.adapter = adapter binding.listRecyclerView.layoutManager = LinearLayoutManager(context) binding.listProgressBar.isVisible = true @@ -88,6 +90,7 @@ class ActivityFragment : Fragment() { } }) } + private fun handleTitleImageClick() { val intent = Intent(context, ActivityMarkdownCreator::class.java).apply { putExtra("type", if (userId == Anilist.userid) "activity" else "message") @@ -103,14 +106,14 @@ class ActivityFragment : Fragment() { ActivityType.OTHER_USER -> getActivities(userId = userId) ActivityType.ONE -> getActivities(activityId = activityId) } - adapter.addAll(list.map { ActivityItem(it, ::onActivityClick, adapter ,requireActivity()) }) + adapter.addAll(list.map { ActivityItem(it, adapter, ::onActivityClick) }) } private suspend fun getActivities( global: Boolean = false, userId: Int? = null, activityId: Int? = null, - filter:Boolean = false + filter: Boolean = false ): List { val res = Anilist.query.getFeed(userId, global, page, activityId)?.data?.page?.activities page += 1 @@ -133,7 +136,11 @@ class ActivityFragment : Fragment() { private fun onActivityClick(id: Int, type: String) { val intent = when (type) { "USER" -> Intent(requireContext(), ProfileActivity::class.java).putExtra("userId", id) - "MEDIA" -> Intent(requireContext(), MediaDetailsActivity::class.java).putExtra("mediaId", id) + "MEDIA" -> Intent( + requireContext(), + MediaDetailsActivity::class.java + ).putExtra("mediaId", id) + else -> return } ContextCompat.startActivity(requireContext(), intent, null) @@ -149,7 +156,11 @@ class ActivityFragment : Fragment() { companion object { enum class ActivityType { GLOBAL, USER, OTHER_USER, ONE } - fun newInstance(type: ActivityType, userId: Int? = null, activityId: Int? = null): ActivityFragment { + fun newInstance( + type: ActivityType, + userId: Int? = null, + activityId: Int? = null + ): ActivityFragment { return ActivityFragment().apply { arguments = Bundle().apply { putSerializable("type", type) diff --git a/app/src/main/java/ani/dantotsu/profile/activity/ActivityItem.kt b/app/src/main/java/ani/dantotsu/profile/activity/ActivityItem.kt index 22cf432b..26c886c9 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/ActivityItem.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/ActivityItem.kt @@ -29,9 +29,8 @@ import kotlinx.coroutines.withContext class ActivityItem( private val activity: Activity, - val clickCallback: (Int, type: String) -> Unit, private val parentAdapter: GroupieAdapter, - private val fragActivity: FragmentActivity + val clickCallback: (Int, type: String) -> Unit, ) : BindableItem() { private lateinit var binding: ItemActivityBinding @@ -54,14 +53,14 @@ class ActivityItem( } binding.activityRepliesContainer.setOnClickListener { RepliesBottomDialog.newInstance(activity.id) - .show(fragActivity.supportFragmentManager, "replies") + .show((context as FragmentActivity).supportFragmentManager, "replies") } binding.replyCount.text = activity.replyCount.toString() binding.activityReplies.setColorFilter(ContextCompat.getColor(binding.root.context, R.color.bg_opp)) binding.activityLikeContainer.setOnLongClickListener { UsersDialogFragment().apply { userList(userList) - show(fragActivity.supportFragmentManager, "dialog") + show((context as FragmentActivity).supportFragmentManager, "dialog") } true } diff --git a/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt index 8d1a9582..fd6bfde6 100644 --- a/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt @@ -14,6 +14,7 @@ import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.statusBarHeight import ani.dantotsu.themes.ThemeManager +import ani.dantotsu.util.customAlertDialog class UserInterfaceSettingsActivity : AppCompatActivity() { lateinit var binding: ActivityUserInterfaceSettingsBinding @@ -38,20 +39,21 @@ class UserInterfaceSettingsActivity : AppCompatActivity() { binding.uiSettingsHomeLayout.setOnClickListener { val set = PrefManager.getVal>(PrefName.HomeLayout).toMutableList() val views = resources.getStringArray(R.array.home_layouts) - val dialog = AlertDialog.Builder(this, R.style.MyPopup) - .setTitle(getString(R.string.home_layout_show)).apply { - setMultiChoiceItems( - views, - PrefManager.getVal>(PrefName.HomeLayout).toBooleanArray() - ) { _, i, value -> - set[i] = value + customAlertDialog() + .setTitle(getString(R.string.home_layout_show)) + .multiChoiceItems( + items = views, + checkedItems = PrefManager.getVal>(PrefName.HomeLayout).toBooleanArray() + ) { selectedItems -> + for (i in selectedItems.indices) { + set[i] = selectedItems[i] } - setPositiveButton("Done") { _, _ -> - PrefManager.setVal(PrefName.HomeLayout, set) - restartApp() - } - }.show() - dialog.window?.setDimAmount(0.8f) + } + .setPosButton("Done") { + PrefManager.setVal(PrefName.HomeLayout, set) + restartApp() + } + .show() } binding.uiSettingsSmallView.isChecked = PrefManager.getVal(PrefName.SmallView) diff --git a/app/src/main/java/ani/dantotsu/util/AlertDialogBuilder.kt b/app/src/main/java/ani/dantotsu/util/AlertDialogBuilder.kt index 14e71432..5bda5a18 100644 --- a/app/src/main/java/ani/dantotsu/util/AlertDialogBuilder.kt +++ b/app/src/main/java/ani/dantotsu/util/AlertDialogBuilder.kt @@ -1,5 +1,6 @@ package ani.dantotsu.util +import android.app.Activity import android.app.AlertDialog import android.content.Context import android.view.View @@ -21,6 +22,8 @@ class AlertDialogBuilder(private val context: Context) { private var onItemSelected: ((Int) -> Unit)? = null private var customView: View? = null private var attach: ((dialog: AlertDialog) -> Unit)? = null + private var onDismiss: (() -> Unit)? = null + fun setTitle(title: String?): AlertDialogBuilder { this.title = title return this @@ -52,11 +55,7 @@ class AlertDialogBuilder(private val context: Context) { return this } - fun setPosButton( - int: Int, - formatArgs: Int? = null, - onClick: (() -> Unit)? = null - ): AlertDialogBuilder { + fun setPosButton(int: Int, formatArgs: Int? = null, onClick: (() -> Unit)? = null): AlertDialogBuilder { this.posButtonTitle = context.getString(int, formatArgs) this.onPositiveButtonClick = onClick return this @@ -68,11 +67,7 @@ class AlertDialogBuilder(private val context: Context) { return this } - fun setNegButton( - int: Int, - formatArgs: Int? = null, - onClick: (() -> Unit)? = null - ): AlertDialogBuilder { + fun setNegButton(int: Int, formatArgs: Int? = null, onClick: (() -> Unit)? = null): AlertDialogBuilder { this.negButtonTitle = context.getString(int, formatArgs) this.onNegativeButtonClick = onClick return this @@ -84,11 +79,7 @@ class AlertDialogBuilder(private val context: Context) { return this } - fun setNeutralButton( - int: Int, - formatArgs: Int? = null, - onClick: (() -> Unit)? = null - ): AlertDialogBuilder { + fun setNeutralButton(int: Int, formatArgs: Int? = null, onClick: (() -> Unit)? = null): AlertDialogBuilder { this.neutralButtonTitle = context.getString(int, formatArgs) this.onNeutralButtonClick = onClick return this @@ -99,22 +90,19 @@ class AlertDialogBuilder(private val context: Context) { return this } - fun singleChoiceItems( - items: Array, - selectedItemIndex: Int = -1, - onItemSelected: (Int) -> Unit - ): AlertDialogBuilder { + fun onDismiss(onDismiss: (() -> Unit)? = null): AlertDialogBuilder { + this.onDismiss = onDismiss + return this + } + + fun singleChoiceItems(items: Array, selectedItemIndex: Int = -1, onItemSelected: (Int) -> Unit): AlertDialogBuilder { this.items = items this.selectedItemIndex = selectedItemIndex this.onItemSelected = onItemSelected return this } - fun multiChoiceItems( - items: Array, - checkedItems: BooleanArray? = null, - onItemsSelected: (BooleanArray) -> Unit - ): AlertDialogBuilder { + fun multiChoiceItems(items: Array, checkedItems: BooleanArray? = null, onItemsSelected: (BooleanArray) -> Unit): AlertDialogBuilder { this.items = items this.checkedItems = checkedItems ?: BooleanArray(items.size) { false } this.onItemsSelected = onItemsSelected @@ -122,6 +110,8 @@ class AlertDialogBuilder(private val context: Context) { } fun show() { + if (context is Activity && context.isFinishing) return // Ensure context is valid + val builder = AlertDialog.Builder(context, R.style.MyPopup) if (title != null) builder.setTitle(title) if (message != null) builder.setMessage(message) @@ -160,12 +150,14 @@ class AlertDialogBuilder(private val context: Context) { builder.setCancelable(false) val dialog = builder.create() attach?.invoke(dialog) + dialog.setOnDismissListener { + onDismiss?.invoke() + } dialog.window?.setDimAmount(0.8f) dialog.show() } - } fun Context.customAlertDialog(): AlertDialogBuilder { return AlertDialogBuilder(this) -} \ No newline at end of file +} diff --git a/app/src/main/res/layout/item_activity_reply.xml b/app/src/main/res/layout/item_activity_reply.xml index 0b851914..de87b96a 100644 --- a/app/src/main/res/layout/item_activity_reply.xml +++ b/app/src/main/res/layout/item_activity_reply.xml @@ -129,7 +129,6 @@ android:textSize="12sp" tools:visibility="visible" tools:ignore="HardcodedText" /> - - + z