aboutsummaryrefslogtreecommitdiff
path: root/src/common/util/useFeatures.js
diff options
context:
space:
mode:
authorAnton Tananaev <anton@traccar.org>2024-04-06 09:22:10 -0700
committerAnton Tananaev <anton@traccar.org>2024-04-06 09:22:10 -0700
commitf418231b6b2f5e030a0d2dcc390c314602b1f740 (patch)
tree10326adf3792bc2697e06bb5f2b8ef2a8f7e55fe /src/common/util/useFeatures.js
parentb392a4af78e01c8e0f50aad5468e9583675b24be (diff)
downloadtrackermap-web-f418231b6b2f5e030a0d2dcc390c314602b1f740.tar.gz
trackermap-web-f418231b6b2f5e030a0d2dcc390c314602b1f740.tar.bz2
trackermap-web-f418231b6b2f5e030a0d2dcc390c314602b1f740.zip
Move modern to the top
Diffstat (limited to 'src/common/util/useFeatures.js')
-rw-r--r--src/common/util/useFeatures.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/common/util/useFeatures.js b/src/common/util/useFeatures.js
new file mode 100644
index 00000000..30361589
--- /dev/null
+++ b/src/common/util/useFeatures.js
@@ -0,0 +1,44 @@
+import { createSelector } from '@reduxjs/toolkit';
+import { useSelector } from 'react-redux';
+
+const get = (server, user, key) => {
+ if (server && user) {
+ if (user.administrator) {
+ return false;
+ }
+ if (server.forceSettings) {
+ return server.attributes[key] || user.attributes[key] || false;
+ }
+ return user.attributes[key] || server.attributes[key] || false;
+ }
+ return false;
+};
+
+const featureSelector = createSelector(
+ (state) => state.session.server,
+ (state) => state.session.user,
+ (server, user) => {
+ const disableSavedCommands = get(server, user, 'ui.disableSavedCommands');
+ const disableAttributes = get(server, user, 'ui.disableAttributes');
+ const disableVehicleFeatures = get(server, user, 'ui.disableVehicleFeatures');
+ const disableDrivers = disableVehicleFeatures || get(server, user, 'ui.disableDrivers');
+ const disableMaintenance = disableVehicleFeatures || get(server, user, 'ui.disableMaintenance');
+ const disableGroups = get(server, user, 'ui.disableGroups');
+ const disableEvents = get(server, user, 'ui.disableEvents');
+ const disableComputedAttributes = get(server, user, 'ui.disableComputedAttributes');
+ const disableCalendars = get(server, user, 'ui.disableCalendars');
+
+ return {
+ disableSavedCommands,
+ disableAttributes,
+ disableDrivers,
+ disableMaintenance,
+ disableGroups,
+ disableEvents,
+ disableComputedAttributes,
+ disableCalendars,
+ };
+ },
+);
+
+export default () => useSelector(featureSelector);