Skip to content

Commit

Permalink
CLI-624: move alerts out of tab navigation into to settings (#255)
Browse files Browse the repository at this point in the history
* move alerts routing to settings screen

* showing alerts

* rename & delete old files

* add back button

* conditionally hide/show alerts based on onboarding status and feature flag

* rename

* rename again

* move tab config out of json

* improve tab bar gradient and app theme update propagation

---------

Co-authored-by: Mike <[email protected]>
  • Loading branch information
mike-dydx and mike-dydx committed Sep 23, 2024
1 parent 6ab0e84 commit 9ea44b6
Show file tree
Hide file tree
Showing 41 changed files with 484 additions and 597 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,16 +52,6 @@ open class RoutingTabBarController: UITabBarController, ParsingProtocol {

private var actionPath: String?

@IBInspectable open var routingMap: String? {
didSet {
if routingMap != oldValue {
if let destinations = parser.asArray(JsonLoader.load(bundles: Bundle.particles, fileName: routingMap)) {
parse(array: destinations)
}
}
}
}

var previousController: UIViewController?

override open func viewDidLoad() {
Expand Down Expand Up @@ -104,18 +94,6 @@ open class RoutingTabBarController: UITabBarController, ParsingProtocol {
}
}

public func parse(array: [Any]) {
if let data = array as? [[String: Any]] {
var maps = [TabbarItemInfo]()
for dictionary in data {
let routing = TabbarItemInfo()
routing.parse(dictionary: dictionary)
maps.append(routing)
}
self.maps = maps
}
}

open func diff(current: [TabbarItemInfo], old: [TabbarItemInfo]) -> Diff {
return old.diff(current) { (object1, object2) -> Bool in
object1.path == object2.path
Expand Down Expand Up @@ -160,8 +138,8 @@ open class RoutingTabBarController: UITabBarController, ParsingProtocol {
}

private func path(info: TabbarItemInfo) -> String? {
if let router = Router.shared as? MappedUIKitRouter, let path = info.path {
let request = RoutingRequest(path: path)
if let router = Router.shared as? MappedUIKitRouter {
let request = RoutingRequest(path: info.path)
return router.transform(request: request).path
} else {
return nil
Expand Down Expand Up @@ -225,13 +203,11 @@ open class RoutingTabBarController: UITabBarController, ParsingProtocol {

private func setup(viewController: UIViewController, info: TabbarItemInfo) {
let tabbarItem = UITabBarItem()
tabbarItem.title = info.title?.localized ?? " "
if let image = info.image {
tabbarItem.image = UIImage.named(image, bundles: Bundle.particles)
}
if let selected = info.selected {
tabbarItem.selectedImage = UIImage.named(selected, bundles: Bundle.particles)
}
tabbarItem.title = info.title
tabbarItem.image = UIImage.named(info.image, bundles: Bundle.particles)
// if let selected = info.selected {
// tabbarItem.selectedImage = UIImage.named(selected, bundles: Bundle.particles)
// }
viewController.tabBarItem = tabbarItem
}

Expand All @@ -241,11 +217,7 @@ open class RoutingTabBarController: UITabBarController, ParsingProtocol {
let viewController = viewControllers[i]
if let tabbarItem = viewController.tabBarItem {
let map = maps[i]
if let path = map.path {
tabbarItem.badgeValue = badging?.badge(for: path)
} else {
tabbarItem.badgeValue = nil
}
tabbarItem.badgeValue = badging?.badge(for: map.path)
}
}
}
Expand Down Expand Up @@ -276,24 +248,21 @@ open class RoutingTabBarController: UITabBarController, ParsingProtocol {
}
}

public class TabbarItemInfo: NSObject, ParsingProtocol {
override open var parser: Parser {
return RoutingTabBarController.parserOverwrite ?? super.parser
public struct TabbarItemInfo: Equatable {
public init(path: String,
title: String?,
image: String,
split: Bool) {
self.path = path
self.title = title
self.image = image
self.split = split
}

public var path: String?
public var path: String
public var title: String?
public var image: String?
public var selected: String?
public var split: Bool?

public func parse(dictionary: [String: Any]) {
path = parser.asString(dictionary["path"])
title = parser.asString(dictionary["title"])
image = parser.asString(dictionary["image"])
selected = parser.asString(dictionary["selected"])
split = parser.asBoolean(dictionary["split"])?.boolValue
}
public var image: String
public var split: Bool
}

extension RoutingTabBarController: UITabBarControllerDelegate {
Expand Down
71 changes: 42 additions & 29 deletions UIToolkits/UIToolkits/_View/GradientView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,45 +2,58 @@
// GradientView.swift
// UIToolkits
//
// Created by Qiang Huang on 9/6/21.
// Copyright © 2021 dYdX. All rights reserved.
// Created by Mike Maguire on 9/20/24.
// Copyright © 2024 dYdX. All rights reserved.
//

import UIKit

@objc public class GradientView: UIView {
override open class var layerClass: AnyClass {
return CAGradientLayer.classForCoder()
public class GradientView: UIView {

// Configurable properties
public var gradientColors: [UIColor] {
didSet {
gradientLayer.colors = gradientColors.map { $0.cgColor }
}
}
@IBInspectable var startColor: UIColor?
@IBInspectable var endColor: UIColor?

private var gradientLayer: CAGradientLayer? {
return layer as? CAGradientLayer
private let startPoint: CGPoint
private let endPoint: CGPoint
private let gradientLayer = CAGradientLayer()

// Initializers
public init(gradientColors: [UIColor],
startPoint: CGPoint = CGPoint(x: 0.5, y: 0),
endPoint: CGPoint = CGPoint(x: 0.5, y: 1)) {
self.gradientColors = gradientColors
self.startPoint = startPoint
self.endPoint = endPoint
super.init(frame: .zero)
setupGradientLayer()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)

required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

public override func awakeFromNib() {
super.awakeFromNib()
gradientLayer?.startPoint = CGPoint(x: 0.0, y: 0.5)
gradientLayer?.endPoint = CGPoint(x: 1.0, y: 0.5)
setupLayer()

// Setup gradient layer
private func setupGradientLayer() {
gradientLayer.colors = gradientColors.map { $0.cgColor }
gradientLayer.startPoint = startPoint
gradientLayer.endPoint = endPoint
layer.insertSublayer(gradientLayer, at: 0)
}
public func set(startColor: UIColor?, endColor: UIColor?) {
self.startColor = startColor
self.endColor = endColor
setupLayer()

// Adjust gradient layer's frame when the view's bounds change
public override func layoutSubviews() {
super.layoutSubviews()
gradientLayer.frame = bounds
}

private func setupLayer() {
if let startColor = startColor, let endColor = endColor {
gradientLayer?.colors = [startColor.cgColor, endColor.cgColor]
} else {
gradientLayer?.colors = nil
public override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {
setupGradientLayer()
}
}
}

Loading

0 comments on commit 9ea44b6

Please sign in to comment.