turbo-native-initializer 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b53ab2cde5fe6c5047f4cc6cfa2c8a21e217c2b226a245ba117cc110019b80ec
4
- data.tar.gz: 7b510f82816f0ed55f4e41fc272715f14f2cc25eb44577cf9db36d0c77056504
3
+ metadata.gz: e673a3e9e9ff4dcab50c3e68a188dc5b71e4660065f87b6dd45006c3e99a43b1
4
+ data.tar.gz: c8a1d14e548b6a3fcea40b78329dc5a6721081b56fd45337c669b2a5611ec6e7
5
5
  SHA512:
6
- metadata.gz: e1360efb27d8f42574fab4dcb862367a8d236f4f4c9ab9ffb452024d8a9abc8d97f99a6a5b8813e5124056828bdfed21ce9140868ac1ecb41465e78c7346a949
7
- data.tar.gz: 62c9cfa365fcdff7053d0c7b09c148fd2d6b098113f7655801d01ee8ef39d3df4a94613fc4150ad9f875905b250a32d9770e4c205678b7b5229e19d8633e4e7c
6
+ metadata.gz: d06d7f520ae5c86136456042c46ef38b4c73961a47dee135b16c9d2232022545c8bb6b3a9fd197d98191a8d9745dcfda46d30a1eb076dc1c512f26d997fda0de
7
+ data.tar.gz: 3c63e69becdc8853f775cbd947714f0cb3822cbcbe35a7205afe7dfb00063665fb77791ad778215287aea5005b8e7308dee98f8ee83ff7ee1297cd45d2b0da4e
data/CHANGELOG.md CHANGED
@@ -1,6 +1,14 @@
1
1
  ## [Unreleased]
2
2
 
3
- ## [0.0.5] - 2023-09-10
3
+ ## [0.0.7] - 2023-09-09
4
+
5
+ - Small refactor in the NumbersViewController (iOS)
6
+
7
+ ## [0.0.6] - 2023-09-09
8
+
9
+ - Fix android template imports
10
+
11
+ ## [0.0.5] - 2023-09-09
4
12
 
5
13
  - Added android custom error screen
6
14
 
data/README.md CHANGED
@@ -8,8 +8,8 @@ A turbo native project generator for iOS and Android.
8
8
  - Added SwiftUI numbers example screen. (iOS)
9
9
  - Added Jetpack Compose numbers example screen. (Android)
10
10
  - Added UIAlertController to handle `data-turbo-confirm`. (iOS)
11
- - Added presentations `clear-all`, `replace-all`, `replace`, `pop`, `refresh`, and `none`. (iOS)
12
- - Added visitable property in order to avoid visits. (iOS)
11
+ - Added presentations `pop`, `refresh`, `none`, `replace`, `clear-all`, and `replace-all`. (iOS)
12
+ - Added `visitable` property in order to avoid visits. (iOS)
13
13
  - Added support for tab navigation. (iOS/Android)
14
14
 
15
15
  ## Installation
@@ -1,9 +1,11 @@
1
1
  package <%= package_name %>.features.web
2
2
 
3
+ import android.view.View
3
4
  import <%= package_name %>.base.NavDestination
4
5
  import <%= package_name %>.util.SIGN_IN_URL
5
6
  import dev.hotwire.turbo.fragments.TurboWebFragment
6
7
  import dev.hotwire.turbo.nav.TurboNavGraphDestination
8
+ import <%= package_name %>.R
7
9
  import dev.hotwire.turbo.visit.TurboVisitAction.REPLACE
8
10
  import dev.hotwire.turbo.visit.TurboVisitOptions
9
11
 
@@ -18,5 +20,5 @@ open class WebFragment : TurboWebFragment(), NavDestination {
18
20
 
19
21
  override fun createErrorView(statusCode: Int): View {
20
22
  return layoutInflater.inflate(R.layout.error_web, null)
21
- }
23
+ }
22
24
  }
@@ -5,8 +5,8 @@
5
5
  { "patterns": ["/refresh_historical_location"], "properties": { "presentation": "refresh" } },
6
6
  { "patterns": ["/recede_historical_location"], "properties": { "presentation": "pop" } },
7
7
  { "patterns": ["/resume_historical_location"], "properties": { "presentation": "none" } },
