fix: add interact hint label and separator line for emoji auto complete in compose scene

This commit is contained in:
CMK 2021-06-21 18:30:24 +08:00
parent b76f918a99
commit f826cacccf
6 changed files with 21 additions and 3 deletions

View File

@ -382,7 +382,8 @@
}, },
"auto_complete": { "auto_complete": {
"single_people_talking": "%ld people talking", "single_people_talking": "%ld people talking",
"multiple_people_talking": "%ld people talking" "multiple_people_talking": "%ld people talking",
"space_to_add": "Space to add"
}, },
"accessibility": { "accessibility": {
"append_attachment": "Append attachment", "append_attachment": "Append attachment",

View File

@ -33,7 +33,7 @@ extension AutoCompleteSection {
return cell return cell
case .emoji(let emoji): case .emoji(let emoji):
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: AutoCompleteTableViewCell.self), for: indexPath) as! AutoCompleteTableViewCell let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: AutoCompleteTableViewCell.self), for: indexPath) as! AutoCompleteTableViewCell
configureEmoji(cell: cell, emoji: emoji) configureEmoji(cell: cell, emoji: emoji, isFirst: indexPath.row == 0)
return cell return cell
case .bottomLoader: case .bottomLoader:
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self), for: indexPath) as! TimelineBottomLoaderTableViewCell let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self), for: indexPath) as! TimelineBottomLoaderTableViewCell
@ -80,8 +80,10 @@ extension AutoCompleteSection {
cell.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: URL(string: account.avatar))) cell.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: URL(string: account.avatar)))
} }
private static func configureEmoji(cell: AutoCompleteTableViewCell, emoji: Mastodon.Entity.Emoji) { private static func configureEmoji(cell: AutoCompleteTableViewCell, emoji: Mastodon.Entity.Emoji, isFirst: Bool) {
cell.titleLabel.text = ":" + emoji.shortcode + ":" cell.titleLabel.text = ":" + emoji.shortcode + ":"
// FIXME: handle spacer enter to complete emoji
// cell.subtitleLabel.text = isFirst ? L10n.Scene.Compose.AutoComplete.spaceToAdd : " "
cell.subtitleLabel.text = " " cell.subtitleLabel.text = " "
cell.avatarImageView.isHidden = false cell.avatarImageView.isHidden = false
cell.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: URL(string: emoji.url))) cell.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: URL(string: emoji.url)))

View File

@ -457,6 +457,8 @@ internal enum L10n {
internal static func singlePeopleTalking(_ p1: Int) -> String { internal static func singlePeopleTalking(_ p1: Int) -> String {
return L10n.tr("Localizable", "Scene.Compose.AutoComplete.SinglePeopleTalking", p1) return L10n.tr("Localizable", "Scene.Compose.AutoComplete.SinglePeopleTalking", p1)
} }
/// Space to add
internal static let spaceToAdd = L10n.tr("Localizable", "Scene.Compose.AutoComplete.SpaceToAdd")
} }
internal enum ContentWarning { internal enum ContentWarning {
/// Write an accurate warning here... /// Write an accurate warning here...

View File

@ -153,6 +153,7 @@ uploaded to Mastodon.";
"Scene.Compose.Attachment.Video" = "video"; "Scene.Compose.Attachment.Video" = "video";
"Scene.Compose.AutoComplete.MultiplePeopleTalking" = "%ld people talking"; "Scene.Compose.AutoComplete.MultiplePeopleTalking" = "%ld people talking";
"Scene.Compose.AutoComplete.SinglePeopleTalking" = "%ld people talking"; "Scene.Compose.AutoComplete.SinglePeopleTalking" = "%ld people talking";
"Scene.Compose.AutoComplete.SpaceToAdd" = "Space to add";
"Scene.Compose.ComposeAction" = "Publish"; "Scene.Compose.ComposeAction" = "Publish";
"Scene.Compose.ContentInputPlaceholder" = "Type or paste whats on your mind"; "Scene.Compose.ContentInputPlaceholder" = "Type or paste whats on your mind";
"Scene.Compose.ContentWarning.Placeholder" = "Write an accurate warning here..."; "Scene.Compose.ContentWarning.Placeholder" = "Write an accurate warning here...";

View File

@ -153,6 +153,7 @@ uploaded to Mastodon.";
"Scene.Compose.Attachment.Video" = "video"; "Scene.Compose.Attachment.Video" = "video";
"Scene.Compose.AutoComplete.MultiplePeopleTalking" = "%ld people talking"; "Scene.Compose.AutoComplete.MultiplePeopleTalking" = "%ld people talking";
"Scene.Compose.AutoComplete.SinglePeopleTalking" = "%ld people talking"; "Scene.Compose.AutoComplete.SinglePeopleTalking" = "%ld people talking";
"Scene.Compose.AutoComplete.SpaceToAdd" = "Space to add";
"Scene.Compose.ComposeAction" = "Publish"; "Scene.Compose.ComposeAction" = "Publish";
"Scene.Compose.ContentInputPlaceholder" = "Type or paste whats on your mind"; "Scene.Compose.ContentInputPlaceholder" = "Type or paste whats on your mind";
"Scene.Compose.ContentWarning.Placeholder" = "Write an accurate warning here..."; "Scene.Compose.ContentWarning.Placeholder" = "Write an accurate warning here...";

View File

@ -45,6 +45,8 @@ final class AutoCompleteTableViewCell: UITableViewCell {
return label return label
}() }()
let separatorLine = UIView.separatorLine
override func prepareForReuse() { override func prepareForReuse() {
super.prepareForReuse() super.prepareForReuse()
avatarImageView.af.cancelImageRequest() avatarImageView.af.cancelImageRequest()
@ -118,6 +120,15 @@ extension AutoCompleteTableViewCell {
bottomPaddingView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), bottomPaddingView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor),
bottomPaddingView.heightAnchor.constraint(equalTo: topPaddingView.heightAnchor, multiplier: 1.0), bottomPaddingView.heightAnchor.constraint(equalTo: topPaddingView.heightAnchor, multiplier: 1.0),
]) ])
separatorLine.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(separatorLine)
NSLayoutConstraint.activate([
separatorLine.leadingAnchor.constraint(equalTo: contentView.leadingAnchor),
separatorLine.trailingAnchor.constraint(equalTo: contentView.trailingAnchor),
separatorLine.bottomAnchor.constraint(equalTo: contentView.bottomAnchor),
separatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: contentView)).priority(.defaultHigh),
])
} }
} }