chore: update sign up alert. Update gitignore for i18n files
This commit is contained in:
parent
10594d1eb6
commit
b2706a50da
|
@ -118,4 +118,6 @@ xcuserdata
|
||||||
**/xcshareddata/WorkspaceSettings.xcsettings
|
**/xcshareddata/WorkspaceSettings.xcsettings
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/swift,swiftpm,xcode,cocoapods
|
# End of https://www.toptal.com/developers/gitignore/api/swift,swiftpm,xcode,cocoapods
|
||||||
n
|
|
||||||
|
Mastodon/Localization/StringsConvertor/input
|
||||||
|
Mastodon/Localization/StringsConvertor/output
|
|
@ -1,83 +0,0 @@
|
||||||
{
|
|
||||||
"common": {
|
|
||||||
"alerts": {},
|
|
||||||
"controls": {
|
|
||||||
"actions": {
|
|
||||||
"add": "Add",
|
|
||||||
"remove": "Remove",
|
|
||||||
"edit": "Edit",
|
|
||||||
"save": "Save",
|
|
||||||
"ok": "OK",
|
|
||||||
"confirm": "Confirm",
|
|
||||||
"continue": "Continue",
|
|
||||||
"cancel": "Cancel",
|
|
||||||
"take_photo": "Take photo",
|
|
||||||
"save_photo": "Save photo",
|
|
||||||
"sign_in": "Sign in",
|
|
||||||
"sign_up": "Sign up",
|
|
||||||
"see_more": "See More",
|
|
||||||
"preview": "Preview",
|
|
||||||
"open_in_safari": "Open in Safari"
|
|
||||||
},
|
|
||||||
"status": {
|
|
||||||
"user_boosted": "%s boosted",
|
|
||||||
"content_warning": "content warning",
|
|
||||||
"show_post": "Show Post"
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"load_more": "Load More"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"countable": {
|
|
||||||
"photo": {
|
|
||||||
"single": "photo",
|
|
||||||
"multiple": "photos"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"scene": {
|
|
||||||
"welcome": {
|
|
||||||
"slogan": "Social networking\nback in your hands."
|
|
||||||
},
|
|
||||||
"server_picker": {
|
|
||||||
"title": "Pick a Server,\nany server.",
|
|
||||||
"input": {
|
|
||||||
"placeholder": "Find a server or join your own..."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"register": {
|
|
||||||
"title": "Tell us about you.",
|
|
||||||
"input": {
|
|
||||||
"username": {
|
|
||||||
"placeholder": "username",
|
|
||||||
"duplicate_prompt": "This username is taken."
|
|
||||||
},
|
|
||||||
"display_name": {
|
|
||||||
"placeholder": "display name"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"placeholder": "email"
|
|
||||||
},
|
|
||||||
"password": {
|
|
||||||
"placeholder": "password",
|
|
||||||
"prompt": "Your password needs at least:",
|
|
||||||
"prompt_eight_characters": "Eight characters"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"server_rules": {
|
|
||||||
"title": "Some ground rules.",
|
|
||||||
"subtitle": "These rules are set by the admins of %s.",
|
|
||||||
"prompt": "By continuing, you're subject to the terms of service and privacy policy for %s.",
|
|
||||||
"button": {
|
|
||||||
"confirm": "I Agree"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home_timeline": {
|
|
||||||
"title": "Home"
|
|
||||||
},
|
|
||||||
"public_timeline": {
|
|
||||||
"title": "Public"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"NSCameraUsageDescription": "Used to take photo for toot",
|
|
||||||
"NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library"
|
|
||||||
}
|
|
|
@ -1,40 +0,0 @@
|
||||||
"Common.Controls.Actions.Add" = "Add";
|
|
||||||
"Common.Controls.Actions.Cancel" = "Cancel";
|
|
||||||
"Common.Controls.Actions.Confirm" = "Confirm";
|
|
||||||
"Common.Controls.Actions.Continue" = "Continue";
|
|
||||||
"Common.Controls.Actions.Edit" = "Edit";
|
|
||||||
"Common.Controls.Actions.Ok" = "OK";
|
|
||||||
"Common.Controls.Actions.OpenInSafari" = "Open in Safari";
|
|
||||||
"Common.Controls.Actions.Preview" = "Preview";
|
|
||||||
"Common.Controls.Actions.Remove" = "Remove";
|
|
||||||
"Common.Controls.Actions.Save" = "Save";
|
|
||||||
"Common.Controls.Actions.SavePhoto" = "Save photo";
|
|
||||||
"Common.Controls.Actions.SeeMore" = "See More";
|
|
||||||
"Common.Controls.Actions.SignIn" = "Sign in";
|
|
||||||
"Common.Controls.Actions.SignUp" = "Sign up";
|
|
||||||
"Common.Controls.Actions.TakePhoto" = "Take photo";
|
|
||||||
"Common.Controls.Status.ContentWarning" = "content warning";
|
|
||||||
"Common.Controls.Status.ShowPost" = "Show Post";
|
|
||||||
"Common.Controls.Status.UserBoosted" = "%@ boosted";
|
|
||||||
"Common.Controls.Timeline.LoadMore" = "Load More";
|
|
||||||
"Common.Countable.Photo.Multiple" = "photos";
|
|
||||||
"Common.Countable.Photo.Single" = "photo";
|
|
||||||
"Scene.HomeTimeline.Title" = "Home";
|
|
||||||
"Scene.PublicTimeline.Title" = "Public";
|
|
||||||
"Scene.Register.Input.DisplayName.Placeholder" = "display name";
|
|
||||||
"Scene.Register.Input.Email.Placeholder" = "email";
|
|
||||||
"Scene.Register.Input.Password.Placeholder" = "password";
|
|
||||||
"Scene.Register.Input.Password.Prompt" = "Your password needs at least:";
|
|
||||||
"Scene.Register.Input.Password.PromptEightCharacters" = "Eight characters";
|
|
||||||
"Scene.Register.Input.Username.DuplicatePrompt" = "This username is taken.";
|
|
||||||
"Scene.Register.Input.Username.Placeholder" = "username";
|
|
||||||
"Scene.Register.Title" = "Tell us about you.";
|
|
||||||
"Scene.ServerPicker.Input.Placeholder" = "Find a server or join your own...";
|
|
||||||
"Scene.ServerPicker.Title" = "Pick a Server,
|
|
||||||
any server.";
|
|
||||||
"Scene.ServerRules.Button.Confirm" = "I Agree";
|
|
||||||
"Scene.ServerRules.Prompt" = "By continuing, you're subject to the terms of service and privacy policy for %@.";
|
|
||||||
"Scene.ServerRules.Subtitle" = "These rules are set by the admins of %@.";
|
|
||||||
"Scene.ServerRules.Title" = "Some ground rules.";
|
|
||||||
"Scene.Welcome.Slogan" = "Social networking
|
|
||||||
back in your hands.";
|
|
|
@ -1,2 +0,0 @@
|
||||||
"NSCameraUsageDescription" = "Used to take photo for toot";
|
|
||||||
"NSPhotoLibraryAddUsageDescription" = "Used to save photo into the Photo Library";
|
|
|
@ -1,6 +1,14 @@
|
||||||
{
|
{
|
||||||
"common": {
|
"common": {
|
||||||
"alerts": {},
|
"alerts": {
|
||||||
|
"sign_up_failure": {
|
||||||
|
"title": "Sign Up Failure"
|
||||||
|
},
|
||||||
|
"server_error": {
|
||||||
|
"title": "Server Error"
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
"controls": {
|
"controls": {
|
||||||
"actions": {
|
"actions": {
|
||||||
"add": "Add",
|
"add": "Add",
|
||||||
|
|
|
@ -9,26 +9,34 @@ import UIKit
|
||||||
// https://nshipster.com/swift-foundation-error-protocols/
|
// https://nshipster.com/swift-foundation-error-protocols/
|
||||||
extension UIAlertController {
|
extension UIAlertController {
|
||||||
convenience init(
|
convenience init(
|
||||||
_ error: Error,
|
for error: Error,
|
||||||
|
title: String?,
|
||||||
preferredStyle: UIAlertController.Style
|
preferredStyle: UIAlertController.Style
|
||||||
) {
|
) {
|
||||||
let title: String
|
let _title: String
|
||||||
let message: String?
|
let message: String?
|
||||||
if let error = error as? LocalizedError {
|
if let error = error as? LocalizedError {
|
||||||
title = error.errorDescription ?? "Unknown Error"
|
var messages: [String?] = []
|
||||||
message = [
|
if let title = title {
|
||||||
|
_title = title
|
||||||
|
messages.append(error.errorDescription)
|
||||||
|
} else {
|
||||||
|
_title = error.errorDescription ?? "Error"
|
||||||
|
}
|
||||||
|
messages.append(contentsOf: [
|
||||||
error.failureReason,
|
error.failureReason,
|
||||||
error.recoverySuggestion
|
error.recoverySuggestion
|
||||||
]
|
])
|
||||||
|
message = messages
|
||||||
.compactMap { $0 }
|
.compactMap { $0 }
|
||||||
.joined(separator: " ")
|
.joined(separator: " ")
|
||||||
} else {
|
} else {
|
||||||
title = "Internal Error"
|
_title = "Internal Error"
|
||||||
message = error.localizedDescription
|
message = error.localizedDescription
|
||||||
}
|
}
|
||||||
|
|
||||||
self.init(
|
self.init(
|
||||||
title: title,
|
title: _title,
|
||||||
message: message,
|
message: message,
|
||||||
preferredStyle: preferredStyle
|
preferredStyle: preferredStyle
|
||||||
)
|
)
|
||||||
|
|
|
@ -12,6 +12,16 @@ import Foundation
|
||||||
internal enum L10n {
|
internal enum L10n {
|
||||||
|
|
||||||
internal enum Common {
|
internal enum Common {
|
||||||
|
internal enum Alerts {
|
||||||
|
internal enum ServerError {
|
||||||
|
/// Server Error
|
||||||
|
internal static let title = L10n.tr("Localizable", "Common.Alerts.ServerError.Title")
|
||||||
|
}
|
||||||
|
internal enum SignUpFailure {
|
||||||
|
/// Sign Up Failure
|
||||||
|
internal static let title = L10n.tr("Localizable", "Common.Alerts.SignUpFailure.Title")
|
||||||
|
}
|
||||||
|
}
|
||||||
internal enum Controls {
|
internal enum Controls {
|
||||||
internal enum Actions {
|
internal enum Actions {
|
||||||
/// Add
|
/// Add
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
"Common.Alerts.ServerError.Title" = "Server Error";
|
||||||
|
"Common.Alerts.SignUpFailure.Title" = "Sign Up Failure";
|
||||||
"Common.Controls.Actions.Add" = "Add";
|
"Common.Controls.Actions.Add" = "Add";
|
||||||
"Common.Controls.Actions.Cancel" = "Cancel";
|
"Common.Controls.Actions.Cancel" = "Cancel";
|
||||||
"Common.Controls.Actions.Confirm" = "Confirm";
|
"Common.Controls.Actions.Confirm" = "Confirm";
|
||||||
|
|
|
@ -195,7 +195,7 @@ extension AuthenticationViewController {
|
||||||
.receive(on: DispatchQueue.main)
|
.receive(on: DispatchQueue.main)
|
||||||
.sink { [weak self] error in
|
.sink { [weak self] error in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
let alertController = UIAlertController(error, preferredStyle: .alert)
|
let alertController = UIAlertController(for: error, title: nil, preferredStyle: .alert)
|
||||||
let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
|
let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
|
||||||
alertController.addAction(okAction)
|
alertController.addAction(okAction)
|
||||||
self.coordinator.present(
|
self.coordinator.present(
|
||||||
|
|
|
@ -398,7 +398,7 @@ extension MastodonRegisterViewController {
|
||||||
.receive(on: DispatchQueue.main)
|
.receive(on: DispatchQueue.main)
|
||||||
.sink { [weak self] error in
|
.sink { [weak self] error in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
let alertController = UIAlertController(error, preferredStyle: .alert)
|
let alertController = UIAlertController(for: error, title: "Sign Up Failure", preferredStyle: .alert)
|
||||||
let okAction = UIAlertAction(title: L10n.Common.Controls.Actions.ok, style: .default, handler: nil)
|
let okAction = UIAlertAction(title: L10n.Common.Controls.Actions.ok, style: .default, handler: nil)
|
||||||
alertController.addAction(okAction)
|
alertController.addAction(okAction)
|
||||||
self.coordinator.present(
|
self.coordinator.present(
|
||||||
|
|
|
@ -112,7 +112,7 @@ extension MainTabBarController {
|
||||||
case .implicit:
|
case .implicit:
|
||||||
break
|
break
|
||||||
case .explicit:
|
case .explicit:
|
||||||
let alertController = UIAlertController(error, preferredStyle: .alert)
|
let alertController = UIAlertController(for: error, title: nil, preferredStyle: .alert)
|
||||||
let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
|
let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
|
||||||
alertController.addAction(okAction)
|
alertController.addAction(okAction)
|
||||||
coordinator.present(
|
coordinator.present(
|
||||||
|
|
|
@ -17,3 +17,20 @@ final class TimelineBottomLoaderTableViewCell: TimelineLoaderTableViewCell {
|
||||||
activityIndicatorView.startAnimating()
|
activityIndicatorView.startAnimating()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if canImport(SwiftUI) && DEBUG
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct TimelineBottomLoaderTableViewCell_Previews: PreviewProvider {
|
||||||
|
|
||||||
|
static var previews: some View {
|
||||||
|
UIViewPreview(width: 375) {
|
||||||
|
TimelineBottomLoaderTableViewCell()
|
||||||
|
}
|
||||||
|
.previewLayout(.fixed(width: 375, height: 100))
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -36,3 +36,20 @@ extension TimelineMiddleLoaderTableViewCell {
|
||||||
delegate?.timelineMiddleLoaderTableViewCell(self, loadMoreButtonDidPressed: sender)
|
delegate?.timelineMiddleLoaderTableViewCell(self, loadMoreButtonDidPressed: sender)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if canImport(SwiftUI) && DEBUG
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct TimelineMiddleLoaderTableViewCell_Previews: PreviewProvider {
|
||||||
|
|
||||||
|
static var previews: some View {
|
||||||
|
UIViewPreview(width: 375) {
|
||||||
|
TimelineMiddleLoaderTableViewCell()
|
||||||
|
}
|
||||||
|
.previewLayout(.fixed(width: 375, height: 100))
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue