Reland "[ios] Set Reading List Messages Toggle item's on property"
This is a reland of 80928c4f7a6b8158e08d62b3cda340a4bcf68a0f
Original issue: Removed target selector by removed cellForRowAtIndexPath
implementation.
Original change's description:
> [ios] Set Reading List Messages Toggle item's on property
>
> Instead of relying on cellForRowAtIndexPath to configure the
> Reading List Messages toggle switch, the correct approach is
> to set the item's on property so that configureCell: updates
> the cell's switch on state.
>
> Bug: 1240802
> Change-Id: Ia62bbaf4804f94f231053fda31d06d1e73a703a8
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3137533
> Auto-Submit: Chris Lu <thegreenfrog@chromium.org>
> Commit-Queue: Olivier Robin <olivierrobin@chromium.org>
> Reviewed-by: Olivier Robin <olivierrobin@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#917583}
Bug: 1240802
Change-Id: Iae26a8bc78cd822ec105eda2be28ead7d9d49f1a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3152394
Reviewed-by: Olivier Robin <olivierrobin@chromium.org>
Commit-Queue: Chris Lu <thegreenfrog@chromium.org>
Cr-Commit-Position: refs/heads/main@{#920238}
diff --git a/ios/chrome/browser/ui/reading_list/reading_list_table_view_controller.mm b/ios/chrome/browser/ui/reading_list/reading_list_table_view_controller.mm
index 0a913db..2f11154 100644
--- a/ios/chrome/browser/ui/reading_list/reading_list_table_view_controller.mm
+++ b/ios/chrome/browser/ui/reading_list/reading_list_table_view_controller.mm
@@ -123,6 +123,8 @@
@property(nonatomic, assign) BOOL needsSectionCleanupAfterEditing;
// Handler for URL drag interactions.
@property(nonatomic, strong) TableViewURLDragDropHandler* dragDropHandler;
+// The toggle setting of showing the Reading List Messages prompt.
+@property(nonatomic, strong) SyncSwitchItem* messagesPromptToggleSwitchItem;
@end
@implementation ReadingListTableViewController
@@ -286,15 +288,9 @@
DCHECK(IsReadingListMessagesEnabled());
SettingsSwitchCell* switchCell =
base::mac::ObjCCastStrict<SettingsSwitchCell>(cell);
- PrefService* user_prefs = self.browser->GetBrowserState()->GetPrefs();
- BOOL neverShowPrefSet =
- user_prefs->GetBoolean(kPrefReadingListMessagesNeverShow);
- switchCell.switchView.on = !neverShowPrefSet;
[switchCell.switchView addTarget:self
action:@selector(switchAction:)
forControlEvents:UIControlEventValueChanged];
- TableViewItem* item = [self.tableViewModel itemAtIndexPath:indexPath];
- switchCell.switchView.tag = item.type;
}
return cell;
}
@@ -348,6 +344,9 @@
- (void)onPreferenceChanged:(const std::string&)preferenceName {
DCHECK(IsReadingListMessagesEnabled());
if (preferenceName == kPrefReadingListMessagesNeverShow) {
+ PrefService* user_prefs = self.browser->GetBrowserState()->GetPrefs();
+ self.messagesPromptToggleSwitchItem.on =
+ !user_prefs->GetBoolean(kPrefReadingListMessagesNeverShow);
NSIndexPath* indexPath = [self.tableViewModel
indexPathForItemType:SwitchItemType
sectionIdentifier:SectionIdentifierMessagesSwitch];
@@ -736,12 +735,15 @@
- (void)addPromptToggleItemAndSection {
TableViewModel* model = self.tableViewModel;
[model addSectionWithIdentifier:SectionIdentifierMessagesSwitch];
- SyncSwitchItem* switchItem =
+ self.messagesPromptToggleSwitchItem =
[[SyncSwitchItem alloc] initWithType:SwitchItemType];
- switchItem.text =
+ self.messagesPromptToggleSwitchItem.text =
l10n_util::GetNSString(IDS_IOS_READING_LIST_MESSAGES_SETTING_TITLE);
- switchItem.enabled = YES;
- [model addItem:switchItem
+ self.messagesPromptToggleSwitchItem.enabled = YES;
+ PrefService* user_prefs = self.browser->GetBrowserState()->GetPrefs();
+ self.messagesPromptToggleSwitchItem.on =
+ !user_prefs->GetBoolean(kPrefReadingListMessagesNeverShow);
+ [model addItem:self.messagesPromptToggleSwitchItem
toSectionWithIdentifier:SectionIdentifierMessagesSwitch];
TableViewLinkHeaderFooterItem* footerItem =
[[TableViewLinkHeaderFooterItem alloc] initWithType:SwitchItemFooterType];