8
- { "patterns": ["^/$"], "properties": { "uri": "turbo://fragment/web/home", "presentation": "replace_all" } },
9
- { "patterns": ["/new$", "/edit$", "/signin$"], "properties": { "context": "modal", "uri": "turbo://fragment/web/modal" } },
8
+ { "patterns": ["^/$", "/signin$"], "properties": { "uri": "turbo://fragment/web/home", "presentation": "replace_all" } },
9
+ { "patterns": ["/new$", "/edit$"], "properties": { "context": "modal", "uri": "turbo://fragment/web/modal" } },
10
10
  { "patterns": ["/numbers$"], "properties": { "uri": "turbo://fragment/numbers", "title": "Numbers" } }
11
11
  ]
12
12
  }
@@ -1,8 +1,10 @@
1
1
  package <%= package_name %>.features.web
2
2
 
3
+ import android.view.View
3
4
  import <%= package_name %>.base.NavDestination
4
5
  import dev.hotwire.turbo.fragments.TurboWebFragment
5
6
  import dev.hotwire.turbo.nav.TurboNavGraphDestination
7
+ import <%= package_name %>.R
6
8
 
7
9
  @TurboNavGraphDestination(uri = "turbo://fragment/web")
8
10
  open class WebFragment : TurboWebFragment(), NavDestination {
@@ -4,8 +4,8 @@
4
4
  { "patterns": ["/refresh_historical_location"], "properties": { "presentation": "refresh", "visitable": false } },
5
5
  { "patterns": ["/recede_historical_location"], "properties": { "presentation": "pop", "visitable": false } },
6
6
  { "patterns": ["/resume_historical_location"], "properties": { "presentation": "none", "visitable": false } },
7
- { "patterns": ["^/$"], "properties": { "presentation": "replace-all" } },
8
- { "patterns": ["/new$", "/edit$", "/signin$"], "properties": { "presentation": "modal" } },
7
+ { "patterns": ["^/$", "/signin$"], "properties": { "presentation": "replace-all" } },
8
+ { "patterns": ["/new$", "/edit$"], "properties": { "presentation": "modal" } },
9
9
  { "patterns": ["/numbers$"], "properties": { "view-controller": "numbers" } }
10
10
  ]
11
11
  }
@@ -1,16 +1,9 @@
1
1
  import SwiftUI
2
2
 
