Skip to content

Commit ca67d6c

Browse files
dadachiclaude
andcommitted
Drop maximum_name_length from permissions; move to Constants
Ports nativeapptemplate/NativeAppTemplate-iOS#59. Two-step cleanup of maximumNameLength: 1. Stop reading maximum_name_length from /shopkeeper/permissions. The client already tolerated its absence via a "?? 100" fallback, so this is dead plumbing. Drops the field from PermissionsResponse, the meta read in PermissionsRequest.handle, and the assignment in SessionController.fetchPermissions. 2. Move maximumNameLength from SessionController to Constants. Now that it's a fixed value, it's just a constant — like maximumItemTagDescriptionLength. Adds NativeAppTemplateConstants.maximumItemTagNameLength = 100, drops maximumNameLength from SessionControllerProtocol / SessionController / NullSessionController / TestSessionController. ItemTagCreateViewModel and ItemTagEditViewModel now read the constant directly and no longer take sessionController. Updates the call sites in ItemTagListView / ItemTagDetailView. Tests rewritten to drop sessionController field and update truncation tests to use 100+ char strings. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent d9fe960 commit ca67d6c

12 files changed

Lines changed: 9 additions & 58 deletions

File tree

NativeAppTemplate/App.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ private final class NullSessionController: SessionControllerProtocol {
3636
var shouldUpdateApp: Bool = false
3737
var shouldUpdatePrivacy: Bool = false
3838
var shouldUpdateTerms: Bool = false
39-
var maximumNameLength: Int = 100
4039
var shopLimitCount: Int = 0
4140
var shopkeeper: Shopkeeper?
4241
var hasPermissions: Bool {

NativeAppTemplate/Constants.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ enum NativeAppTemplateConstants {
7474

7575
// MARK: - ItemTag
7676

77+
static let maximumItemTagNameLength = 100
7778
static let maximumItemTagDescriptionLength = 1_000
7879

7980
// MARK: - Corner Radius

NativeAppTemplate/Networking/Requests/PermissionsRequest.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ struct PermissionsResponse: Sendable {
99
var iosAppVersion: Int
1010
var shouldUpdatePrivacy: Bool
1111
var shouldUpdateTerms: Bool
12-
var maximumNameLength: Int
1312
var shopLimitCount: Int
1413
}
1514

@@ -49,8 +48,6 @@ struct PermissionsRequest: Request {
4948
throw NativeAppTemplateAPIError.responseMissingRequiredMeta(field: "should_update_terms")
5049
}
5150

52-
let maximumNameLength = doc.meta["maximum_name_length"] as? Int ?? 100
53-
5451
guard let shopLimitCount = doc.meta["shop_limit_count"] as? Int else {
5552
throw NativeAppTemplateAPIError.responseMissingRequiredMeta(field: "shop_limit_count")
5653
}
@@ -59,7 +56,6 @@ struct PermissionsRequest: Request {
5956
iosAppVersion: iosAppVersion,
6057
shouldUpdatePrivacy: shouldUpdatePrivacy,
6158
shouldUpdateTerms: shouldUpdateTerms,
62-
maximumNameLength: maximumNameLength,
6359
shopLimitCount: shopLimitCount
6460
)
6561
}

NativeAppTemplate/Sessions/SessionController.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import Observation
1818
var shouldUpdateApp = false
1919
var shouldUpdatePrivacy = false
2020
var shouldUpdateTerms = false
21-
var maximumNameLength = 100
2221
var shopLimitCount = 0
2322

2423
var shopkeeper: Shopkeeper? {
@@ -171,8 +170,6 @@ import Observation
171170
shouldUpdateApp = Int(Bundle.main.appBuild)! < permissionsResponse.iosAppVersion
172171
shouldUpdatePrivacy = permissionsResponse.shouldUpdatePrivacy
173172
shouldUpdateTerms = permissionsResponse.shouldUpdateTerms
174-
maximumNameLength = permissionsResponse.maximumNameLength
175-
176173
shopLimitCount = permissionsResponse.shopLimitCount
177174

178175
didFetchPermissions = true

NativeAppTemplate/Sessions/SessionControllerProtocol.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ protocol SessionControllerProtocol: AnyObject, Observable, Sendable {
3838
var shouldUpdateApp: Bool { get set }
3939
var shouldUpdatePrivacy: Bool { get set }
4040
var shouldUpdateTerms: Bool { get set }
41-
var maximumNameLength: Int { get set }
4241
var shopLimitCount: Int { get set }
4342

4443
var shopkeeper: Shopkeeper? { get set }

NativeAppTemplate/UI/Shop Settings/ItemTag Detail/ItemTagDetailView.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ private extension ItemTagDetailView {
6161
viewModel: ItemTagEditViewModel(
6262
itemTagRepository: dataManager.itemTagRepository,
6363
messageBus: messageBus,
64-
sessionController: dataManager.sessionController,
6564
itemTagId: viewModel.itemTagId
6665
)
6766
)

NativeAppTemplate/UI/Shop Settings/ItemTag Detail/ItemTagEditViewModel.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,15 @@ final class ItemTagEditViewModel {
1818

1919
private let itemTagRepository: ItemTagRepositoryProtocol
2020
private let messageBus: MessageBus
21-
private let sessionController: SessionControllerProtocol
2221
private let itemTagId: String
2322

2423
init(
2524
itemTagRepository: ItemTagRepositoryProtocol,
2625
messageBus: MessageBus,
27-
sessionController: SessionControllerProtocol,
2826
itemTagId: String
2927
) {
3028
self.itemTagRepository = itemTagRepository
3129
self.messageBus = messageBus
32-
self.sessionController = sessionController
3330
self.itemTagId = itemTagId
3431
}
3532

@@ -70,7 +67,7 @@ final class ItemTagEditViewModel {
7067
}
7168

7269
var maximumNameLength: Int {
73-
sessionController.maximumNameLength
70+
NativeAppTemplateConstants.maximumItemTagNameLength
7471
}
7572

7673
var maximumDescriptionLength: Int {

NativeAppTemplate/UI/Shop Settings/ItemTag List/ItemTagCreateViewModel.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,15 @@ final class ItemTagCreateViewModel {
1616

1717
private let itemTagRepository: ItemTagRepositoryProtocol
1818
private let messageBus: MessageBus
19-
private let sessionController: SessionControllerProtocol
2019
private let shopId: String
2120

2221
init(
2322
itemTagRepository: ItemTagRepositoryProtocol,
2423
messageBus: MessageBus,
25-
sessionController: SessionControllerProtocol,
2624
shopId: String
2725
) {
2826
self.itemTagRepository = itemTagRepository
2927
self.messageBus = messageBus
30-
self.sessionController = sessionController
3128
self.shopId = shopId
3229
}
3330

@@ -54,7 +51,7 @@ final class ItemTagCreateViewModel {
5451
}
5552

5653
var maximumNameLength: Int {
57-
sessionController.maximumNameLength
54+
NativeAppTemplateConstants.maximumItemTagNameLength
5855
}
5956

6057
var maximumDescriptionLength: Int {

NativeAppTemplate/UI/Shop Settings/ItemTag List/ItemTagListView.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ private extension ItemTagListView {
111111
viewModel: ItemTagCreateViewModel(
112112
itemTagRepository: dataManager.itemTagRepository,
113113
messageBus: messageBus,
114-
sessionController: dataManager.sessionController,
115114
shopId: viewModel.shop.id
116115
)
117116
)

NativeAppTemplateTests/Testing/Repositories/TestSessionController.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import Foundation
2121
public var shouldUpdateTerms: Bool = false
2222
public var shouldThrowPrivacyError: Bool = false
2323
public var shouldThrowTermsError: Bool = false
24-
public var maximumNameLength: Int = 100
2524
public var shopLimitCount: Int = 1
2625

2726
public var shopkeeper: Shopkeeper?

0 commit comments

Comments
 (0)