mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
delete bookmarks and watch history
This commit is contained in:
parent
65f9c71c44
commit
0c4a73a72f
3 changed files with 81 additions and 7 deletions
|
@ -3,6 +3,7 @@ package com.lagradost.cloudstream3.ui.home
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.DialogInterface
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
@ -11,6 +12,7 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.*
|
import android.widget.*
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.appcompat.widget.SearchView
|
import androidx.appcompat.widget.SearchView
|
||||||
import androidx.core.view.isGone
|
import androidx.core.view.isGone
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
|
@ -50,6 +52,8 @@ import com.lagradost.cloudstream3.utils.AppUtils.loadSearchResult
|
||||||
import com.lagradost.cloudstream3.utils.DataStore.getKey
|
import com.lagradost.cloudstream3.utils.DataStore.getKey
|
||||||
import com.lagradost.cloudstream3.utils.DataStore.setKey
|
import com.lagradost.cloudstream3.utils.DataStore.setKey
|
||||||
import com.lagradost.cloudstream3.utils.DataStoreHelper
|
import com.lagradost.cloudstream3.utils.DataStoreHelper
|
||||||
|
import com.lagradost.cloudstream3.utils.DataStoreHelper.deleteAllBookmarkedData
|
||||||
|
import com.lagradost.cloudstream3.utils.DataStoreHelper.deleteAllResumeStateIds
|
||||||
import com.lagradost.cloudstream3.utils.DataStoreHelper.removeLastWatched
|
import com.lagradost.cloudstream3.utils.DataStoreHelper.removeLastWatched
|
||||||
import com.lagradost.cloudstream3.utils.DataStoreHelper.setResultWatchState
|
import com.lagradost.cloudstream3.utils.DataStoreHelper.setResultWatchState
|
||||||
import com.lagradost.cloudstream3.utils.Event
|
import com.lagradost.cloudstream3.utils.Event
|
||||||
|
@ -91,6 +95,7 @@ import kotlinx.android.synthetic.main.fragment_home.home_watch_holder
|
||||||
import kotlinx.android.synthetic.main.fragment_home.home_watch_parent_item_title
|
import kotlinx.android.synthetic.main.fragment_home.home_watch_parent_item_title
|
||||||
import kotlinx.android.synthetic.main.fragment_home.result_error_text
|
import kotlinx.android.synthetic.main.fragment_home.result_error_text
|
||||||
import kotlinx.android.synthetic.main.fragment_home_tv.*
|
import kotlinx.android.synthetic.main.fragment_home_tv.*
|
||||||
|
import kotlinx.android.synthetic.main.home_episodes_expanded.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
const val HOME_BOOKMARK_VALUE_LIST = "home_bookmarked_last_list"
|
const val HOME_BOOKMARK_VALUE_LIST = "home_bookmarked_last_list"
|
||||||
|
@ -117,7 +122,7 @@ class HomeFragment : Fragment() {
|
||||||
|
|
||||||
val errorProfilePic = errorProfilePics.random()
|
val errorProfilePic = errorProfilePics.random()
|
||||||
|
|
||||||
fun Activity.loadHomepageList(item: HomePageList) {
|
fun Activity.loadHomepageList(item: HomePageList, deleteCallback: (() -> Unit)? = null) {
|
||||||
val context = this
|
val context = this
|
||||||
val bottomSheetDialogBuilder = BottomSheetDialog(context)
|
val bottomSheetDialogBuilder = BottomSheetDialog(context)
|
||||||
bottomSheetDialogBuilder.setContentView(R.layout.home_episodes_expanded)
|
bottomSheetDialogBuilder.setContentView(R.layout.home_episodes_expanded)
|
||||||
|
@ -128,10 +133,44 @@ class HomeFragment : Fragment() {
|
||||||
val titleHolder =
|
val titleHolder =
|
||||||
bottomSheetDialogBuilder.findViewById<FrameLayout>(R.id.home_expanded_drag_down)!!
|
bottomSheetDialogBuilder.findViewById<FrameLayout>(R.id.home_expanded_drag_down)!!
|
||||||
|
|
||||||
|
val delete = bottomSheetDialogBuilder.home_expanded_delete
|
||||||
|
delete.isGone = deleteCallback == null
|
||||||
|
if (deleteCallback != null) {
|
||||||
|
delete.setOnClickListener {
|
||||||
|
try {
|
||||||
|
val builder: AlertDialog.Builder = AlertDialog.Builder(context)
|
||||||
|
val dialogClickListener =
|
||||||
|
DialogInterface.OnClickListener { _, which ->
|
||||||
|
when (which) {
|
||||||
|
DialogInterface.BUTTON_POSITIVE -> {
|
||||||
|
deleteCallback.invoke()
|
||||||
|
bottomSheetDialogBuilder.dismissSafe(this)
|
||||||
|
}
|
||||||
|
DialogInterface.BUTTON_NEGATIVE -> {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.setTitle(R.string.delete_file)
|
||||||
|
.setMessage(
|
||||||
|
context.getString(R.string.delete_message).format(
|
||||||
|
item.name
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.setPositiveButton(R.string.delete, dialogClickListener)
|
||||||
|
.setNegativeButton(R.string.cancel, dialogClickListener)
|
||||||
|
.show()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
logError(e)
|
||||||
|
// ye you somehow fucked up formatting did you?
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
titleHolder.setOnClickListener {
|
titleHolder.setOnClickListener {
|
||||||
bottomSheetDialogBuilder.dismissSafe(this)
|
bottomSheetDialogBuilder.dismissSafe(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Span settings
|
// Span settings
|
||||||
recycle.spanCount = currentSpan
|
recycle.spanCount = currentSpan
|
||||||
|
|
||||||
|
@ -642,7 +681,10 @@ class HomeFragment : Fragment() {
|
||||||
getString(R.string.error_bookmarks_text), //home_bookmarked_parent_item_title?.text?.toString() ?: getString(R.string.error_bookmarks_text),
|
getString(R.string.error_bookmarks_text), //home_bookmarked_parent_item_title?.text?.toString() ?: getString(R.string.error_bookmarks_text),
|
||||||
bookmarks
|
bookmarks
|
||||||
)
|
)
|
||||||
)
|
) {
|
||||||
|
deleteAllBookmarkedData()
|
||||||
|
homeViewModel.loadStoredData(null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -665,7 +707,10 @@ class HomeFragment : Fragment() {
|
||||||
?: getString(R.string.continue_watching),
|
?: getString(R.string.continue_watching),
|
||||||
resumeWatching
|
resumeWatching
|
||||||
)
|
)
|
||||||
)
|
) {
|
||||||
|
deleteAllResumeStateIds()
|
||||||
|
homeViewModel.loadResumeWatching()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
import com.lagradost.cloudstream3.AcraApplication.Companion.getKey
|
import com.lagradost.cloudstream3.AcraApplication.Companion.getKey
|
||||||
import com.lagradost.cloudstream3.AcraApplication.Companion.getKeys
|
import com.lagradost.cloudstream3.AcraApplication.Companion.getKeys
|
||||||
import com.lagradost.cloudstream3.AcraApplication.Companion.removeKey
|
import com.lagradost.cloudstream3.AcraApplication.Companion.removeKey
|
||||||
|
import com.lagradost.cloudstream3.AcraApplication.Companion.removeKeys
|
||||||
import com.lagradost.cloudstream3.AcraApplication.Companion.setKey
|
import com.lagradost.cloudstream3.AcraApplication.Companion.setKey
|
||||||
import com.lagradost.cloudstream3.DubStatus
|
import com.lagradost.cloudstream3.DubStatus
|
||||||
import com.lagradost.cloudstream3.SearchQuality
|
import com.lagradost.cloudstream3.SearchQuality
|
||||||
|
@ -76,6 +77,18 @@ object DataStoreHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun deleteAllResumeStateIds() {
|
||||||
|
val folder = "$currentAccount/$RESULT_RESUME_WATCHING"
|
||||||
|
removeKeys(folder)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun deleteAllBookmarkedData() {
|
||||||
|
val folder1 = "$currentAccount/$RESULT_WATCH_STATE"
|
||||||
|
val folder2 = "$currentAccount/$RESULT_WATCH_STATE_DATA"
|
||||||
|
removeKeys(folder1)
|
||||||
|
removeKeys(folder2)
|
||||||
|
}
|
||||||
|
|
||||||
fun getAllResumeStateIds(): List<Int>? {
|
fun getAllResumeStateIds(): List<Int>? {
|
||||||
val folder = "$currentAccount/$RESULT_RESUME_WATCHING"
|
val folder = "$currentAccount/$RESULT_RESUME_WATCHING"
|
||||||
return getKeys(folder)?.mapNotNull {
|
return getKeys(folder)?.mapNotNull {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:background="?attr/primaryGrayBackground"
|
android:background="?attr/primaryGrayBackground"
|
||||||
|
@ -17,10 +18,25 @@
|
||||||
|
|
||||||
<requestFocus />
|
<requestFocus />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
app:tint="?attr/textColor"
|
||||||
|
android:id="@+id/home_expanded_delete"
|
||||||
|
android:layout_marginEnd="10dp"
|
||||||
|
android:layout_gravity="start|center_vertical"
|
||||||
|
android:src="@drawable/ic_baseline_delete_outline_24"
|
||||||
|
android:layout_width="30dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:contentDescription="@string/delete" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/home_expanded_text"
|
android:id="@+id/home_expanded_text"
|
||||||
style="@style/WatchHeaderText"
|
style="@style/WatchHeaderText"
|
||||||
tools:text="Trending" />
|
tools:text="Trending" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:layout_marginEnd="5dp"
|
android:layout_marginEnd="5dp"
|
||||||
|
|
Loading…
Reference in a new issue