Skip to content

Commit

Permalink
Reverts move away from AnyHashable
Browse files Browse the repository at this point in the history
  • Loading branch information
johnpatrickmorgan committed Jul 30, 2022
1 parent 01bfad3 commit 3f4afa4
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 16 deletions.
7 changes: 4 additions & 3 deletions Sources/NavigationBackport/CodableRepresentation.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ public extension NBNavigationPath {
}

var codable: CodableRepresentation? {
if #available(iOS 14.0, *) { let codableElements = elements.compactMap { $0 as? Codable }
if #available(iOS 14.0, *) {
let codableElements = elements.compactMap { $0 as? Codable }
guard codableElements.count == elements.count else {
return nil
}
Expand All @@ -21,7 +22,7 @@ public extension NBNavigationPath {
}

init(_ codable: CodableRepresentation) {
self.init(codable.elements)
self.init(codable.elements.map { $0 as! AnyHashable })
}
}

Expand Down Expand Up @@ -54,7 +55,7 @@ extension NBNavigationPath.CodableRepresentation: Encodable {
)
}
#if swift(<5.7)
let data = try Self.encodeExistential(element)
let data = try Self.encodeExistential(element)
let string = String(decoding: data, as: UTF8.self)
try container.encode(string)
#else
Expand Down
7 changes: 3 additions & 4 deletions Sources/NavigationBackport/NBNavigationPath.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,17 @@ import SwiftUI

@available(iOS, deprecated: 16.0, message: "Use SwiftUI's Navigation API beyond iOS 15")
public struct NBNavigationPath {
var elements: [Any]
var elements: [AnyHashable]

public var count: Int { elements.count }
public var isEmpty: Bool { elements.isEmpty }

public init(_ elements: [Any] = []) {
public init(_ elements: [AnyHashable] = []) {
self.elements = elements
}

@_disfavoredOverload
public init<S: Sequence>(_ elements: S) where S.Element: Hashable {
self.init(elements.map { $0 })
self.init(elements.map(AnyHashable.init))
}

public mutating func append<V: Hashable>(_ value: V) {
Expand Down
14 changes: 7 additions & 7 deletions Sources/NavigationBackport/NBNavigationStack.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ public struct NBNavigationStack<Root: View, Data: Hashable>: View {

var root: Root

var erasedPath: Binding<[Any]> {
var erasedPath: Binding<[AnyHashable]> {
Binding(
get: { path.map { $0 } },
get: { path.map(AnyHashable.init) },
set: { newValue in
path = newValue.map { any in
guard let data = any as? Data else {
fatalError("Cannot add \(type(of: any)) to stack of \(Data.self)")
path = newValue.map { anyHashable in
guard let data = anyHashable.base as? Data else {
fatalError("Cannot add \(type(of: anyHashable.base)) to stack of \(Data.self)")
}
return data
}
Expand Down Expand Up @@ -64,8 +64,8 @@ public extension NBNavigationStack where Data == AnyHashable {

public extension NBNavigationStack where Data == AnyHashable {
init(path: Binding<NBNavigationPath>, @ViewBuilder root: () -> Root) {
let path: Binding<[Data]> = Binding(
get: { path.wrappedValue.elements.map { $0 as! AnyHashable } },
let path = Binding(
get: { path.wrappedValue.elements },
set: { path.wrappedValue.elements = $0 }
)
self.init(path: path, root: root)
Expand Down
4 changes: 2 additions & 2 deletions Sources/NavigationBackport/NavigationPathHolder.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import Foundation
import SwiftUI

class NavigationPathHolder: ObservableObject {
var path: Binding<[Any]>
var path: Binding<[AnyHashable]>

init(_ path: Binding<[Any]>) {
init(_ path: Binding<[AnyHashable]>) {
self.path = path
}
}

0 comments on commit 3f4afa4

Please sign in to comment.