Use as hint
This commit is contained in:
1 parent
6493dda7c7
commit
cdf8a22c4b
5 files changed
+23
-13
No files matched your search
@@ -14507,6 +14507,7 @@
|
||||
}
|
||||
},
|
||||
"New Provider" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
|
||||
@@ -16,9 +16,8 @@ public struct ModelProviderConnectionFields: View {
|
||||
public var body: some View {
|
||||
Section {
|
||||
LabeledContent("Name") {
|
||||
TextField("Name", text: $name.singleLineText, axis: .horizontal).singleLinePaste().lineLimit(1)
|
||||
.labelsHidden()
|
||||
.multilineTextAlignment(.trailing)
|
||||
TextField("Name", text: $name.singleLineText, prompt: Text("New Provider"), axis: .horizontal)
|
||||
.singleLinePaste().lineLimit(1).labelsHidden().multilineTextAlignment(.trailing)
|
||||
}
|
||||
Toggle("Enabled", isOn: $isEnabled)
|
||||
Picker("API Type", selection: $endpoint.apiType) {
|
||||
|
||||
@@ -26,7 +26,7 @@ struct ModelProviderSettings: View {
|
||||
// there is one code path for "new" and "edit" and no half-built
|
||||
// provider living in a view's `@State`. Cancelling takes it back
|
||||
// out again — which is what `isNew` below is for.
|
||||
let provider = ModelProvider(name: String(localized: "New Provider"))
|
||||
let provider = ModelProvider(name: "")
|
||||
app.aiConfiguration.upsert(provider)
|
||||
edit(provider.id, true)
|
||||
}
|
||||
|
||||
@@ -297,13 +297,11 @@ private struct SettingsCategoryRow: View {
|
||||
|
||||
enum SettingsDraftPolicy {
|
||||
static func shouldDiscard(_ provider: ModelProvider) -> Bool {
|
||||
let hasDefaultName =
|
||||
provider.name.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||
== String(localized: "New Provider")
|
||||
let hasEmptyName = provider.name.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
|
||||
let hasConfiguration =
|
||||
!provider.inferenceURL.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
|
||||
|| provider.hasCredential || !provider.models.isEmpty
|
||||
return hasDefaultName && !hasConfiguration
|
||||
return hasEmptyName && !hasConfiguration
|
||||
}
|
||||
|
||||
static func shouldDiscard(_ server: MCPServer) -> Bool {
|
||||
|
||||
@@ -121,19 +121,31 @@ struct SettingsNavigationTests {
|
||||
#expect(window.sidebarMode == .navigation)
|
||||
}
|
||||
|
||||
@Test
|
||||
func emptyProviderDraftIsDiscarded() {
|
||||
let provider = ModelProvider(name: String(localized: "New Provider"))
|
||||
@Test(arguments: ["", " \t\n "])
|
||||
func emptyProviderDraftIsDiscarded(name: String) {
|
||||
var provider = ModelProvider(name: name)
|
||||
provider.inferenceURL = " \t\n "
|
||||
#expect(SettingsDraftPolicy.shouldDiscard(provider))
|
||||
}
|
||||
|
||||
@Test
|
||||
func configuredProviderDraftIsKept() {
|
||||
var provider = ModelProvider(name: String(localized: "New Provider"))
|
||||
var provider = ModelProvider(name: "")
|
||||
provider.inferenceURL = "https://example.com/v1/chat/completions"
|
||||
#expect(!SettingsDraftPolicy.shouldDiscard(provider))
|
||||
|
||||
provider = ModelProvider(name: "Work")
|
||||
provider = ModelProvider(name: "")
|
||||
provider.credentialRef = "test-credential"
|
||||
#expect(!SettingsDraftPolicy.shouldDiscard(provider))
|
||||
|
||||
provider = ModelProvider(name: "")
|
||||
provider.models = [AIModel(id: "test-model")]
|
||||
#expect(!SettingsDraftPolicy.shouldDiscard(provider))
|
||||
}
|
||||
|
||||
@Test(arguments: ["Work", "New Provider", String(localized: "New Provider")])
|
||||
func namedProviderDraftIsKept(name: String) {
|
||||
let provider = ModelProvider(name: name)
|
||||
#expect(!SettingsDraftPolicy.shouldDiscard(provider))
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user