Hide creators, Fix hide video,

This commit is contained in:
Kelvin 2023-11-10 19:49:09 +01:00
parent fa7f1b11f3
commit f52251e23a
6 changed files with 54 additions and 4 deletions

View file

@ -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)

View file

@ -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(

View file

@ -152,7 +152,7 @@ class HomeFragment : MainFragment() {
}
override fun filterResults(contents: List<IPlatformContent>): List<IPlatformContent> {
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() {

View file

@ -5,15 +5,39 @@ import com.futo.platformplayer.stores.StringHashSetStorage
class StateMeta {
val hiddenVideos = FragmentedStorage.get<StringHashSetStorage>("hiddenVideos");
val hiddenCreators = FragmentedStorage.get<StringHashSetStorage>("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 {

View file

@ -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();

View file

@ -7,6 +7,7 @@
<string name="add_to">Add to</string>
<string name="lorem_ipsum" translatable="false">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.</string>
<string name="add_to_queue">Add to queue</string>
<string name="general">General</string>
<string name="home">Home</string>
<string name="recommendations">Recommendations</string>
<string name="more">More</string>
@ -312,6 +313,7 @@
<string name="import_data_description">Select a file to import, support various files (alternative to opening directly)</string>
<string name="external_storage">External Storage</string>
<string name="feed_style">Feed Style</string>
<string name="language">Language</string>
<string name="app_language">App Language</string>
<string name="may_require_restart">May require restart</string>
<string name="fetch_on_app_boot">Fetch on app boot</string>
@ -345,6 +347,8 @@
<string name="reinstall_embedded_plugins">Reinstall Embedded Plugins</string>
<string name="remove_cached_version">Remove Cached Version</string>
<string name="remove_the_last_downloaded_version">Remove the last downloaded version</string>
<string name="clear_hidden">Clear Hidden</string>
<string name="clear_hidden_description">Removes all hidden creators and videos, showing them again</string>
<string name="reset_announcements">Reset announcements</string>
<string name="reset_hidden_announcements">Reset hidden announcements</string>
<string name="restore_automatic_backup">Restore Automatic Backup</string>
@ -489,6 +493,7 @@
<string name="page">Page</string>
<string name="hide">Hide</string>
<string name="hide_from_home">Hide from Home</string>
<string name="hide_creator_from_home">Hide Creator from Home</string>
<string name="play_feed_as_queue">Play Feed as Queue</string>
<string name="play_entire_feed">Play entire feed</string>
<string name="queued">Queued</string>