add a setting to completely disable scrolling to selected entry (#1157)

This commit is contained in:
Athou
2024-01-29 17:59:28 +01:00
parent e69c230678
commit a92a7217ff
38 changed files with 567 additions and 70 deletions

View File

@@ -35,6 +35,10 @@ public class UserSettings extends AbstractModel {
title, cozy, detailed, expanded
}
public enum ScrollMode {
always, never, if_needed
}
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false, unique = true)
private User user;
@@ -66,7 +70,10 @@ public class UserSettings extends AbstractModel {
@Column(name = "scroll_speed")
private int scrollSpeed;
private boolean alwaysScrollToEntry;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private ScrollMode scrollMode;
private boolean markAllAsReadConfirmation;
private boolean customContextMenu;
private boolean mobileFooter;

View File

@@ -42,9 +42,10 @@ public class Settings implements Serializable {
private int scrollSpeed;
@Schema(
description = "always scroll selected entry to the top of the page, even if it fits entirely on screen",
description = "whether to scroll to the selected entry",
allowableValues = "always,never,if_needed",
requiredMode = RequiredMode.REQUIRED)
private boolean alwaysScrollToEntry;
private String scrollMode;
@Schema(description = "ask for confirmation when marking all entries as read", requiredMode = RequiredMode.REQUIRED)
private boolean markAllAsReadConfirmation;

View File

@@ -24,6 +24,7 @@ import com.commafeed.backend.model.UserRole.Role;
import com.commafeed.backend.model.UserSettings;
import com.commafeed.backend.model.UserSettings.ReadingMode;
import com.commafeed.backend.model.UserSettings.ReadingOrder;
import com.commafeed.backend.model.UserSettings.ScrollMode;
import com.commafeed.backend.service.MailService;
import com.commafeed.backend.service.PasswordEncryptionService;
import com.commafeed.backend.service.UserService;
@@ -108,7 +109,7 @@ public class UserREST {
s.setCustomJs(settings.getCustomJs());
s.setLanguage(settings.getLanguage());
s.setScrollSpeed(settings.getScrollSpeed());
s.setAlwaysScrollToEntry(settings.isAlwaysScrollToEntry());
s.setScrollMode(settings.getScrollMode().name());
s.setMarkAllAsReadConfirmation(settings.isMarkAllAsReadConfirmation());
s.setCustomContextMenu(settings.isCustomContextMenu());
s.setMobileFooter(settings.isMobileFooter());
@@ -129,7 +130,7 @@ public class UserREST {
s.setScrollMarks(true);
s.setLanguage("en");
s.setScrollSpeed(400);
s.setAlwaysScrollToEntry(false);
s.setScrollMode(ScrollMode.if_needed.name());
s.setMarkAllAsReadConfirmation(true);
s.setCustomContextMenu(true);
s.setMobileFooter(false);
@@ -158,7 +159,7 @@ public class UserREST {
s.setCustomJs(CommaFeedApplication.USERNAME_DEMO.equals(user.getName()) ? "" : settings.getCustomJs());
s.setLanguage(settings.getLanguage());
s.setScrollSpeed(settings.getScrollSpeed());
s.setAlwaysScrollToEntry(settings.isAlwaysScrollToEntry());
s.setScrollMode(ScrollMode.valueOf(settings.getScrollMode()));
s.setMarkAllAsReadConfirmation(settings.isMarkAllAsReadConfirmation());
s.setCustomContextMenu(settings.isCustomContextMenu());
s.setMobileFooter(settings.isMobileFooter());