Skip to content

Commit

Permalink
Address Steve's comments.
Browse files Browse the repository at this point in the history
  • Loading branch information
pixlwave committed Oct 20, 2021
1 parent 614cb4d commit a7395db
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 19 deletions.
2 changes: 1 addition & 1 deletion Riot/Managers/AppInfo/AppVersion.swift
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ final class AppVersion: NSObject {
}

override var description: String {
return "\(bundleShortVersion) (\(bundleVersion))"
return "\(bundleShortVersion)(\(bundleVersion))"
}

// MARK: - Private
Expand Down
15 changes: 14 additions & 1 deletion Riot/Modules/Common/Models/Section.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,22 @@ final class Section: NSObject {

let tag: Int
var rows: [Row]
var headerTitle: String?
var attributedHeaderTitle: NSAttributedString?
var attributedFooterTitle: NSAttributedString?

var headerTitle: String? {
get {
attributedHeaderTitle?.string
}
set {
guard let newValue = newValue else {
attributedHeaderTitle = nil
return
}

attributedHeaderTitle = NSAttributedString(string: newValue)
}
}
var footerTitle: String? {
get {
attributedFooterTitle?.string
Expand Down
21 changes: 14 additions & 7 deletions Riot/Modules/Common/SectionFooters/SectionFooterView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,15 @@ class SectionFooterView: UITableViewHeaderFooterView, NibLoadable, Themable {
UINib(nibName: String(describing: self), bundle: Bundle(for: self))
}

/// The amount to inset the footer label on its leading side, relative to the safe area insets.
var leadingInset: CGFloat {
get { footerLabelLeadingConstraint.constant }
set { footerLabelLeadingConstraint.constant = newValue }
}

// Expose `footerLabel` as the default label property.
override var textLabel: UILabel? {
footerLabel
}

/// The text label added in the xib file. Using our own label was necessary due to the behaviour
/// on iOS 12-14 where any customisation to the text label would be wiped out after being set
/// in `tableView:viewForFooterInSection`. This behaviour is fixed in iOS 15.
/// on iOS 12-14 where any customisation to the existing text label is wiped out after being
/// set in `tableView:viewForFooterInSection`. This behaviour is fixed in iOS 15.
@IBOutlet private weak var footerLabel: UILabel!
/// The label's leading constraint, relative to the safe area insets.
@IBOutlet private weak var footerLabelLeadingConstraint: NSLayoutConstraint!
Expand All @@ -66,4 +62,15 @@ class SectionFooterView: UITableViewHeaderFooterView, NibLoadable, Themable {
footerLabel.font = theme.fonts.subheadline
footerLabel.numberOfLines = 0
}

/// Update the footer with new text.
func update(withText text: String) {
footerLabel.text = text
}

/// Update the footer with attributed text. Be sure to call this after calling `update(theme:)`
/// otherwise any color or font attributes will be wiped out by the theme.
func update(withAttributedText attributedText: NSAttributedString) {
footerLabel.attributedText = attributedText
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -216,12 +216,10 @@ private enum DiscoverySectionRows {
}

private func threePidsManagementInfoAttributedString() -> NSAttributedString {
let attributedInfoString = NSMutableAttributedString(string: VectorL10n.settingsDiscoveryThreePidsManagementInformationPart1,
attributes: [:])
let attributedInfoString = NSMutableAttributedString(string: VectorL10n.settingsDiscoveryThreePidsManagementInformationPart1)
attributedInfoString.append(NSAttributedString(string: VectorL10n.settingsDiscoveryThreePidsManagementInformationPart2,
attributes: [.foregroundColor: self.theme.tintColor]))
attributedInfoString.append(NSAttributedString(string: VectorL10n.settingsDiscoveryThreePidsManagementInformationPart3,
attributes: [:]))
attributedInfoString.append(NSAttributedString(string: VectorL10n.settingsDiscoveryThreePidsManagementInformationPart3))
return attributedInfoString
}
}
Expand Down
2 changes: 1 addition & 1 deletion Riot/Modules/Settings/Security/SecurityViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -1314,7 +1314,7 @@ - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger
SectionFooterView *view = [tableView dequeueReusableHeaderFooterViewWithIdentifier:SectionFooterView.defaultReuseIdentifier];
[view updateWithTheme:ThemeService.shared.theme];
view.leadingInset = tableView.vc_separatorInset.left;
view.textLabel.text = footerTitle;
[view updateWithText:footerTitle];

return view;
}
Expand Down
24 changes: 19 additions & 5 deletions Riot/Modules/Settings/SettingsViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@ @interface SettingsViewController () <DeactivateAccountViewControllerDelegate,
set automatically when calling `prepareIdentityServiceAndPresentTermsWithSession:checkingAccessForContactsOnAccept`
*/
@property (nonatomic) BOOL serviceTermsModalShouldCheckAccessForContactsOnAccept;
@property (nonatomic) BOOL isPreparingIdentityService;
@property (nonatomic, strong) ServiceTermsModalCoordinatorBridgePresenter *serviceTermsModalCoordinatorBridgePresenter;

@end
Expand Down Expand Up @@ -541,8 +542,9 @@ - (void)updateSections

if (BuildSettings.settingsScreenShowAdvancedSettings)
{
sectionAbout.footerTitle = [NSString stringWithFormat:@"Element %@ / Olm %@\n%@\n%@",
AppInfo.current.appVersion.description,
sectionAbout.footerTitle = [NSString stringWithFormat:@"Element %@ (%@) / Olm %@\n%@\n%@",
AppInfo.current.appVersion.bundleShortVersion,
AppInfo.current.appVersion.bundleVersion,
[OLMKit versionString],
[MatrixKitL10n settingsConfigUserId:account.mxCredentials.userId],
[MatrixKitL10n settingsConfigHomeServer:account.mxCredentials.homeServer]];
Expand Down Expand Up @@ -2443,7 +2445,7 @@ - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger
SectionFooterView *view = [tableView dequeueReusableHeaderFooterViewWithIdentifier:SectionFooterView.defaultReuseIdentifier];
[view updateWithTheme:ThemeService.shared.theme];
view.leadingInset = tableView.vc_separatorInset.left;
view.textLabel.attributedText = attributedFooterTitle;
[view updateWithAttributedText:attributedFooterTitle];

if (section == SECTION_TAG_USER_SETTINGS)
{
Expand Down Expand Up @@ -4393,6 +4395,12 @@ - (void)showIdentityServerSettingsScreen
- (void)prepareIdentityServiceAndPresentTermsWithSession:(MXSession *)session
checkingAccessForContactsOnAccept:(BOOL)checkAccessForContacts
{
if (self.isPreparingIdentityService)
{
return;
}

self.isPreparingIdentityService = YES;
self.serviceTermsModalShouldCheckAccessForContactsOnAccept = checkAccessForContacts;

MXWeakify(self);
Expand All @@ -4405,13 +4413,15 @@ - (void)prepareIdentityServiceAndPresentTermsWithSession:(MXSession *)session
MXStrongifyAndReturnIfNil(self);

[self stopActivityIndicator];
self.isPreparingIdentityService = NO;

// Present the terms of the identity server.
[self presentIdentityServerTermsWithSession:session baseURL:baseURL andAccessToken:accessToken];
} failure:^(NSError *error) {
MXStrongifyAndReturnIfNil(self);

[self stopActivityIndicator];
self.isPreparingIdentityService = NO;

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:VectorL10n.findYourContactsIdentityServiceError
message:nil
Expand Down Expand Up @@ -4468,16 +4478,20 @@ - (void)serviceTermsModalCoordinatorBridgePresenterDelegateDidAccept:(ServiceTer

- (void)serviceTermsModalCoordinatorBridgePresenterDelegateDidDecline:(ServiceTermsModalCoordinatorBridgePresenter * _Nonnull)coordinatorBridgePresenter session:(MXSession *)session
{
// Disable the contacts toggle as the terms weren't accepted.
// Terms weren't accepted: disable contacts toggle and refresh discovery
[self updateSections];
[self.settingsDiscoveryTableViewSection reload];

[coordinatorBridgePresenter dismissWithAnimated:YES completion:nil];
self.serviceTermsModalCoordinatorBridgePresenter = nil;
}

- (void)serviceTermsModalCoordinatorBridgePresenterDelegateDidClose:(ServiceTermsModalCoordinatorBridgePresenter * _Nonnull)coordinatorBridgePresenter
{
[self updateSections]; // Disables the contacts toggle as the terms weren't accepted.
// Terms weren't accepted: disable contacts toggle and refresh discovery
[self updateSections];
[self.settingsDiscoveryTableViewSection reload];

self.serviceTermsModalCoordinatorBridgePresenter = nil;
}

Expand Down

0 comments on commit a7395db

Please sign in to comment.