fix(settings): save all config atomically and strip trailing slash from API URL

- Save API URL and sound paths in a single load-modify-write cycle to
  prevent race conditions that wiped previously saved config
- Strip trailing slashes from API URL to avoid double-slash 404 errors
- Make AppConfigService.saveConfig public for batch config writes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Misaka_Company
2026-05-13 16:58:39 +08:00
parent 42a9cc7204
commit 077a1ab1b9
2 changed files with 17 additions and 28 deletions

View File

@@ -38,11 +38,11 @@ class AppConfigService {
Future<void> setString(String key, String value) async {
final config = await loadConfig();
config[key.toString()] = value.toString();
await _saveConfig(config);
await saveConfig(config);
}
/// 完整写入 JSON 文件
Future<void> _saveConfig(Map<String, dynamic> config) async {
Future<void> saveConfig(Map<String, dynamic> config) async {
try {
final file = File(await _filePath);
await file.writeAsString(jsonEncode(config));