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

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<changeSet id="convert-alwaysScrollToEntry-to-scrollMode" author="athou">
<addColumn tableName="USERSETTINGS">
<column name="scrollMode" type="VARCHAR(32)" />
</addColumn>
<update tableName="USERSETTINGS">
<column name="scrollMode" value="always" />
<where>alwaysScrollToEntry = true</where>
</update>
<update tableName="USERSETTINGS">
<column name="scrollMode" value="if_needed" />
<where>alwaysScrollToEntry = false</where>
</update>
<addNotNullConstraint tableName="USERSETTINGS" columnName="scrollMode" />
<dropColumn tableName="USERSETTINGS" columnName="alwaysScrollToEntry" />
</changeSet>
</databaseChangeLog>

View File

@@ -29,5 +29,6 @@
<include file="changelogs/db.changelog-4.0.xml" />
<include file="changelogs/db.changelog-4.1.xml" />
<include file="changelogs/db.changelog-4.2.xml" />
<include file="changelogs/db.changelog-4.3.xml" />
</databaseChangeLog>