diff --git a/Shared/Extensions/URL-Extensions.swift b/Shared/Extensions/URL-Extensions.swift index 4fb9b8d7f..5cafe888a 100644 --- a/Shared/Extensions/URL-Extensions.swift +++ b/Shared/Extensions/URL-Extensions.swift @@ -15,4 +15,13 @@ extension URL { scheme == "mailto" ? URLComponents(url: self, resolvingAgainstBaseURL: false)?.path : nil } + func valueFor(_ parameter: String) -> String? { + guard let components = URLComponents(url: self, resolvingAgainstBaseURL: false), + let queryItems = components.queryItems, + let value = queryItems.first(where: { $0.name == parameter })?.value else { + return nil + } + return value + } + } diff --git a/iOS/Article/WebViewController.swift b/iOS/Article/WebViewController.swift index d702b0b87..6ce48e551 100644 --- a/iOS/Article/WebViewController.swift +++ b/iOS/Article/WebViewController.swift @@ -338,6 +338,7 @@ extension WebViewController: WKNavigationDelegate { if MFMailComposeViewController.canSendMail() { let mailComposeViewController = MFMailComposeViewController() mailComposeViewController.setToRecipients([emailAddress]) + mailComposeViewController.setSubject(url.valueFor("subject") ?? "") mailComposeViewController.mailComposeDelegate = self self.present(mailComposeViewController, animated: true, completion: {}) } else { diff --git a/iOS/MasterFeed/Cell/MasterFeedTableViewSectionHeader.swift b/iOS/MasterFeed/Cell/MasterFeedTableViewSectionHeader.swift index 3fcf7506f..dc5b21ed6 100644 --- a/iOS/MasterFeed/Cell/MasterFeedTableViewSectionHeader.swift +++ b/iOS/MasterFeed/Cell/MasterFeedTableViewSectionHeader.swift @@ -21,12 +21,22 @@ class MasterFeedTableViewSectionHeader: UITableViewHeaderFooterView { get { if unreadCount > 0 { let unreadLabel = NSLocalizedString("unread", comment: "Unread label for accessiblity") - return "\(name) \(unreadCount) \(unreadLabel)" + return "\(name) \(unreadCount) \(unreadLabel) \(expandedStateMessage) " } else { - return name + return "\(name) \(expandedStateMessage) " } } } + + private var expandedStateMessage: String { + set {} + get { + if disclosureExpanded { + return NSLocalizedString("Expanded", comment: "Disclosure button expanded state for accessibility") + } + return NSLocalizedString("Collapsed", comment: "Disclosure button collapsed state for accessibility") + } + } var unreadCount: Int { get { diff --git a/iOS/MasterTimeline/Cell/MasterTimelineTableViewCell.swift b/iOS/MasterTimeline/Cell/MasterTimelineTableViewCell.swift index 813420cf6..7d3a1b936 100644 --- a/iOS/MasterTimeline/Cell/MasterTimelineTableViewCell.swift +++ b/iOS/MasterTimeline/Cell/MasterTimelineTableViewCell.swift @@ -237,8 +237,9 @@ private extension MasterTimelineTableViewCell { } func updateAccessiblityLabel() { - var label = cellData.read ? "" : "\(NSLocalizedString("Unread", comment: "Unread")), " - label += "\(cellData.feedName), \(cellData.title), \(cellData.summary), \(cellData.dateString)" + let starredStatus = cellData.starred ? "\(NSLocalizedString("Starred", comment: "Starred article for accessibility")), " : "" + let unreadStatus = cellData.read ? "" : "\(NSLocalizedString("Unread", comment: "Unread")), " + let label = starredStatus + unreadStatus + "\(cellData.feedName), \(cellData.title), \(cellData.summary), \(cellData.dateString)" accessibilityLabel = label }