Merge Dev in Staging

This commit is contained in:
Arnaud D. Natali 2023-10-02 16:31:49 +02:00 committed by GitHub
commit aa13cb5fd8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 137 additions and 115 deletions

View File

@ -99,3 +99,15 @@
} }
} }
} }
.loader-container {
display: flex;
flex: 1;
align-items: center;
justify-content: center;
height: 100%;
.loader {
width: 40px;
height: 40px;
}
}

View File

@ -80,109 +80,124 @@ class FolderInformationClass extends BasePage<IPropsClass, IState> {
.modules.pages.Folder.pages.EditCollaborators.props.path.replace("[folderUid]", this.props.selectedFolderUid); .modules.pages.Folder.pages.EditCollaborators.props.path.replace("[folderUid]", this.props.selectedFolderUid);
return ( return (
<DefaultNotaryDashboard title={"Dossier"} isArchived={false} mobileBackText="Retour aux dossiers"> <DefaultNotaryDashboard title={"Dossier"} isArchived={false} mobileBackText="Retour aux dossiers">
<div className={classes["root"]}> {!this.props.isLoading && (
{this.props.selectedFolder ? ( <div className={classes["root"]}>
<div className={classes["folder-informations"]}> {this.props.selectedFolder ? (
<div className={classes["folder-header"]}> <div className={classes["folder-informations"]}>
<div className={classes["header"]}> <div className={classes["folder-header"]}>
<div className={classes["title"]}> <div className={classes["header"]}>
<Typography typo={ITypo.H1Bis}>Informations du dossier</Typography> <div className={classes["title"]}>
<Typography typo={ITypo.H1Bis}>Informations du dossier</Typography>
</div>
<Link href={redirectPathEditCollaborators}>
<Button variant={EButtonVariant.LINE} icon={ChevronIcon}>
Modifier les collaborateurs
</Button>
</Link>
</div> </div>
<Link href={redirectPathEditCollaborators}> <FolderBoxInformation
<Button variant={EButtonVariant.LINE} icon={ChevronIcon}> folder={this.props.selectedFolder}
Modifier les collaborateurs type={EFolderBoxInformationType.INFORMATIONS}
</Button>
</Link>
</div>
<FolderBoxInformation folder={this.props.selectedFolder} type={EFolderBoxInformationType.INFORMATIONS} />
<div className={classes["second-box"]}>
<FolderBoxInformation folder={this.props.selectedFolder} type={EFolderBoxInformationType.DESCRIPTION} />
</div>
<div className={classes["progress-bar"]}>
<QuantityProgressBar
title="Complétion du dossier"
total={100}
currentNumber={this.getCompletionNumber()}
/> />
<div className={classes["second-box"]}>
<FolderBoxInformation
folder={this.props.selectedFolder}
type={EFolderBoxInformationType.DESCRIPTION}
/>
</div>
<div className={classes["progress-bar"]}>
<QuantityProgressBar
title="Complétion du dossier"
total={100}
currentNumber={this.getCompletionNumber()}
/>
</div>
{this.doesFolderHaveCustomer() && <ClientSection folder={this.props.selectedFolder} />}
</div> </div>
{this.doesFolderHaveCustomer() && <ClientSection folder={this.props.selectedFolder} />}
</div>
{!this.doesFolderHaveCustomer() && <ClientSection folder={this.props.selectedFolder} />} {!this.doesFolderHaveCustomer() && <ClientSection folder={this.props.selectedFolder} />}
<div className={classes["button-container"]}> <div className={classes["button-container"]}>
<Button variant={EButtonVariant.GHOST} onClick={this.openArchivedModal}> <Button variant={EButtonVariant.GHOST} onClick={this.openArchivedModal}>
Archiver le dossier Archiver le dossier
</Button> </Button>
{this.everyDocumentValidated() && !this.props.isLoading && ( {this.everyDocumentValidated() && !this.props.isLoading && (
<> <>
{this.props.isAnchored === AnchorStatus.NOT_ANCHORED && ( {this.props.isAnchored === AnchorStatus.NOT_ANCHORED && (
<Button variant={EButtonVariant.PRIMARY} onClick={this.openValidateModal}> <Button variant={EButtonVariant.PRIMARY} onClick={this.openValidateModal}>
Ancrer le dossier Ancrer le dossier
</Button> </Button>
)} )}
{this.props.isAnchored === AnchorStatus.ANCHORING && ( {this.props.isAnchored === AnchorStatus.ANCHORING && (
<Button variant={EButtonVariant.PRIMARY} disabled> <Button variant={EButtonVariant.PRIMARY} disabled>
Ancrage en cours...&nbsp;&nbsp; Ancrage en cours...&nbsp;&nbsp;
<Loader /> <Loader />
</Button> </Button>
)} )}
{this.props.isAnchored === AnchorStatus.VERIFIED_ON_CHAIN && ( {this.props.isAnchored === AnchorStatus.VERIFIED_ON_CHAIN && (
<Button <Button
variant={EButtonVariant.PRIMARY} variant={EButtonVariant.PRIMARY}
onClick={() => this.downloadAnchoringProof(this.props.selectedFolder?.uid)}> onClick={() => this.downloadAnchoringProof(this.props.selectedFolder?.uid)}>
Télécharger la preuve d'ancrage Télécharger la preuve d'ancrage
</Button> </Button>
)} )}
</> </>
)} )}
{!this.doesFolderHaveCustomer() && ( {!this.doesFolderHaveCustomer() && (
<span className={classes["delete-folder"]} onClick={this.openVerifDeleteFolder}> <span className={classes["delete-folder"]} onClick={this.openVerifDeleteFolder}>
<Button variant={EButtonVariant.SECONDARY}>Supprimer le dossier</Button> <Button variant={EButtonVariant.SECONDARY}>Supprimer le dossier</Button>
</span> </span>
)} )}
</div>
<Confirm
isOpen={this.state.isArchivedModalOpen}
onAccept={this.onArchivedModalAccepted}
onClose={this.closeArchivedModal}
closeBtn
header={"Archiver le dossier ?"}
cancelText={"Annuler"}
confirmText={"Archiver"}>
<div className={classes["modal-title"]}>
<Typography typo={ITypo.P_16}>Souhaitez-vous vraiment archiver le dossier ?</Typography>
</div> </div>
<TextAreaField <Confirm
name="archived_description" isOpen={this.state.isArchivedModalOpen}
placeholder="Description" onAccept={this.onArchivedModalAccepted}
onChange={this.onArchivedDescriptionInputChange} onClose={this.closeArchivedModal}
/> closeBtn
</Confirm> header={"Archiver le dossier ?"}
<Confirm cancelText={"Annuler"}
isOpen={this.state.isVerifDeleteModalVisible} confirmText={"Archiver"}>
onAccept={this.deleteFolder} <div className={classes["modal-title"]}>
onClose={this.closeVerifDeleteFolder} <Typography typo={ITypo.P_16}>Souhaitez-vous vraiment archiver le dossier ?</Typography>
closeBtn </div>
header={"Êtes-vous sûr de vouloir supprimer ce dossier ?"} <TextAreaField
cancelText={"Annuler"} name="archived_description"
confirmText={"Confirmer"}> placeholder="Description"
<div className={classes["modal-title"]}> onChange={this.onArchivedDescriptionInputChange}
<Typography typo={ITypo.P_16}>Cette action sera irréversible.</Typography> />
</div> </Confirm>
</Confirm> <Confirm
</div> isOpen={this.state.isVerifDeleteModalVisible}
) : ( onAccept={this.deleteFolder}
<div className={classes["no-folder-selected"]}> onClose={this.closeVerifDeleteFolder}
<Typography typo={ITypo.H1Bis}>Informations du dossier</Typography> closeBtn
<div className={classes["choose-a-folder"]}> header={"Êtes-vous sûr de vouloir supprimer ce dossier ?"}
<Typography typo={ITypo.P_18} color={ITypoColor.GREY}> cancelText={"Annuler"}
Sélectionnez un dossier confirmText={"Confirmer"}>
</Typography> <div className={classes["modal-title"]}>
<Typography typo={ITypo.P_16}>Cette action sera irréversible.</Typography>
</div>
</Confirm>
</div> </div>
) : (
<div className={classes["no-folder-selected"]}>
<Typography typo={ITypo.H1Bis}>Informations du dossier</Typography>
<div className={classes["choose-a-folder"]}>
<Typography typo={ITypo.P_18} color={ITypoColor.GREY}>
Sélectionnez un dossier
</Typography>
</div>
</div>
)}
</div>
)}
{this.props.isLoading && (
<div className={classes["loader-container"]}>
<div className={classes["loader"]}>
<Loader />
</div> </div>
)} </div>
</div> )}
<Confirm <Confirm
isOpen={this.state.isPreventArchiveModalOpen} isOpen={this.state.isPreventArchiveModalOpen}
onAccept={this.closePreventArchiveModal} onAccept={this.closePreventArchiveModal}
@ -389,20 +404,9 @@ export default function FolderInformation(props: IProps) {
let { folderUid } = router.query; let { folderUid } = router.query;
folderUid = folderUid as string; folderUid = folderUid as string;
const verifyAnchorStatus = useCallback(async () => {
if (!folderUid) return;
setIsLoading(true);
try {
const anchorStatus = await OfficeFolderAnchors.getInstance().get(folderUid as string);
setIsAnchored(anchorStatus.status === "VERIFIED_ON_CHAIN" ? AnchorStatus.VERIFIED_ON_CHAIN : AnchorStatus.ANCHORING);
} catch (e) {
setIsAnchored(AnchorStatus.NOT_ANCHORED);
}
setIsLoading(false);
}, [folderUid]);
const getFolder = useCallback(async () => { const getFolder = useCallback(async () => {
if (!folderUid) return; if (!folderUid) return;
setIsLoading(true);
const query = { const query = {
q: { q: {
deed: { include: { deed_type: true } }, deed: { include: { deed_type: true } },
@ -435,17 +439,23 @@ export default function FolderInformation(props: IProps) {
const folder = await Folders.getInstance().getByUid(folderUid as string, query); const folder = await Folders.getInstance().getByUid(folderUid as string, query);
if (folder) { if (folder) {
setSelectedFolder(folder); setSelectedFolder(folder);
}
}, [folderUid]);
useEffect(() => { try {
verifyAnchorStatus(); const anchorStatus = await OfficeFolderAnchors.getInstance().get(folderUid as string);
getFolder(); setIsAnchored(anchorStatus.status === "VERIFIED_ON_CHAIN" ? AnchorStatus.VERIFIED_ON_CHAIN : AnchorStatus.ANCHORING);
}, [verifyAnchorStatus, getFolder]); } catch (e) {
setIsAnchored(AnchorStatus.NOT_ANCHORED);
}
}
setIsLoading(false);
}, [folderUid]);
useEffect(() => { useEffect(() => {
setIsLoading(true); setIsLoading(true);
}, [folderUid]); getFolder();
}, [getFolder]);
return ( return (
<FolderInformationClass <FolderInformationClass
{...props} {...props}

View File

@ -47,7 +47,7 @@ const MyApp = (({
instance.BACK_API_HOST = backApiHost ?? "api.stg.lecoffre.smart-chain.fr"; instance.BACK_API_HOST = backApiHost ?? "api.stg.lecoffre.smart-chain.fr";
instance.BACK_API_ROOT_URL = backApiRootUrl ?? "/api"; instance.BACK_API_ROOT_URL = backApiRootUrl ?? "/api";
instance.BACK_API_VERSION = backApiVersion ?? "/v1"; instance.BACK_API_VERSION = backApiVersion ?? "/v1";
instance.FRONT_APP_HOST = frontAppHost ?? "app.stg.lecoffre.smart-chain.fr"; instance.FRONT_APP_HOST = frontAppHost ?? "https://app.stg.lecoffre.smart-chain.fr";
instance.IDNOT_BASE_URL = idNotBaseUrl ?? "https://qual-connexion.idnot.fr"; instance.IDNOT_BASE_URL = idNotBaseUrl ?? "https://qual-connexion.idnot.fr";
instance.IDNOT_AUTHORIZE_ENDPOINT = idNotAuthorizeEndpoint ?? "/IdPOAuth2/authorize/idnot_idp_v1"; instance.IDNOT_AUTHORIZE_ENDPOINT = idNotAuthorizeEndpoint ?? "/IdPOAuth2/authorize/idnot_idp_v1";
instance.IDNOT_CLIENT_ID = idNotClientId ?? "4501646203F3EF67"; instance.IDNOT_CLIENT_ID = idNotClientId ?? "4501646203F3EF67";