parent
15867bb177
commit
3c20065e03
@ -1,10 +1,48 @@
|
||||
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
/// API base URL (no trailing slash). Loaded from .env as API_BASE_URL.
|
||||
const String _overrideKey = 'api_base_url_override';
|
||||
|
||||
String? _override;
|
||||
|
||||
String _fromEnv() {
|
||||
final raw = dotenv.env['API_BASE_URL']?.trim() ?? '';
|
||||
final url = raw.replaceAll(' ', '');
|
||||
if (url.isEmpty) return 'http://localhost:3001';
|
||||
return url.endsWith('/') ? url.substring(0, url.length - 1) : url;
|
||||
}
|
||||
|
||||
/// API base URL (no trailing slash). Uses in-app override if set, else .env.
|
||||
/// Strips spaces so accidental spaces don't break DNS.
|
||||
String get apiBaseUrl {
|
||||
final url = dotenv.env['API_BASE_URL']?.trim();
|
||||
if (url == null || url.isEmpty) {
|
||||
return 'http://localhost:3001';
|
||||
if (_override != null && _override!.trim().isNotEmpty) {
|
||||
final u = _override!.trim().replaceAll(' ', '');
|
||||
if (u.isNotEmpty) {
|
||||
return u.endsWith('/') ? u.substring(0, u.length - 1) : u;
|
||||
}
|
||||
return url.endsWith('/') ? url.substring(0, url.length - 1) : url;
|
||||
}
|
||||
return _fromEnv();
|
||||
}
|
||||
|
||||
/// Load saved override from disk. Call once at startup.
|
||||
Future<void> loadApiBaseUrlOverride() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
_override = prefs.getString(_overrideKey);
|
||||
}
|
||||
|
||||
/// Save or clear the in-app base URL override. Pass null or empty to use .env again.
|
||||
Future<void> setApiBaseUrlOverride(String? value) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
if (value == null || value.trim().isEmpty) {
|
||||
await prefs.remove(_overrideKey);
|
||||
_override = null;
|
||||
return;
|
||||
}
|
||||
final u = value.trim().replaceAll(' ', '');
|
||||
final withoutSlash = u.endsWith('/') ? u.substring(0, u.length - 1) : u;
|
||||
await prefs.setString(_overrideKey, withoutSlash);
|
||||
_override = withoutSlash;
|
||||
}
|
||||
|
||||
/// Current default from .env (ignoring override). For display only.
|
||||
String get apiBaseUrlDefault => _fromEnv();
|
||||
|
||||
Loading…
Reference in new issue