2
0
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:
Oliver Walters
2022-05-09 21:41:34 +10:00
parent da3b668e8c
commit 059b69ce99
5 changed files with 61 additions and 7 deletions

View File

@ -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 "";
}
}
}