NTP-22476 | clickstream added for training module close

This commit is contained in:
Aman Chaturvedi
2025-01-21 15:08:16 +05:30
parent b8a79c1944
commit f0dcd9648f
4 changed files with 32 additions and 14 deletions

View File

@@ -1436,6 +1436,10 @@ export const CLICKSTREAM_EVENT_NAMES = {
name: 'FA_TRAINING_MATERIAL_ITEM_LOADED',
description: 'Training material item loaded',
},
FA_TRAINING_MATERIAL_ITEM_CLOSED: {
name: 'FA_TRAINING_MATERIAL_ITEM_CLOSED',
description: 'Training material item closed',
},
FA_TRAINING_MATERIAL_PDF_PAGE_CHANGED: {
name: 'FA_TRAINING_MATERIAL_PDF_PAGE_CHANGED',
description: 'Training material PDF page changed',

View File

@@ -13,19 +13,29 @@ import { DocumentContentType } from '@screens/caseDetails/interface';
const ERROR_STATE = 'ERROR';
const PdfRenderer: React.FC<IPdfRenderer> = ({ docId, url, onPageChange }) => {
const PdfRenderer: React.FC<IPdfRenderer> = ({ docId, onPageChange, getFileUri }) => {
const [pdfFilePath, setPdfFilePath] = useState('');
const isLoading = !pdfFilePath;
const error = pdfFilePath === ERROR_STATE;
const saveFileToCache = async () => {
const checkIfFileExists = async () => {
const cacheDirectory = RNFetchBlob.fs.dirs.CacheDir;
const cacheFilePath = `${cacheDirectory}/${docId}.pdf`;
const doesFileExist = await RNFetchBlob.fs.exists(cacheFilePath);
return { doesFileExist, cacheFilePath };
};
const saveFileToCache = async () => {
const { doesFileExist, cacheFilePath } = await checkIfFileExists();
if (doesFileExist) {
setPdfFilePath(cacheFilePath);
return;
}
const url = await getFileUri();
if (!url) {
setPdfFilePath(ERROR_STATE);
return;
}
const highQualityResponse = await RNFetchBlob.fetch('GET', url);
if (highQualityResponse.respInfo.status !== 200) {
setPdfFilePath(ERROR_STATE);
@@ -46,7 +56,7 @@ const PdfRenderer: React.FC<IPdfRenderer> = ({ docId, url, onPageChange }) => {
useEffect(() => {
saveFileToCache();
}, [url]);
}, []);
const handlePageChange = (pageNumber: number) => {
if (isNaN(pageNumber) || !isFunction(onPageChange)) return;

View File

@@ -1,5 +1,5 @@
export interface IPdfRenderer {
docId: string;
url: string;
onPageChange?: (pageNumber: number) => void;
}
docId: string;
getFileUri: () => Promise<string>;
onPageChange?: (pageNumber: number) => void;
}

View File

@@ -32,13 +32,12 @@ const TrainingMaterialDetail: React.FC<TrainingMaterialDetailProps> = (props) =>
showError: false,
});
const getFileDetails = async () => {
const getFileUri = async () => {
try {
setFileDetails({ ...fileDetails, loading: true, showError: false });
const data = await getTrainingMaterialDetails(referenceId);
setFileDetails({ ...data, loading: false });
return data?.signedUri;
} catch {
setFileDetails({ ...fileDetails, loading: false, showError: true });
return '';
}
};
@@ -47,7 +46,12 @@ const TrainingMaterialDetail: React.FC<TrainingMaterialDetailProps> = (props) =>
fileType,
referenceId,
});
getFileDetails();
return () => {
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_TRAINING_MATERIAL_ITEM_CLOSED, {
fileType,
referenceId,
});
};
}, []);
const handlePageChange = (pageNumber: number) => {
@@ -71,9 +75,9 @@ const TrainingMaterialDetail: React.FC<TrainingMaterialDetailProps> = (props) =>
<WebViewVideoPlayer url={fileDetails?.signedUri} />
) : (
<PdfRenderer
docId={fileDetails?.referenceId}
docId={referenceId}
onPageChange={handlePageChange}
url={fileDetails?.signedUri}
getFileUri={getFileUri}
/>
)}
</SuspenseLoader>