Merge branch 'dev' into staging

This commit is contained in:
Maxime Lalo 2023-09-29 19:21:31 +02:00
commit aa6de06a17
7 changed files with 48 additions and 33 deletions

View File

@ -207,7 +207,7 @@ export default class DepositDocument extends React.Component<IProps, IState> {
</div> </div>
{this.props.document.document_status === EDocumentStatus.REFUSED && ( {this.props.document.document_status === EDocumentStatus.REFUSED && (
<Typography typo={ITypo.CAPTION_14} className={classes["error-message"]}> <Typography typo={ITypo.CAPTION_14} className={classes["error-message"]}>
Ce document nest pas conforme. Veuillez le déposer à nouveau. Ce document n'est pas conforme. Veuillez le déposer à nouveau.
</Typography> </Typography>
)} )}
</div> </div>

View File

@ -24,7 +24,6 @@ export default function Navigation() {
redirectUrl: notification.notification.redirection_url, redirectUrl: notification.notification.redirection_url,
}); });
}); });
console.log(notifications);
}, []); }, []);
useEffect(() => { useEffect(() => {

View File

@ -24,15 +24,15 @@ export default function ClientDashboard(props: IProps) {
const [isAddDocumentModalVisible, setIsAddDocumentModalVisible] = useState<boolean>(false); const [isAddDocumentModalVisible, setIsAddDocumentModalVisible] = useState<boolean>(false);
const getDocuments = useCallback(async () => { const getDocuments = useCallback(async () => {
let jwt: ICustomerJwtPayload | undefined;; let jwt: ICustomerJwtPayload | undefined;
if (typeof document !== "undefined") { if (typeof document !== "undefined") {
jwt = JwtService.getInstance().decodeCustomerJwt(); jwt = JwtService.getInstance().decodeCustomerJwt();
} }
const folder = await Folders.getInstance().getByUid(folderUid as string, { q: { office: true, customers: true } }); const folder = await Folders.getInstance().getByUid(folderUid as string, { q: { office: true, customers: true } });
console.log(folder) console.log(folder);
const actualCustomer = folder?.customers?.find((customer) => customer.uid === jwt?.customerId); const actualCustomer = folder?.customers?.find((customer) => customer.uid === jwt?.customerId);
if(!actualCustomer) throw new Error("Customer not found"); if (!actualCustomer) throw new Error("Customer not found");
const query: IGetDocumentsparams = { const query: IGetDocumentsparams = {
where: { depositor: { uid: actualCustomer.uid }, folder_uid: folderUid as string }, where: { depositor: { uid: actualCustomer.uid }, folder_uid: folderUid as string },
@ -47,7 +47,7 @@ export default function ClientDashboard(props: IProps) {
const documentList = await Documents.getInstance().get(query); const documentList = await Documents.getInstance().get(query);
//const folder = await Folders.getInstance().getByUid(folderUid as string, { q: { office: true, customers: true } }); //const folder = await Folders.getInstance().getByUid(folderUid as string, { q: { office: true, customers: true } });
setFolder(folder); setFolder(folder);
setDocuments(documentList); setDocuments(documentList);
setCustomer(actualCustomer); setCustomer(actualCustomer);
@ -91,12 +91,9 @@ export default function ClientDashboard(props: IProps) {
Votre notaire est dans l'attente de documents pour valider votre dossier. Voici la liste des documents.Veuillez Votre notaire est dans l'attente de documents pour valider votre dossier. Voici la liste des documents.Veuillez
glisser / déposez chaque document dans la zone prévue à cet effet ou cliquez sur la zone puis sélectionnez le glisser / déposez chaque document dans la zone prévue à cet effet ou cliquez sur la zone puis sélectionnez le
document correspondant. Si un des documents demandés ne vous concernent pas, veuillez contacter votre notaire à document correspondant. Si un des documents demandés ne vous concernent pas, veuillez contacter votre notaire à
laide du bouton ci-dessus. l'aide du bouton ci-dessus.
</Typography> </Typography>
</div> </div>
<a href="mailto:g.texier@notaires.fr" target="_blank">
<Button className={classes["button"]}>Contacter mon notaire</Button>
</a>
</div> </div>
); );
}, [customer, folder?.folder_number, folder?.name, folder?.office?.name]); }, [customer, folder?.folder_number, folder?.name, folder?.office?.name]);

View File

@ -97,12 +97,9 @@ export default class ClientDashboard extends Base<IProps, IState> {
Votre notaire est dans l'attente de documents pour valider votre dossier. Voici la liste des documents.Veuillez Votre notaire est dans l'attente de documents pour valider votre dossier. Voici la liste des documents.Veuillez
glisser / déposez chaque document dans la zone prévue à cet effet ou cliquez sur la zone puis sélectionnez le glisser / déposez chaque document dans la zone prévue à cet effet ou cliquez sur la zone puis sélectionnez le
document correspondant. Si un des documents demandés ne vous concernent pas, veuillez contacter votre notaire à document correspondant. Si un des documents demandés ne vous concernent pas, veuillez contacter votre notaire à
laide du bouton ci-dessus. l'aide du bouton ci-dessus.
</Typography> </Typography>
</div> </div>
<a href="mailto:g.texier@notaires.fr" target="_blank">
<Button className={classes["button"]}>Contacter mon notaire</Button>
</a>
</div> </div>
); );
} }

View File

@ -70,7 +70,7 @@ export default function DocumentTypesEdit() {
/> />
<TextAreaField <TextAreaField
name="public_description" name="public_description"
placeholder="Description visible par les clients de loffice" placeholder="Description visible par les clients de l'office"
defaultValue={documentTypeSelected?.public_description} defaultValue={documentTypeSelected?.public_description}
/> />
<div className={classes["buttons-container"]}> <div className={classes["buttons-container"]}>

View File

@ -36,6 +36,7 @@ type IState = {
isValidateModalVisible: boolean; isValidateModalVisible: boolean;
hasValidateAnchoring: boolean; hasValidateAnchoring: boolean;
isVerifDeleteModalVisible: boolean; isVerifDeleteModalVisible: boolean;
isAnchored: boolean | null;
}; };
class FolderInformationClass extends BasePage<IPropsClass, IState> { class FolderInformationClass extends BasePage<IPropsClass, IState> {
public constructor(props: IPropsClass) { public constructor(props: IPropsClass) {
@ -47,6 +48,7 @@ class FolderInformationClass extends BasePage<IPropsClass, IState> {
isValidateModalVisible: false, isValidateModalVisible: false,
hasValidateAnchoring: false, hasValidateAnchoring: false,
isVerifDeleteModalVisible: false, isVerifDeleteModalVisible: false,
isAnchored: null,
}; };
this.onSelectedFolder = this.onSelectedFolder.bind(this); this.onSelectedFolder = this.onSelectedFolder.bind(this);
this.openArchivedModal = this.openArchivedModal.bind(this); this.openArchivedModal = this.openArchivedModal.bind(this);
@ -60,6 +62,7 @@ class FolderInformationClass extends BasePage<IPropsClass, IState> {
this.openValidateModal = this.openValidateModal.bind(this); this.openValidateModal = this.openValidateModal.bind(this);
this.openVerifDeleteFolder = this.openVerifDeleteFolder.bind(this); this.openVerifDeleteFolder = this.openVerifDeleteFolder.bind(this);
this.closeVerifDeleteFolder = this.closeVerifDeleteFolder.bind(this); this.closeVerifDeleteFolder = this.closeVerifDeleteFolder.bind(this);
this.verifyAnchorStatus = this.verifyAnchorStatus.bind(this);
} }
// TODO: Message if the user has not created any folder yet // TODO: Message if the user has not created any folder yet
@ -109,16 +112,20 @@ class FolderInformationClass extends BasePage<IPropsClass, IState> {
Archiver le dossier Archiver le dossier
</Button> </Button>
{this.everyDocumentValidated() && ( {this.everyDocumentValidated() && (
<Button variant={EButtonVariant.PRIMARY} onClick={this.openValidateModal}> <>
Ancrer le dossier {this.state.isAnchored === null && (
</Button> <Button variant={EButtonVariant.PRIMARY} onClick={this.openValidateModal}>
)} Ancrer le dossier
{this.everyDocumentValidated() && ( </Button>
<Button )}
variant={EButtonVariant.PRIMARY} {this.state.isAnchored === true && (
onClick={() => this.downloadAnchoringProof(this.state.selectedFolder?.uid)}> <Button
Télécharger la preuve d'ancrage variant={EButtonVariant.PRIMARY}
</Button> onClick={() => this.downloadAnchoringProof(this.state.selectedFolder?.uid)}>
Télécharger la preuve d'ancrage
</Button>
)}
</>
)} )}
{!this.doesFolderHaveCustomer() && ( {!this.doesFolderHaveCustomer() && (
<span className={classes["delete-folder"]} onClick={this.openVerifDeleteFolder}> <span className={classes["delete-folder"]} onClick={this.openVerifDeleteFolder}>
@ -207,11 +214,30 @@ class FolderInformationClass extends BasePage<IPropsClass, IState> {
); );
} }
public override async componentDidMount() { public override async componentDidMount() {
this.setState({ const selectedFolder = await this.getFolder();
selectedFolder: (await this.getFolder()) as OfficeFolder, this.setState(
}); {
selectedFolder,
},
() => {
this.verifyAnchorStatus();
},
);
} }
private async verifyAnchorStatus() {
if (!this.state.selectedFolder || !this.state.selectedFolder.uid) return;
try {
const anchorStatus = await OfficeFolderAnchors.getInstance().get(this.state.selectedFolder.uid!);
this.setState({
isAnchored: anchorStatus.status === "VERIFIED_ON_CHAIN",
});
} catch (e) {
this.setState({
isAnchored: null,
});
}
}
public openVerifDeleteFolder() { public openVerifDeleteFolder() {
this.setState({ this.setState({
isVerifDeleteModalVisible: true, isVerifDeleteModalVisible: true,
@ -267,15 +293,11 @@ class FolderInformationClass extends BasePage<IPropsClass, IState> {
private async anchorFolder() { private async anchorFolder() {
if (!this.state.selectedFolder?.uid) return; if (!this.state.selectedFolder?.uid) return;
const anchor = await OfficeFolderAnchors.getInstance().post(this.state.selectedFolder.uid); const anchor = await OfficeFolderAnchors.getInstance().post(this.state.selectedFolder.uid);
console.log(anchor);
} }
private async downloadAnchoringProof(uid?: string) { private async downloadAnchoringProof(uid?: string) {
if (!uid) return; if (!uid) return;
const anchor = await OfficeFolderAnchors.getInstance().get(uid);
if (anchor.status !== "VERIFIED_ON_CHAIN") return;
try { try {
const file: Blob = await OfficeFolderAnchors.getInstance().download(uid); const file: Blob = await OfficeFolderAnchors.getInstance().download(uid);
const url = window.URL.createObjectURL(file); const url = window.URL.createObjectURL(file);

View File

@ -19,7 +19,7 @@ export default class PageNotFound extends BasePage {
La page que vous recherchez semble introuvable. La page que vous recherchez semble introuvable.
</Typography> </Typography>
<Link href={Module.getInstance().get().modules.pages.Home.props.path}> <Link href={Module.getInstance().get().modules.pages.Home.props.path}>
<Button>Retour à laccueil</Button> <Button>Retour à l'accueil</Button>
</Link> </Link>
</div> </div>
</div> </div>