feat(ios): align app UX with share extension interactions
- redesign main app screen to dark card-based layout - add half-star drag/tap rating with haptic feedback - add in-app comments list and composer interactions
This commit is contained in:
@@ -90,6 +90,8 @@ final class ShareViewController: UIViewController, UITextViewDelegate {
|
||||
closeButton.setTitle("Kapat", for: .normal)
|
||||
closeButton.setTitleColor(.systemGray2, for: .normal)
|
||||
closeButton.titleLabel?.font = .systemFont(ofSize: 16, weight: .medium)
|
||||
closeButton.accessibilityLabel = "Ekranı kapat"
|
||||
closeButton.accessibilityHint = "Paylaşım ekranını kapatır"
|
||||
closeButton.translatesAutoresizingMaskIntoConstraints = false
|
||||
closeButton.addTarget(self, action: #selector(closeTapped), for: .touchUpInside)
|
||||
headerView.addSubview(closeButton)
|
||||
@@ -296,6 +298,7 @@ final class ShareViewController: UIViewController, UITextViewDelegate {
|
||||
button.translatesAutoresizingMaskIntoConstraints = false
|
||||
button.heightAnchor.constraint(equalToConstant: 46).isActive = true
|
||||
button.accessibilityLabel = "\(i) yıldız"
|
||||
button.accessibilityHint = "Puanı ayarlar"
|
||||
starButtons.append(button)
|
||||
starsRow.addArrangedSubview(button)
|
||||
}
|
||||
@@ -354,6 +357,7 @@ final class ShareViewController: UIViewController, UITextViewDelegate {
|
||||
submitCommentButton.addTarget(self, action: #selector(submitCommentTapped), for: .touchUpInside)
|
||||
submitCommentButton.isEnabled = false
|
||||
submitCommentButton.alpha = 0.5
|
||||
submitCommentButton.accessibilityLabel = "Yorumu gönder"
|
||||
|
||||
composerContainer.addSubview(commentTextView)
|
||||
composerContainer.addSubview(commentPlaceholderLabel)
|
||||
@@ -458,7 +462,6 @@ final class ShareViewController: UIViewController, UITextViewDelegate {
|
||||
castLabel.isHidden = false
|
||||
}
|
||||
|
||||
seedCommentsIfNeeded(for: info)
|
||||
renderComments()
|
||||
|
||||
if let urlString = info.backdrop, let imageURL = URL(string: urlString) {
|
||||
@@ -615,17 +618,17 @@ final class ShareViewController: UIViewController, UITextViewDelegate {
|
||||
overlayLabel.text = "İçerik analiz ediliyor..."
|
||||
}
|
||||
|
||||
private func seedCommentsIfNeeded(for info: GetInfoResponse) {
|
||||
guard comments.isEmpty else { return }
|
||||
comments = [
|
||||
CommentItem(user: "deniz", body: "Görüntü yönetimi çok iyi, finali de güçlüydü.", time: "2 saat önce"),
|
||||
CommentItem(user: "melis", body: "Tempo bazı bölümlerde düşüyor ama genel olarak keyifli.", time: "5 saat önce"),
|
||||
CommentItem(user: "arda", body: "\(info.title) için müzik seçimleri efsane olmuş.", time: "Dün")
|
||||
]
|
||||
}
|
||||
|
||||
private func renderComments() {
|
||||
commentsListStack.arrangedSubviews.forEach { $0.removeFromSuperview() }
|
||||
guard !comments.isEmpty else {
|
||||
let emptyState = UILabel()
|
||||
emptyState.text = "Henüz yorum yok. İlk yorumu sen yaz."
|
||||
emptyState.textColor = UIColor.white.withAlphaComponent(0.55)
|
||||
emptyState.font = .systemFont(ofSize: 13, weight: .medium)
|
||||
emptyState.numberOfLines = 0
|
||||
commentsListStack.addArrangedSubview(emptyState)
|
||||
return
|
||||
}
|
||||
for item in comments {
|
||||
commentsListStack.addArrangedSubview(makeCommentBubble(item))
|
||||
}
|
||||
@@ -689,6 +692,13 @@ final class ShareViewController: UIViewController, UITextViewDelegate {
|
||||
renderComments()
|
||||
hoverHaptic.impactOccurred(intensity: 0.35)
|
||||
hoverHaptic.prepare()
|
||||
|
||||
submitCommentButton.setTitle("Gönderildi", for: .normal)
|
||||
submitCommentButton.backgroundColor = UIColor.systemGreen.withAlphaComponent(0.9)
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.9) {
|
||||
self.submitCommentButton.setTitle("Gönder", for: .normal)
|
||||
self.submitCommentButton.backgroundColor = UIColor.systemRed.withAlphaComponent(0.92)
|
||||
}
|
||||
}
|
||||
|
||||
func textViewDidChange(_ textView: UITextView) {
|
||||
|
||||
Reference in New Issue
Block a user