3
3
  class NumbersViewController: UIHostingController<NumbersView> {
4
- init() {
5
- super.init(rootView: NumbersView())
6
- }
7
-
8
- required init(coder aDecoder: NSCoder) {
9
- fatalError("init(coder:) has not been implemented")
10
- }
11
-
12
- override func viewDidLoad() {
13
- super.viewDidLoad(); title = "Numbers"
4
+ convenience init(title: String) {
5
+ self.init(rootView: NumbersView())
6
+ self.title = title
14
7
  }
15
8
  }
16
9
 
@@ -38,10 +38,6 @@ extension TurboNavigationController {
38
38
  return properties["presentation"] as? String == "modal"
39
39
  }
40
40
 
41
- private func isClearAll(_ properties: PathProperties) -> Bool {
42
- return properties["presentation"] as? String == "clear-all"
43
- }
44
-
45
41
  private func isPop(_ properties: PathProperties) -> Bool {
46
42
  return properties["presentation"] as? String == "pop"
47
43
  }
@@ -54,6 +50,10 @@ extension TurboNavigationController {
54
50
  return properties["presentation"] as? String == "none"
55
51
  }
56
52
 
53
+ private func isClearAll(_ properties: PathProperties) -> Bool {
54
+ return properties["presentation"] as? String == "clear-all"
55
+ }
56
+
57
57
  private func isReplaceAll(_ properties: PathProperties) -> Bool {
58
58
  return properties["presentation"] as? String == "replace-all"
59
59
  }
@@ -75,13 +75,13 @@ extension TurboNavigationController {
75
75
  if let viewController = properties["view-controller"] as? String {
76
76
  switch viewController {
77
77
  case "numbers":
78
- return NumbersViewController()
78
+ return NumbersViewController(title: "Numbers")
79
79
  default:
80
- return ViewController(url: url)
80
+ assertionFailure("Invalid view controller, defaulting to WebView")
81
81
  }
82
- } else {
83
- return ViewController(url: url)
84
82
  }
83
+
84
+ return ViewController(url: url)
85
85
  }
86
86
 
87
87
  private func navigate(to viewController: UIViewController, action: VisitAction, properties: PathProperties = [:]) {
@@ -5,16 +5,18 @@ final class ViewController: VisitableViewController, ErrorPresenter {
5
5
  override func viewDidLoad() {
6
6
  super.viewDidLoad()
7
7
 
8
- view.backgroundColor = .systemBackground
9
-
10
- navigationItem.backButtonDisplayMode = .minimal
8
+ navigationItem.backButtonTitle = "Back"
11
9
 
12
10
  if presentingViewController != nil {
13
- navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(dismissModal))
11
+ navigationItem.leftBarButtonItem = dismissModalButton
14
12
  }
15
13
  }
16
14
 
17
- @objc func dismissModal() {
15
+ private lazy var dismissModalButton = {
16
+ UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(dismissModal))
17
+ }()
18
+
19
+ @objc private func dismissModal() {
18
20
  dismiss(animated: true)
19
21
  }
20
22
  }
@@ -1,16 +1,9 @@
1
1
  import SwiftUI
2
2
 
3
3
  class NumbersViewController: UIHostingController<NumbersView> {
4
- init() {
5
- super.init(rootView: NumbersView())
6
- }
7
-
8
- required init(coder aDecoder: NSCoder) {
9
- fatalError("init(coder:) has not been implemented")
10
- }
11
-
12
- override func viewDidLoad() {
13
- super.viewDidLoad(); title = "Numbers"
4
+ convenience init(title: String) {
5
+ self.init(rootView: NumbersView())
6
+ self.title = title
14
7
  }
15
8
  }
16
9
 
@@ -38,10 +38,6 @@ extension TurboNavigationController {
38
38
  return properties["presentation"] as? String == "modal"
39
39
  }
40
40
 
41
- private func isClearAll(_ properties: PathProperties) -> Bool {
42
- return properties["presentation"] as? String == "clear-all"
43
- }
44
-
45
41
  private func isPop(_ properties: PathProperties) -> Bool {
46
42
  return properties["presentation"] as? String == "pop"
47
43
  }
@@ -54,6 +50,10 @@ extension TurboNavigationController {
54
50
  return properties["presentation"] as? String == "none"
55
51
  }
56
52
 
53
+ private func isClearAll(_ properties: PathProperties) -> Bool {
54
+ return properties["presentation"] as? String == "clear-all"
55
+ }
56
+
57
57
  private func isReplaceAll(_ properties: PathProperties) -> Bool {
58
58
  return properties["presentation"] as? String == "replace-all"
59
59
  }
@@ -75,13 +75,13 @@ extension TurboNavigationController {
75
75
  if let viewController = properties["view-controller"] as? String {
76
76
  switch viewController {
77
77
  case "numbers":
78
- return NumbersViewController()
78
+ return NumbersViewController(title: "Numbers")
79
79
  default:
80
- return ViewController(url: url)
80
+ assertionFailure("Invalid view controller, defaulting to WebView")
81
81
  }
82
- } else {
83
- return ViewController(url: url)
84
82
  }
83
+
84
+ return ViewController(url: url)
85
85
  }
86
86
 
87
87
  private func navigate(to viewController: UIViewController, action: VisitAction, properties: PathProperties = [:]) {
@@ -5,16 +5,18 @@ final class ViewController: VisitableViewController, ErrorPresenter {
5
5
  override func viewDidLoad() {
6
6
  super.viewDidLoad()
7
7
 
8
- view.backgroundColor = .systemBackground
9
-
10
- navigationItem.backButtonDisplayMode = .minimal
8
+ navigationItem.backButtonTitle = "Back"
11
9
 
12
10
  if presentingViewController != nil {
13
- navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(dismissModal))
11
+ navigationItem.leftBarButtonItem = dismissModalButton
14
12
  }
15
13
  }
16
14
 
17
- @objc func dismissModal() {
15
+ private lazy var dismissModalButton = {
16
+ UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(dismissModal))
17
+ }()
18
+
19
+ @objc private func dismissModal() {
18
20
  dismiss(animated: true)
19
21
  }
20
22
  }
@@ -1,3 +1,3 @@
1
1
  module TurboNativeInitializer
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.7"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: turbo-native-initializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nixon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-09-09 00:00:00.000000000 Z
11
+ date: 2023-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor