diff --git a/app/src/main/java/com/futo/platformplayer/Settings.kt b/app/src/main/java/com/futo/platformplayer/Settings.kt index 8c8e4c0a..38380fb7 100644 --- a/app/src/main/java/com/futo/platformplayer/Settings.kt +++ b/app/src/main/java/com/futo/platformplayer/Settings.kt @@ -123,7 +123,7 @@ class Settings : FragmentedStorageFileJson() { - @FormField(R.string.home, "group", R.string.configure_how_your_home_tab_works_and_feels, 0) + @FormField(R.string.language, "group", -1, 0) var language = LanguageSettings(); @Serializable class LanguageSettings { @@ -166,6 +166,17 @@ class Settings : FragmentedStorageFileJson() { @FormField(R.string.preview_feed_items, FieldForm.TOGGLE, R.string.preview_feed_items_description, 6) var previewFeedItems: Boolean = true; + + + @FormField(R.string.clear_hidden, FieldForm.BUTTON, R.string.clear_hidden_description, 7) + @FormFieldButton(R.drawable.ic_visibility_off) + fun clearHidden() { + StateMeta.instance.removeAllHiddenCreators(); + StateMeta.instance.removeAllHiddenVideos(); + SettingsActivity.getActivity()?.let { + UIDialogs.toast(it, "Creators and videos should show up again"); + } + } } @FormField(R.string.search, "group", -1, 2) diff --git a/app/src/main/java/com/futo/platformplayer/UISlideOverlays.kt b/app/src/main/java/com/futo/platformplayer/UISlideOverlays.kt index 4a2d7ce0..791aef3f 100644 --- a/app/src/main/java/com/futo/platformplayer/UISlideOverlays.kt +++ b/app/src/main/java/com/futo/platformplayer/UISlideOverlays.kt @@ -389,8 +389,13 @@ class UISlideOverlays { val watchLater = StatePlaylists.instance.getWatchLater(); items.add(SlideUpMenuGroup(container.context, container.context.getString(R.string.actions), "actions", (listOf( - SlideUpMenuItem(container.context, R.drawable.ic_download, container.context.getString(R.string.download), container.context.getString(R.string.download_the_video), container.context.getString(R.string.download), - { showDownloadVideoOverlay(video, container, true); }, false)) + SlideUpMenuItem(container.context, R.drawable.ic_download, container.context.getString(R.string.download), container.context.getString(R.string.download_the_video), container.context.getString(R.string.download), { + showDownloadVideoOverlay(video, container, true); + }, false), + SlideUpMenuItem(container.context, R.drawable.ic_visibility_off, container.context.getString(R.string.hide_creator_from_home), "", "hide_creator", { + StateMeta.instance.addHiddenCreator(video.author.url); + UIDialogs.toast(container.context, "[${video.author.name}] hidden, you may need to reload home"); + })) + actions) )); items.add( diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/HomeFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/HomeFragment.kt index fea259af..1dcc4084 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/HomeFragment.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/HomeFragment.kt @@ -152,7 +152,7 @@ class HomeFragment : MainFragment() { } override fun filterResults(contents: List): List { - return contents.filter { it !is IPlatformVideo || !StateMeta.instance.isVideoHidden(it.url) }; + return contents.filter { !StateMeta.instance.isVideoHidden(it.url) && !StateMeta.instance.isCreatorHidden(it.author.url) }; } private fun loadResults() { diff --git a/app/src/main/java/com/futo/platformplayer/states/StateMeta.kt b/app/src/main/java/com/futo/platformplayer/states/StateMeta.kt index 2b9ae9fb..9332599b 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StateMeta.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StateMeta.kt @@ -5,15 +5,39 @@ import com.futo.platformplayer.stores.StringHashSetStorage class StateMeta { val hiddenVideos = FragmentedStorage.get("hiddenVideos"); + val hiddenCreators = FragmentedStorage.get("hiddenCreators"); fun isVideoHidden(videoUrl: String) : Boolean { return hiddenVideos.contains(videoUrl); } fun addHiddenVideo(videoUrl: String) { hiddenVideos.addDistinct(videoUrl); + hiddenVideos.save(); } fun removeHiddenVideo(videoUrl: String) { hiddenVideos.remove(videoUrl); + hiddenVideos.save(); + } + fun removeAllHiddenVideos() { + hiddenVideos.removeAll(); + hiddenVideos.save(); + } + + + fun isCreatorHidden(creatorUrl: String): Boolean { + return hiddenCreators.contains(creatorUrl); + } + fun addHiddenCreator(creatorUrl: String) { + hiddenCreators.addDistinct(creatorUrl); + hiddenCreators.save(); + } + fun removeHiddenCreator(creatorUrl: String) { + hiddenCreators.remove(creatorUrl); + hiddenCreators.save(); + } + fun removeAllHiddenCreators() { + hiddenCreators.removeAll(); + hiddenCreators.save(); } companion object { diff --git a/app/src/main/java/com/futo/platformplayer/stores/StringHashSetStorage.kt b/app/src/main/java/com/futo/platformplayer/stores/StringHashSetStorage.kt index 0f397782..d9d276fb 100644 --- a/app/src/main/java/com/futo/platformplayer/stores/StringHashSetStorage.kt +++ b/app/src/main/java/com/futo/platformplayer/stores/StringHashSetStorage.kt @@ -35,6 +35,11 @@ class StringHashSetStorage : FragmentedStorageFileJson() { values.remove(obj); } } + fun removeAll() { + synchronized(values) { + values.clear(); + } + } fun set(vararg objs: String) { synchronized(values) { values.clear(); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e326299a..7aa634f2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,6 +7,7 @@ Add to Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Add to queue + General Home Recommendations More @@ -312,6 +313,7 @@ Select a file to import, support various files (alternative to opening directly) External Storage Feed Style + Language App Language May require restart Fetch on app boot @@ -345,6 +347,8 @@ Reinstall Embedded Plugins Remove Cached Version Remove the last downloaded version + Clear Hidden + Removes all hidden creators and videos, showing them again Reset announcements Reset hidden announcements Restore Automatic Backup @@ -489,6 +493,7 @@ Page Hide Hide from Home + Hide Creator from Home Play Feed as Queue Play entire feed Queued