From 798b54124158bbb19e6083ab44fe4b5a157e61a7 Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Mon, 26 Jul 2021 15:42:04 +1000 Subject: [PATCH] add UI in conversation settings --- .../OWSConversationSettingsViewController.m | 65 ++++++++++++++++++ .../NotifyMentions.imageset/Contents.json | 23 +++++++ .../ic_notification_mentions-1.png | Bin 0 -> 2527 bytes .../ic_notification_mentions-2.png | Bin 0 -> 2527 bytes .../ic_notification_mentions.png | Bin 0 -> 2527 bytes .../Translations/en.lproj/Localizable.strings | 2 + 6 files changed, 90 insertions(+) create mode 100644 Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/Contents.json create mode 100644 Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/ic_notification_mentions-1.png create mode 100644 Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/ic_notification_mentions-2.png create mode 100644 Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/ic_notification_mentions.png diff --git a/Session/Conversations/Settings/OWSConversationSettingsViewController.m b/Session/Conversations/Settings/OWSConversationSettingsViewController.m index 62f475e15..16f4fc84f 100644 --- a/Session/Conversations/Settings/OWSConversationSettingsViewController.m +++ b/Session/Conversations/Settings/OWSConversationSettingsViewController.m @@ -318,6 +318,55 @@ CGFloat kIconViewLength = 24; } actionBlock:^{ [weakSelf inviteUsersToOpenGroup]; }]]; + + // Notification Settings + [section addItem:[OWSTableItem itemWithCustomCellBlock:^{ + UITableViewCell *cell = [OWSTableItem newCell]; + OWSConversationSettingsViewController *strongSelf = weakSelf; + OWSCAssertDebug(strongSelf); + cell.preservesSuperviewLayoutMargins = YES; + cell.contentView.preservesSuperviewLayoutMargins = YES; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + + UIImageView *iconView = [strongSelf viewForIconWithName:@"NotifyMentions"]; + + UILabel *rowLabel = [UILabel new]; + rowLabel.text = NSLocalizedString( + @"CONVERSATION_SETTINGS_NOTIFICATION", @""); + rowLabel.textColor = LKColors.text; + rowLabel.font = [UIFont systemFontOfSize:LKValues.mediumFontSize]; + rowLabel.lineBreakMode = NSLineBreakByTruncatingTail; + + UISwitch *switchView = [UISwitch new]; + switchView.on = ((TSGroupThread *)strongSelf.thread).isOnlyNotifyMentions; + [switchView addTarget:strongSelf action:@selector(notifyMentionsSwitchValueDidChange:) + forControlEvents:UIControlEventValueChanged]; + + UIStackView *topRow = + [[UIStackView alloc] initWithArrangedSubviews:@[ iconView, rowLabel, switchView ]]; + topRow.spacing = strongSelf.iconSpacing; + topRow.alignment = UIStackViewAlignmentCenter; + [cell.contentView addSubview:topRow]; + [topRow autoPinEdgesToSuperviewMarginsExcludingEdge:ALEdgeBottom]; + + UILabel *subtitleLabel = [UILabel new]; + subtitleLabel.text = NSLocalizedString(@"When enabled, only messages mentioned you will be notified.", @""); + subtitleLabel.textColor = LKColors.text; + subtitleLabel.font = [UIFont systemFontOfSize:LKValues.smallFontSize]; + subtitleLabel.numberOfLines = 0; + subtitleLabel.lineBreakMode = NSLineBreakByWordWrapping; + [cell.contentView addSubview:subtitleLabel]; + [subtitleLabel autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:topRow withOffset:8]; + [subtitleLabel autoPinEdge:ALEdgeLeading toEdge:ALEdgeLeading ofView:rowLabel]; + [subtitleLabel autoPinTrailingToSuperviewMargin]; + [subtitleLabel autoPinBottomToSuperviewMargin]; + + cell.userInteractionEnabled = !strongSelf.hasLeftGroup; + + cell.accessibilityIdentifier = ACCESSIBILITY_IDENTIFIER_WITH_NAME(OWSConversationSettingsViewController, @"notify_mentions_only"); + + return cell; + } customRowHeight:UITableViewAutomaticDimension actionBlock:nil]]; } // Search @@ -947,6 +996,22 @@ CGFloat kIconViewLength = 24; [self.conversationSettingsViewDelegate conversationSettingsDidRequestConversationSearch:self]; } +- (void)notifyMentionsSwitchValueDidChange:(id)sender +{ + UISwitch *uiSwitch = (UISwitch *)sender; + if (uiSwitch.isOn) { + [LKStorage writeWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { + ((TSGroupThread *)self.thread).isOnlyNotifyMentions = true; + [self.thread saveWithTransaction:transaction]; + }]; + } else { + [LKStorage writeWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { + ((TSGroupThread *)self.thread).isOnlyNotifyMentions = false; + [self.thread saveWithTransaction:transaction]; + }]; + } +} + - (void)hideEditNameUI { self.isEditingDisplayName = NO; diff --git a/Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/Contents.json b/Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/Contents.json new file mode 100644 index 000000000..60527f39d --- /dev/null +++ b/Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "ic_notification_mentions.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "ic_notification_mentions-1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "ic_notification_mentions-2.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/ic_notification_mentions-1.png b/Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/ic_notification_mentions-1.png new file mode 100644 index 0000000000000000000000000000000000000000..fe39a8b3566e28a7e49d515e69bfe566a6311dc5 GIT binary patch literal 2527 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 peF~yO0CY$E(>F*surSvi@;@hP47aC4Od