NTP-22476 | clickstream added for training module close
This commit is contained in:
@@ -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',
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
export interface IPdfRenderer {
|
||||
docId: string;
|
||||
url: string;
|
||||
onPageChange?: (pageNumber: number) => void;
|
||||
}
|
||||
docId: string;
|
||||
getFileUri: () => Promise<string>;
|
||||
onPageChange?: (pageNumber: number) => void;
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user