Skip to content
This repository was archived by the owner on Apr 20, 2024. It is now read-only.

Commit fe37a8d

Browse files
Merge pull request #98 from nodes-vapor/hotfix/menu-path-from-generator
Menu paths are now defined by the generator
2 parents e08af63 + 73825b7 commit fe37a8d

File tree

4 files changed

+17
-7
lines changed

4 files changed

+17
-7
lines changed

Sources/AdminPanel/Configs/AdminPanelConfig.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public struct AdminPanelConfig<U: AdminPanelUserType>: Service {
3232
public let endpoints: AdminPanelEndpoints
3333
public let views: AdminPanelViews
3434
public let controllers: AdminPanelControllers<U>
35-
public let sidebarMenuPathGenerator: SidebarMenuPathGenerator
35+
public let sidebarMenuPathGenerator: SidebarMenuPathGenerator<U.Role>
3636
public let dashboardPath: String?
3737
public let resetPasswordEmail: ResetPasswordEmail
3838
public let specifyPasswordEmail: SpecifyPasswordEmail
@@ -44,7 +44,7 @@ public struct AdminPanelConfig<U: AdminPanelUserType>: Service {
4444
endpoints: AdminPanelEndpoints = .default,
4545
views: AdminPanelViews = .default,
4646
controllers: AdminPanelControllers<U> = .default,
47-
sidebarMenuPathGenerator: @escaping SidebarMenuPathGenerator = U.Role.menuPathGenerator,
47+
sidebarMenuPathGenerator: @escaping SidebarMenuPathGenerator<U.Role> = U.Role.sidebarMenuPathGenerator,
4848
dashboardPath: String? = nil,
4949
resetPasswordEmail: ResetPasswordEmail = .default,
5050
specifyPasswordEmail: SpecifyPasswordEmail = .default,

Sources/AdminPanel/Models/AdminPanelUserType.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import Reset
33
import Submissions
44
import Sugar
55

6-
public typealias SidebarMenuPathGenerator = ((AdminPanelUserRole) -> String)
6+
public typealias SidebarMenuPathGenerator<U: AdminPanelUserRoleType> = ((U) -> String)
77

88
public protocol AdminPanelUserType:
99
Parameter,
@@ -42,7 +42,7 @@ public extension AdminPanelUserType {
4242
}
4343

4444
public extension AdminPanelUserRoleType {
45-
public static var menuPathGenerator: SidebarMenuPathGenerator {
45+
public static var sidebarMenuPathGenerator: SidebarMenuPathGenerator<Self> {
4646
return { role in
4747
role.menuPath
4848
}

Sources/AdminPanel/Providers/AdminPanelProvider.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ public final class AdminPanelProvider<U: AdminPanelUserType>: Provider {
116116

117117
services.register(AdminPanelConfigTagData<U>(
118118
name: config.name,
119-
baseUrl: config.baseUrl
119+
baseUrl: config.baseUrl,
120+
sidebarMenuPathGenerator: config.sidebarMenuPathGenerator
120121
))
121122
services.register(config)
122123
services.register(KeyedCacheSessions.self)

Sources/AdminPanel/Tags/AdminPanelConfigTag.swift

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ public final class AdminPanelConfigTag<U: AdminPanelUserType>: TagRenderer {
1010
let container = try tag.container.make(CurrentUserContainer<U>.self)
1111

1212
return Future.map(on: tag) {
13-
try config.viewData(for: tag.parameters[0], user: container.user, tag: tag)
13+
try config.viewData(
14+
for: tag.parameters[0],
15+
user: container.user,
16+
tag: tag
17+
)
1418
}
1519
}
1620

@@ -28,14 +32,17 @@ public final class AdminPanelConfigTagData<U: AdminPanelUserType>: Service {
2832
public var name = ""
2933
public var baseUrl = ""
3034
public var dashboardPath: String?
35+
public var sidebarMenuPathGenerator: SidebarMenuPathGenerator<U.Role>
3136

3237
init(
3338
name: String,
3439
baseUrl: String,
40+
sidebarMenuPathGenerator: @escaping SidebarMenuPathGenerator<U.Role>,
3541
dashboardPath: String? = nil
3642
) {
3743
self.name = name
3844
self.baseUrl = baseUrl
45+
self.sidebarMenuPathGenerator = sidebarMenuPathGenerator
3946
self.dashboardPath = dashboardPath
4047
}
4148

@@ -54,7 +61,9 @@ public final class AdminPanelConfigTagData<U: AdminPanelUserType>: Service {
5461
case .baseUrl:
5562
return .string(baseUrl)
5663
case .sidebarMenuPath:
57-
return user.map { .string($0.role.menuPath) } ?? .null
64+
return user.map {
65+
.string(self.sidebarMenuPathGenerator($0.role))
66+
} ?? .null
5867
case .dashboardPath:
5968
return dashboardPath.map { .string($0) } ?? .null
6069
}

0 commit comments

Comments
 (0)