t190:Gemini 金鑰刪不掉——清空輸入框現在真的會刪除
leo 08-04 實撞:「我切到 Gemini 把內容刪掉,再切回 Workers AI,儲存, 回去發現 Gemini Key 還在」。要求:「如果他不想留 Key 了,要可以刪除」。 真兇:cfg.GeminiAPIKey = key 寫在 if useGemini 裡 ⇒ 選回雲端 AI 時整段跳過, 舊金鑰原封不動(帳號層同病)⇒ 清空輸入框等於沒作用。 改成無條件以輸入框為準(清空=刪除),符合使用者心智模型: 我把欄位清空並按儲存,它就該不見。頂層與每個帳號層一併清。 測試:新增 t190_test.go 兩則——清空要真的清掉(頂層+所有帳號層)、 選 Gemini 填值時每層都要寫進去(不可被本次修改弄壞)。兩則皆過,全套綠。
This commit is contained in:
+11
-4
@@ -950,16 +950,23 @@ func main() {
|
||||
engine := "workers-ai"
|
||||
if useGemini {
|
||||
engine = "gemma"
|
||||
cfg.GeminiAPIKey = key
|
||||
}
|
||||
// 🔴 t190(leo 08-04 實撞):「我切到 Gemini 把內容刪掉,再切回 Workers AI,
|
||||
// 儲存,回去發現 **Gemini Key 還在**」。
|
||||
//
|
||||
// 舊版把 `cfg.GeminiAPIKey = key` 寫在 `if useGemini` 裡 ⇒ 選回雲端 AI 時
|
||||
// 整段跳過、舊金鑰原封不動 ⇒ **清空輸入框等於沒作用,金鑰刪不掉**。
|
||||
// leo 要求:「如果他不想留 Key 了,**要可以刪除**」。
|
||||
//
|
||||
// 改成**無條件以輸入框為準**(清空=刪除),才符合使用者的心智模型:
|
||||
// 我把欄位清空並按儲存,它就該不見。
|
||||
cfg.GeminiAPIKey = key
|
||||
// 機器層寫一份當預設;各帳號層一併寫,避免舊 config 殘留的空欄位繼承到別的值。
|
||||
cfg.Extractor = engine
|
||||
cfg.ExtractorExplicit = true // ← 使用者主動選過,之後不再被預設覆蓋
|
||||
for i := range cfg.Accounts {
|
||||
cfg.Accounts[i].Extractor = engine
|
||||
if useGemini {
|
||||
cfg.Accounts[i].GeminiAPIKey = key
|
||||
}
|
||||
cfg.Accounts[i].GeminiAPIKey = key // 同上:帳號層也要能被清空
|
||||
}
|
||||
if err := saveConfig(cfg); err != nil {
|
||||
dialog.ShowError(err, win)
|
||||
|
||||
Reference in New Issue
Block a user