aboutsummaryrefslogtreecommitdiff
path: root/modern/src/store/throttleMiddleware.js
diff options
context:
space:
mode:
Diffstat (limited to 'modern/src/store/throttleMiddleware.js')
-rw-r--r--modern/src/store/throttleMiddleware.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/modern/src/store/throttleMiddleware.js b/modern/src/store/throttleMiddleware.js
new file mode 100644
index 00000000..9954b139
--- /dev/null
+++ b/modern/src/store/throttleMiddleware.js
@@ -0,0 +1,39 @@
+import { batch } from "react-redux";
+
+const threshold = 3;
+const interval = 1500;
+
+export default () => (next) => {
+ const buffer = [];
+ let throttle = false;
+ let counter = 0;
+
+ setInterval(() => {
+ console.log('batch');
+ if (throttle) {
+ if (buffer.length < threshold) {
+ throttle = false;
+ }
+ batch(() => buffer.splice(0, buffer.length).forEach((action) => next(action)));
+ } else {
+ if (counter > threshold) {
+ throttle = true;
+ }
+ counter = 0;
+ }
+ }, interval);
+
+ return (action) => {
+ console.log(action);
+ if (action.type === 'devices/update' || action.type === 'positions/update') {
+ if (throttle) {
+ buffer.push(action);
+ } else {
+ counter += 1;
+ return next(action);
+ }
+ } else {
+ return next(action);
+ }
+ };
+};