diff --git a/src/features/shared/Snowfall.jsx b/src/features/shared/Snowfall.jsx
index 7d6ef0a..a1e99f2 100644
--- a/src/features/shared/Snowfall.jsx
+++ b/src/features/shared/Snowfall.jsx
@@ -8,8 +8,54 @@ import {
import { useSelector } from "react-redux";
import GetTheme from "../../themes/ThemeProvider";
import GetAutoThemeId from "../../constants/themeDates";
+import { useState } from "react";
+import { useEffect } from "react";
export default function SnowfallWrapper() {
+ const [snowflakeCount, setSnowflakeCount] = useState(150);
+ const [isSnowReducerRunning, setIsSnowReducerRunning] = useState(false);
+
+ const isHeatOn = useSelector((state) => state.deviceInteraction.isHeatOn);
+
+ const currentTargetTemperature = useSelector(
+ (state) => state.deviceInteraction.targetTemperature
+ );
+
+ const currentTemperature = useSelector(
+ (state) => state.deviceInteraction.currentTemperature
+ );
+
+ useEffect(() => {
+ let intervalId;
+ if (isSnowReducerRunning) {
+ intervalId = setInterval(() => {
+ reduceStorm();
+ }, 125);
+ }
+
+ return () => clearInterval(intervalId);
+ }, [isSnowReducerRunning]);
+
+ const reduceStorm = () => {
+ setSnowflakeCount((currentCount) => {
+ const newSnowflakeCount = currentCount - 1;
+ if (newSnowflakeCount < 10) return 10;
+ return newSnowflakeCount;
+ });
+ };
+
+ useEffect(() => {
+ if (
+ isHeatOn &&
+ Math.abs(currentTargetTemperature - currentTemperature) > 5
+ ) {
+ setIsSnowReducerRunning(true);
+ } else {
+ setIsSnowReducerRunning(false);
+ setSnowflakeCount(150);
+ }
+ }, [isHeatOn, currentTargetTemperature, currentTemperature]);
+
const currentThemeId = useSelector(
(state) => state.settings.config?.currentTheme || GetTheme().themeId
);
@@ -36,7 +82,7 @@ export default function SnowfallWrapper() {
return ;
case funId:
return (
-
+
/*