diff --git a/app/(tabs)/index.tsx b/app/(tabs)/index.tsx
index 0aecee5..d54a916 100644
--- a/app/(tabs)/index.tsx
+++ b/app/(tabs)/index.tsx
@@ -38,14 +38,18 @@ import {
import { setDueAmount } from "@/store/paymentSlice";
import { Image } from "expo-image";
import EMINotification from "@/components/Payments/EmiNotification";
+import { initSocket } from "@/services/socket";
+import { useSnackbar } from "@/contexts/Snackbar";
export default function HomeScreen() {
const { t } = useTranslation();
const navigation = useNavigation();
const [isSupportModalVisible, setIsSupportModalVisible] = useState(false);
- const { SoC, SoH, chargingState, lat, lon, loading, totalDistance } =
+ const { SoC, SoH, chargingState, lat, lon, loading, totalDistance, error } =
useSelector((state: RootState) => state.telemetry);
+ const { showSnackbar } = useSnackbar();
+
const [refreshing, setRefreshing] = useState(false);
const spinValue = useState(new Animated.Value(0))[0];
@@ -206,12 +210,15 @@ export default function HomeScreen() {
setRefreshing(true);
startSpin();
- // await dispatch(clearUser());
- await dispatch(getUserDetails());
- await dispatch(getPaymentSummary());
+ await dispatch(clearUser());
+ await Promise.all([
+ dispatch(getUserDetails()).unwrap(),
+ dispatch(getPaymentSummary()).unwrap(),
+ ]);
- console.log("Manual refresh complete");
+ await initSocket();
} catch (error) {
+ showSnackbar("Something went wrong", "error");
console.error("Manual refresh failed", error);
} finally {
stopSpin();
@@ -291,12 +298,10 @@ export default function HomeScreen() {
) : null}
- {loading ? (
+ {error ? (
-
- {t("home.fetching-location")}
-
+ {t("home.error-location")}
) : lat != null && lon != null && !(lat == 0 && lon == 0) ? (
<>
@@ -342,18 +347,19 @@ export default function HomeScreen() {
) : (
- {t("home.error-location")}
+
+ {t("home.fetching-location")}
+
)}
- {warrantyEndDate && warrantyStartDate && (
- router.push("/(tabs)/my-battery")}>
-
-
- )}
+
+ router.push("/(tabs)/my-battery")}>
+
+
- {t("service.issue")} *
+ {t("service.issue")}{" "}
+ {values.serviceType == "On-demand" && (
+ *
+ )}
@@ -366,7 +375,7 @@ export default function ServiceFormScreen(): JSX.Element {
- {t("service.select-datetime")}
+ {t("service.select-datetime")}{" "}
*
{
- //failure, confirmed, pending
-
const router = useRouter();
const handlePress = () => {
@@ -58,7 +56,6 @@ export default ({
const statusStyle = getStatusStyle(status);
return (
- //
{date}
@@ -82,7 +79,6 @@ export default ({
)}
- //
);
};
diff --git a/constants/config.ts b/constants/config.ts
index 89f1b3d..2f40e2d 100644
--- a/constants/config.ts
+++ b/constants/config.ts
@@ -69,7 +69,7 @@ export const useTabConfig = () => {
};
export const SERVICE = {
- ENABLE_REGULAR_SERVICE_AFTER_IN_MONTHS: 6,
+ ENABLE_REGULAR_SERVICE_AFTER_IN_MONTHS: 1,
};
export const MESSAGES = {
diff --git a/services/socket.ts b/services/socket.ts
index 699f947..1fbacc5 100644
--- a/services/socket.ts
+++ b/services/socket.ts
@@ -4,6 +4,7 @@ import {
updateTelemetry,
setTelemetryLoading,
setTelemetryError,
+ clearTelemetry,
} from "../store/telemetrySlice";
import { BmsState } from "@/constants/types";
import { BASE_URL, SOCKET_BASE_URL, VECTOR_BASE_URL } from "@/constants/config";
@@ -29,6 +30,7 @@ const fetchToken = async (): Promise => {
`${BASE_URL}/api/v1/vec-token`
);
+ console.log("response.data.data.token", response.data.data.token);
return response.data.data.token;
} catch (error) {
console.error("Error fetching token:", error);
@@ -106,11 +108,18 @@ export const connectSocket = () => {
export const initSocket = async () => {
try {
+ if (socket) {
+ socket.disconnect();
+ socket = null;
+ console.log("Previous socket disconnected before reinitializing");
+ }
+
+ store.dispatch(clearTelemetry());
const hardwareDeviceId =
store.getState().user.data?.batteries?.[0]?.device_id;
if (!hardwareDeviceId) {
console.warn("initSocket skipped: hardwareDeviceId not ready");
- return; // just exit gracefully
+ return;
}
console.log(hardwareDeviceId, "hardware deviced");
diff --git a/store/telemetrySlice.ts b/store/telemetrySlice.ts
index 36cd0ef..29b283e 100644
--- a/store/telemetrySlice.ts
+++ b/store/telemetrySlice.ts
@@ -37,9 +37,14 @@ export const telemetrySlice = createSlice({
state.loading = false;
state.error = action.payload;
},
+ clearTelemetry: () => initialState,
},
});
-export const { updateTelemetry, setTelemetryLoading, setTelemetryError } =
- telemetrySlice.actions;
+export const {
+ updateTelemetry,
+ setTelemetryLoading,
+ clearTelemetry,
+ setTelemetryError,
+} = telemetrySlice.actions;
export default telemetrySlice.reducer;
diff --git a/store/userSlice.ts b/store/userSlice.ts
index 80aa4b4..373c0e5 100644
--- a/store/userSlice.ts
+++ b/store/userSlice.ts
@@ -113,7 +113,7 @@ const userSlice = createSlice({
initialState,
reducers: {
clearUser: (state) => {
- state.data = null;
+ state.loading = true;
state.error = null;
state.loading = false;
state.paymentSummary = null;