Skip to content

Commit 8d4da84

Browse files
authored
Merge pull request #307 from summit-webapp/bug-fixes
Added Utility function to handle multilingual data and components list
2 parents 9d5de8e + 6b3c99b commit 8d4da84

File tree

31 files changed

+641
-386
lines changed

31 files changed

+641
-386
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { useEffect } from 'react';
2+
import { useDispatch, useSelector } from 'react-redux';
3+
import { ComponentsTypes } from '../../interfaces/meta-data-interface';
4+
import { componentsListFromReduxStore, createComponentsList } from '../../store/slices/general_slices/components-slice';
5+
6+
const useInitializeStoreWithComponentsList = (componentsListData: ComponentsTypes[]) => {
7+
const dispatch = useDispatch();
8+
const { componentsList }: any = useSelector(componentsListFromReduxStore);
9+
10+
useEffect(() => {
11+
if (componentsList?.length === 0) {
12+
dispatch(createComponentsList(componentsListData));
13+
}
14+
}, []);
15+
16+
return {};
17+
};
18+
19+
export default useInitializeStoreWithComponentsList;
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { useEffect, useState } from 'react';
2+
import { useSelector, useDispatch } from 'react-redux';
3+
import { multiLanguageDataFromStore, setMultiLingualData } from '../../store/slices/general_slices/multilang-slice';
4+
import { SelectedFilterLangDataFromStore, SelectedLangData } from '../../store/slices/general_slices/selected-multilanguage-slice';
5+
6+
const useInitializeStoreWithMultiLingualData = (multiLingualData: any) => {
7+
const dispatch = useDispatch();
8+
const { languageData } = useSelector(multiLanguageDataFromStore);
9+
const [selectedLang, setSelectedLang] = useState<any>('en');
10+
11+
useEffect(() => {
12+
dispatch(setMultiLingualData(multiLingualData));
13+
// Retrieve the selected language from localStorage on component mount
14+
const storedLang = localStorage.getItem('selectedLanguage');
15+
if (storedLang) {
16+
setSelectedLang(storedLang);
17+
} else {
18+
// If no language is stored in localStorage, set the default language to English
19+
setSelectedLang('en');
20+
}
21+
}, []);
22+
23+
useEffect(() => {
24+
const params = {
25+
multilanguageData: languageData,
26+
selectedLanguage: selectedLang,
27+
};
28+
dispatch(SelectedLangData(params) as any);
29+
}, [selectedLang, languageData, dispatch]);
30+
31+
return {};
32+
};
33+
34+
export default useInitializeStoreWithMultiLingualData;

hooks/LanguageHook/Multilanguages-hook.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,17 @@ const useMultilangHook = () => {
99
const [multiLanguagesData, SetMultiLanguagesData] = useState<any>([]);
1010
const [selectedLang, setSelectedLang] = useState<any>('en');
1111

12+
const handleLanguageChange = (lang: any) => {
13+
if (lang === 'ar') {
14+
document.documentElement.dir = 'rtl';
15+
} else {
16+
document.documentElement.dir = 'ltr';
17+
}
18+
setSelectedLang(lang);
19+
20+
localStorage.setItem('selectedLanguage', lang);
21+
};
22+
1223
useEffect(() => {
1324
// Retrieve the selected language from localStorage on component mount
1425
const storedLang = localStorage.getItem('selectedLanguage');
@@ -26,17 +37,6 @@ const useMultilangHook = () => {
2637
}
2738
}, [MultiLanguageFromStore]);
2839

29-
const handleLanguageChange = (lang: any) => {
30-
if (lang === 'ar') {
31-
document.documentElement.dir = 'rtl';
32-
} else {
33-
document.documentElement.dir = 'ltr';
34-
}
35-
setSelectedLang(lang);
36-
37-
localStorage.setItem('selectedLanguage', lang);
38-
};
39-
4040
useEffect(() => {
4141
const params = {
4242
multilanguageData: MultiLanguageFromStore?.languageData,
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { useState } from 'react';
2+
import { CONSTANTS } from '../../services/config/app-config';
3+
4+
const useImageGallery = ({ slideShowImages }: any) => {
5+
const [enlargeImg, setEnlargeImg] = useState<string>(slideShowImages?.[0] || ''); // Track the enlarged image
6+
const [activeImgIndex, setActiveImgIndex] = useState<number>(0); // Track the active thumbnail index
7+
8+
const handleSelectedImage = (imageLink: string, imgIndex: number) => {
9+
setEnlargeImg(imageLink);
10+
setActiveImgIndex(imgIndex); // Update the active index
11+
};
12+
13+
// Create srcSet for different screen resolutions
14+
const generateSrcSet = (image: string) => {
15+
return `${CONSTANTS.API_BASE_URL}/${image} 600w,
16+
${CONSTANTS.API_BASE_URL}/${image} 1200w,
17+
${CONSTANTS.API_BASE_URL}/${image} 1800w`;
18+
};
19+
20+
return { enlargeImg, activeImgIndex, handleSelectedImage, generateSrcSet };
21+
};
22+
23+
export default useImageGallery;

interfaces/components-types.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export interface ComponentTypes {
2+
name: string; // The name of the page section
3+
component: string; // The type of component used
4+
page_name: string; // The name of the page (e.g., 'home-page')
5+
section_name: string; // The section within the page (e.g., 'BannerSection')
6+
image: string | null; // The image URL, which can be null if not provided
7+
}
8+
9+
export interface ComponentsListTypes {
10+
componentsList: ComponentTypes[]; // An array of `PageData` objects
11+
}

interfaces/meta-data-interface.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,22 @@
1+
export interface ComponentsTypes {
2+
name: string; // The name of the page section
3+
component: string; // The type of component used
4+
page_name: string; // The name of the page (e.g., 'home-page')
5+
section_name: string; // The section within the page (e.g., 'BannerSection')
6+
image: string | null; // The image URL, which can be null if not provided
7+
}
8+
19
export interface PageMetaDataTypes {
210
page_name: string;
311
meta_title: string;
412
robots: string;
513
description: string;
614
}
7-
8-
export interface MetaDataTypes {
15+
interface PageData {
916
metaData: PageMetaDataTypes;
17+
multiLingualListTranslationTextList: any[];
18+
componentsList: ComponentsTypes[];
19+
}
20+
export interface ServerDataTypes {
21+
serverDataForPages: PageData;
1022
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export interface ProductSlideshowImages {
2+
slideShowImages: string[];
3+
}

0 commit comments

Comments
 (0)