Merge branch 'master' into comments_refactor

# Conflicts:
#	app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java
#	app/src/main/java/ml/docilealligator/infinityforreddit/utils/SharedPreferencesUtils.java
This commit is contained in:
Docile-Alligator
2026-05-22 09:30:00 -04:00
parent c4ec708a0a
commit 8e09f47e14
12 changed files with 88 additions and 20 deletions

View File

@ -11,8 +11,8 @@ android {
applicationId "ml.docilealligator.infinityforreddit"
minSdk 21
targetSdk 35
versionCode 215
versionName "8.2.0-beta1"
versionCode 217
versionName "8.2.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions {
annotationProcessorOptions {

View File

@ -104,6 +104,7 @@ import ml.docilealligator.infinityforreddit.settings.MainPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.MiscellaneousPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.NotificationPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.NsfwAndSpoilerFragment;
import ml.docilealligator.infinityforreddit.settings.PostDetailsPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.PostHistoryFragment;
import ml.docilealligator.infinityforreddit.settings.ProxyPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.SecurityPreferenceFragment;
@ -326,6 +327,8 @@ public interface AppComponent {
void inject(AppAuthLoginActivity appAuthLoginActivity);
void inject(PostDetailsPreferenceFragment postDetailsPreferenceFragment);
void inject(ViewPostDetailFragmentNew viewPostDetailFragmentNew);
void inject(ImportantInfoBottomSheetFragment importantInfoBottomSheetFragment);

View File

@ -237,8 +237,13 @@ abstract class AppModule {
@Provides
@Singleton
static PostDetailCommentsCacheManager providePostDetailCommentsCacheManager() {
return new PostDetailCommentsCacheManager();
static PostDetailCommentsCacheManager providePostDetailCommentsCacheManager(@Named("post_details") SharedPreferences postDetailsSharedPreferences) {
try {
int capacity = Integer.parseInt(postDetailsSharedPreferences.getString(SharedPreferencesUtils.COMMENT_THREAD_CONTINUITY_CAPACITY, "10"));
return new PostDetailCommentsCacheManager(new AutoRemovalLinkedHashMap<>(capacity));
} catch (NumberFormatException ignore) {
return new PostDetailCommentsCacheManager(new AutoRemovalLinkedHashMap<>(10));
}
}
@Provides

View File

@ -1,7 +1,7 @@
package ml.docilealligator.infinityforreddit
class AutoRemovalLinkedHashMap<K, V>(
val maxSize: Int
var maxSize: Int
): LinkedHashMap<K, V>() {
override fun removeEldestEntry(eldest: Map.Entry<K?, V?>?): Boolean {
return size > maxSize

View File

@ -6,7 +6,7 @@ import ml.docilealligator.infinityforreddit.post.Post
import ml.docilealligator.infinityforreddit.thing.SortType
class PostDetailCommentsCacheManager(
val cacheMap: LinkedHashMap<String, PostDetailCommentsCache> = AutoRemovalLinkedHashMap<String, PostDetailCommentsCache>(10)
val cacheMap: AutoRemovalLinkedHashMap<String, PostDetailCommentsCache>
) {
fun saveCache(
post: Post,
@ -41,4 +41,12 @@ class PostDetailCommentsCacheManager(
fun removeCache(postId: String?) {
cacheMap.remove(postId);
}
fun setCapacity(capacity: Int) {
if (capacity < 0) {
return
}
cacheMap.maxSize = capacity
}
}

View File

@ -28,6 +28,7 @@ fun CustomAlert(
) {
AlertDialog(
modifier = modifier,
containerColor = Color(LocalAppTheme.current.backgroundColor),
icon = iconDrawableRes?.let {
@Composable {
Icon(painterResource(it), contentDescription = "Example Icon")
@ -88,6 +89,7 @@ fun CustomAlert(
) {
AlertDialog(
modifier = modifier,
containerColor = Color(LocalAppTheme.current.backgroundColor),
icon = iconDrawableRes?.let {
@Composable {
Icon(painterResource(it), contentDescription = "Example Icon")

View File

@ -511,7 +511,9 @@ public abstract class PostFragmentBase extends Fragment {
}
public final void videoAutoplayChangeMutingOption(boolean isMute) {
mVideoMuteManager.setMuted(isMute);
if (mVideoMuteManager.getRememberMuteOption()) {
mVideoMuteManager.setMuted(isMute);
}
}
public boolean getIsNsfwSubreddit() {

View File

@ -1,18 +1,53 @@
package ml.docilealligator.infinityforreddit.settings;
package ml.docilealligator.infinityforreddit.settings
import android.os.Bundle;
import android.os.Bundle
import androidx.preference.EditTextPreference
import androidx.preference.Preference
import androidx.preference.Preference.SummaryProvider
import ml.docilealligator.infinityforreddit.Infinity
import ml.docilealligator.infinityforreddit.PostDetailCommentsCacheManager
import ml.docilealligator.infinityforreddit.R
import ml.docilealligator.infinityforreddit.customviews.preference.CustomFontPreferenceFragmentCompat
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils
import javax.inject.Inject
import androidx.preference.PreferenceManager;
class PostDetailsPreferenceFragment : CustomFontPreferenceFragmentCompat() {
@Inject
lateinit var mPostDetailCommentsCacheManager: PostDetailCommentsCacheManager
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.customviews.preference.CustomFontPreferenceFragmentCompat;
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
val preferenceManager = getPreferenceManager()
preferenceManager.setSharedPreferencesName(SharedPreferencesUtils.POST_DETAILS_SHARED_PREFERENCES_FILE)
setPreferencesFromResource(R.xml.post_details_preferences, rootKey)
public class PostDetailsPreferenceFragment extends CustomFontPreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
PreferenceManager preferenceManager = getPreferenceManager();
preferenceManager.setSharedPreferencesName(SharedPreferencesUtils.POST_DETAILS_SHARED_PREFERENCES_FILE);
setPreferencesFromResource(R.xml.post_details_preferences, rootKey);
(mActivity.application as Infinity).appComponent.inject(this)
val commentThreadContinuityCapacityEditTextPreference =
findPreference<EditTextPreference?>(SharedPreferencesUtils.COMMENT_THREAD_CONTINUITY_CAPACITY)
if (commentThreadContinuityCapacityEditTextPreference != null) {
commentThreadContinuityCapacityEditTextPreference.onPreferenceChangeListener =
Preference.OnPreferenceChangeListener { _, newValue ->
try {
val value = (newValue as String?)?.toInt() ?: -1
if (value < 0) {
false
} else {
mPostDetailCommentsCacheManager.setCapacity(value)
true
}
} catch (_: NumberFormatException) {
false
}
}
commentThreadContinuityCapacityEditTextPreference.setSummaryProvider(
SummaryProvider { _: Preference? ->
getString(
R.string.settings_comment_thread_continuity_capacity_summary,
commentThreadContinuityCapacityEditTextPreference.text
)
}
)
}
}
}
}

View File

@ -237,6 +237,7 @@ public class SharedPreferencesUtils {
public static final String SWIPE_RIGHT_TO_GO_BACK_SENSITIVITY = "swipe_right_to_go_back_sensitivity";
public static final String SWIPE_ACTION_SENSITIVITY_IN_COMMENTS = "swipe_action_sensitivity_in_comments";
public static final String NAVIGATION_DRAWER_SWIPE_AREA = "navigation_drawer_swipe_area";
public static final String COMMENT_THREAD_CONTINUITY_CAPACITY = "comment_thread_continuity_capacity";
public static final String CURRENT_VERSION = "current_version";
public static String getPostDetailFabPortraitX(@Nullable Display display) {

View File

@ -661,6 +661,8 @@
<string name="settings_post_feed_max_resolution_warning_title">Increase the value to show previews in higher resolution, but the app may crash unexpectedly.</string>
<string name="settings_post_feed_max_resolution_title">Post Feed Preview Max Resolution (Width * Height)</string>
<string name="settings_reddit_video_default_resolution">Reddit Video Default Resolution</string>
<string name="settings_comment_thread_continuity_capacity_title">Comment Thread Continuity Capacity</string>
<string name="settings_comment_thread_continuity_capacity_summary">%1$s comment thread(s) will be cached for seamless continuity.</string>
<string name="settings_easier_to_watch_in_full_screen_title">Easier to Watch in Full Screen</string>
<string name="settings_hide_fab_in_post_feed">Hide FAB in Post Feed</string>
<string name="settings_comment_divider_type">Comment Divider Type</string>

View File

@ -56,4 +56,9 @@
app:title="@string/settings_embedded_media_type_title"
app:useSimpleSummaryProvider="true" />
<ml.docilealligator.infinityforreddit.customviews.preference.CustomFontEditTextPreference
app:defaultValue="10"
app:key="comment_thread_continuity_capacity"
app:title="@string/settings_comment_thread_continuity_capacity_title" />
</PreferenceScreen>

View File

@ -50,4 +50,9 @@
app:title="@string/settings_embedded_media_type_title"
app:useSimpleSummaryProvider="true" />
<ml.docilealligator.infinityforreddit.customviews.preference.CustomFontEditTextPreference
app:defaultValue="10"
app:key="comment_thread_continuity_capacity"
app:title="@string/settings_comment_thread_continuity_capacity_title" />
</PreferenceScreen>