diff --git a/iOS/AppDefaults.swift b/iOS/AppDefaults.swift
index c7a01f33a..17ffbeb1a 100644
--- a/iOS/AppDefaults.swift
+++ b/iOS/AppDefaults.swift
@@ -46,6 +46,7 @@ final class AppDefaults {
static let firstRunDate = "firstRunDate"
static let timelineGroupByFeed = "timelineGroupByFeed"
static let refreshClearsReadArticles = "refreshClearsReadArticles"
+ static let markArticlesAsReadOnScroll = "markArticlesAsReadOnScroll"
static let timelineNumberOfLines = "timelineNumberOfLines"
static let timelineIconDimension = "timelineIconSize"
static let timelineSortDirection = "timelineSortDirection"
@@ -159,6 +160,15 @@ final class AppDefaults {
}
}
+ var markArticlesAsReadOnScroll: Bool {
+ get {
+ return AppDefaults.bool(for: Key.markArticlesAsReadOnScroll)
+ }
+ set {
+ AppDefaults.setBool(for: Key.markArticlesAsReadOnScroll, newValue)
+ }
+ }
+
var timelineSortDirection: ComparisonResult {
get {
return AppDefaults.sortDirection(for: Key.timelineSortDirection)
@@ -236,6 +246,7 @@ final class AppDefaults {
let defaults: [String : Any] = [Key.userInterfaceColorPalette: UserInterfaceColorPalette.automatic.rawValue,
Key.timelineGroupByFeed: false,
Key.refreshClearsReadArticles: false,
+ Key.markArticlesAsReadOnScroll: false,
Key.timelineNumberOfLines: 2,
Key.timelineIconDimension: IconSize.medium.rawValue,
Key.timelineSortDirection: ComparisonResult.orderedDescending.rawValue,
diff --git a/iOS/MasterTimeline/MasterTimelineViewController.swift b/iOS/MasterTimeline/MasterTimelineViewController.swift
index 73b39ee99..024504980 100644
--- a/iOS/MasterTimeline/MasterTimelineViewController.swift
+++ b/iOS/MasterTimeline/MasterTimelineViewController.swift
@@ -516,7 +516,11 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner
@objc func scrollPositionDidChange() {
coordinator.timelineMiddleIndexPath = tableView.middleVisibleRow()
-
+
+ if !AppDefaults.shared.markArticlesAsReadOnScroll {
+ return
+ }
+
guard let firstVisibleRowIndexPath = tableView.indexPathsForVisibleRows?[0] else { return }
guard let firstVisibleArticle = dataSource.itemIdentifier(for: firstVisibleRowIndexPath) else {
diff --git a/iOS/Settings/Settings.storyboard b/iOS/Settings/Settings.storyboard
index 9cb9246b5..e77cb6ce0 100644
--- a/iOS/Settings/Settings.storyboard
+++ b/iOS/Settings/Settings.storyboard
@@ -237,6 +237,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -617,6 +650,7 @@
+
diff --git a/iOS/Settings/SettingsViewController.swift b/iOS/Settings/SettingsViewController.swift
index 23811c861..0d39bbe15 100644
--- a/iOS/Settings/SettingsViewController.swift
+++ b/iOS/Settings/SettingsViewController.swift
@@ -19,6 +19,7 @@ class SettingsViewController: UITableViewController {
@IBOutlet weak var timelineSortOrderSwitch: UISwitch!
@IBOutlet weak var groupByFeedSwitch: UISwitch!
@IBOutlet weak var refreshClearsReadArticlesSwitch: UISwitch!
+ @IBOutlet weak var markArticlesAsReadOnScrollSwitch: UISwitch!
@IBOutlet weak var articleThemeDetailLabel: UILabel!
@IBOutlet weak var confirmMarkAllAsReadSwitch: UISwitch!
@IBOutlet weak var showFullscreenArticlesSwitch: UISwitch!
@@ -66,6 +67,13 @@ class SettingsViewController: UITableViewController {
} else {
refreshClearsReadArticlesSwitch.isOn = false
}
+
+
+ if AppDefaults.shared.markArticlesAsReadOnScroll {
+ markArticlesAsReadOnScrollSwitch.isOn = true
+ } else {
+ markArticlesAsReadOnScrollSwitch.isOn = false
+ }
articleThemeDetailLabel.text = ArticleThemesManager.shared.currentTheme.name
@@ -326,6 +334,14 @@ class SettingsViewController: UITableViewController {
}
}
+ @IBAction func switchMarkArticlesAsReadOnScroll(_ sender: Any) {
+ if markArticlesAsReadOnScrollSwitch.isOn {
+ AppDefaults.shared.markArticlesAsReadOnScroll = true
+ } else {
+ AppDefaults.shared.markArticlesAsReadOnScroll = false
+ }
+ }
+
@IBAction func switchConfirmMarkAllAsRead(_ sender: Any) {
if confirmMarkAllAsReadSwitch.isOn {
AppDefaults.shared.confirmMarkAllAsRead = true