Files
performics_dev/PerformicsSrc/src/components/SurveyPopup.js
T
NishantRajputRN aa56e08ffd first commit
2026-04-16 15:23:13 +05:30

127 lines
3.1 KiB
JavaScript

import { WebView } from "react-native-webview";
import { useIsFocused } from "@react-navigation/native";
import Modal from "react-native-modal";
const [surveydata, setSurveyData] = useState({});
const [modalVisiblesurvey, setModalVisibleSurvey] = useState(false);
const [surveyloader, setSurveyLoader] = useState(false);
const [isWebViewReady, setWebViewReady] = useState(false);
const webViewRef = useRef(null);
const isFocused = useIsFocused();
const ShowSurveyPopup = async () => {
try {
setSurveyLoader(true);
const raw = JSON.stringify({
ProjectId: "0",
UserId: user?.emp_code,
// UserId: "80307",
});
let res = await fetch(
"https://api1.parinaam.in/api/cpminternal/GetPopupWeburl",
{
method: "POST",
body: raw,
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
},
}
);
let responseJson = await res.json();
if (responseJson) {
setSurveyData(responseJson?.GetPopupWeburl || {});
// console.log("responseJson?.GetPopupWeburl[0]?.Status",responseJson?.GetPopupWeburl[0])
if (responseJson?.GetPopupWeburl[0]?.Status) {
setModalVisibleSurvey(false);
} else {
setModalVisibleSurvey(true);
}
} else {
setSurveyData({});
}
} catch (error) {
alert("Survey Popup:" + error);
} finally {
setSurveyLoader(false);
}
};
useEffect(() => {
ShowSurveyPopup();
}, [isFocused]);
let webUrl = surveydata[0]?.WebUrl;
const injectedJS = `
(function() {
const element = document.getElementById('cpminternalclose');
console.log(element, "element")
if (element) {
window.ReactNativeWebView.postMessage(JSON.stringify({ id: element.id }));
} else {
// window.ReactNativeWebView.postMessage(JSON.stringify({ message: "Element not found" }));
}
})();
true;
`;
const handleMessage = (event) => {
try {
const data = JSON.parse(event.nativeEvent.data);
if (data.error) {
alert(data.error);
} else {
console.log('Element data:', data);
if (data?.id == 'cpminternalclose') {
setTimeout(() => {
setModalVisibleSurvey(false);
ShowSurveyPopup();
}, 2000);
} else {
alert("Id not found");
}
}
} catch (error) {
alert('Error parsing message:', error);
}
};
{
<Modal
animationType="slide"
transparent={true}
visible={modalVisiblesurvey}
// visible={true}
onRequestClose={() => setModalVisibleSurvey(false)}
>
<View style={styles.modalContainer}>
<View style={styles.modalContent}>
<ActivityIndicatior visible={surveyloader} />
<WebView
style={styles.webView}
source={{ uri: webUrl }}
cacheEnabled={false} // Disable cache
incognito={true}
onLoadStart={() => setSurveyLoader(true)}
onLoadEnd={() => {
setSurveyLoader(false);
// setWebViewReady(true);
console.log("ENd Loadingggg...---");
}}
ref={webViewRef}
injectedJavaScript={injectedJS}
onMessage={handleMessage}
/>
</View>
</View>
</Modal>
}