mirror of
https://github.com/inventree/inventree-app.git
synced 2025-06-12 02:05:29 +00:00
Adds code to requeest global setting from server
- Settings are individually cached for 5 minutes - For now, use it for the purchase order reference prefix
This commit is contained in:
36
lib/api.dart
36
lib/api.dart
@ -452,6 +452,10 @@ class InvenTreeAPI {
|
||||
_connecting = false;
|
||||
_token = "";
|
||||
profile = null;
|
||||
|
||||
// Clear received settings
|
||||
_globalSettings.clear();
|
||||
_userSettings.clear();
|
||||
}
|
||||
|
||||
Future<bool> connectToServer() async {
|
||||
@ -488,7 +492,9 @@ class InvenTreeAPI {
|
||||
return _connected;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Request the user roles (permissions) from the InvenTree server
|
||||
*/
|
||||
Future<void> getUserRoles() async {
|
||||
|
||||
roles.clear();
|
||||
@ -1143,4 +1149,32 @@ class InvenTreeAPI {
|
||||
cacheManager: manager,
|
||||
);
|
||||
}
|
||||
|
||||
bool get supportsSettings => isConnected() && apiVersion >= 45;
|
||||
|
||||
// Keep a record of which settings we have received from the server
|
||||
Map<String, InvenTreeGlobalSetting> _globalSettings = {};
|
||||
Map<String, InvenTreeUserSetting> _userSettings = {};
|
||||
|
||||
Future<String> getGlobalSetting(String key) async {
|
||||
|
||||
if (!supportsSettings) return "";
|
||||
|
||||
InvenTreeGlobalSetting? setting = _globalSettings[key];
|
||||
|
||||
if ((setting != null) && setting.reloadedWithin(Duration(minutes: 5))) {
|
||||
return setting.value;
|
||||
}
|
||||
|
||||
final response = await InvenTreeGlobalSetting().getModel(key);
|
||||
|
||||
if (response is InvenTreeGlobalSetting) {
|
||||
response.lastReload = DateTime.now();
|
||||
_globalSettings[key] = response;
|
||||
return response.value;
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user