Use FileBlob and FileData everywhere

This commit is contained in:
Sosthene 2025-06-30 22:37:24 +02:00
parent d17f4aa8d9
commit 723322cc0a
6 changed files with 21 additions and 9 deletions

View File

@ -2,6 +2,7 @@ import { v4 as uuidv4 } from 'uuid';
import MessageBus from 'src/sdk/MessageBus'; import MessageBus from 'src/sdk/MessageBus';
import User from 'src/sdk/User'; import User from 'src/sdk/User';
import { FileData } from '../../../../front/Api/Entities/types';
export default class FileService { export default class FileService {
@ -9,7 +10,7 @@ export default class FileService {
private constructor() { } private constructor() { }
public static createFile(fileData: any, validatorId: string): Promise<any> { public static createFile(fileData: FileData, validatorId: string): Promise<any> {
const ownerId = User.getInstance().getPairingId()!; const ownerId = User.getInstance().getPairingId()!;
const processData: any = { const processData: any = {
@ -81,7 +82,7 @@ export default class FileService {
return this.messageBus.getFileByUid(uid); return this.messageBus.getFileByUid(uid);
} }
public static updateFile(process: any, newData: any): Promise<void> { public static updateFile(process: any, newData: Partial<FileData> & { isDeleted?: string }): Promise<void> {
return new Promise<void>((resolve: () => void, reject: (error: string) => void) => { return new Promise<void>((resolve: () => void, reject: (error: string) => void) => {
this.messageBus.updateProcess(process.processId, { updated_at: new Date().toISOString(), ...newData }, [], null).then((processUpdated: any) => { this.messageBus.updateProcess(process.processId, { updated_at: new Date().toISOString(), ...newData }, [], null).then((processUpdated: any) => {
const newStateId: string = processUpdated.diffs[0]?.state_id; const newStateId: string = processUpdated.diffs[0]?.state_id;

View File

@ -0,0 +1,2 @@
export * from './types';
export * from './rule';

View File

@ -9,6 +9,7 @@ import Confirm from "@Front/Components/DesignSystem/OldModal/Confirm";
import FileService from "src/common/Api/LeCoffreApi/sdk/FileService"; import FileService from "src/common/Api/LeCoffreApi/sdk/FileService";
import DocumentService from "src/common/Api/LeCoffreApi/sdk/DocumentService"; import DocumentService from "src/common/Api/LeCoffreApi/sdk/DocumentService";
import { FileBlob, FileData } from "@Front/Api/Entities/types";
type IProps = { type IProps = {
document: any; document: any;
@ -39,12 +40,12 @@ export default function DepositDocumentComponent(props: IProps) {
const arrayBuffer = event.target.result as ArrayBuffer; const arrayBuffer = event.target.result as ArrayBuffer;
const uint8Array = new Uint8Array(arrayBuffer); const uint8Array = new Uint8Array(arrayBuffer);
const fileBlob: any = { const fileBlob: FileBlob = {
type: file.type, type: file.type,
data: uint8Array data: uint8Array
}; };
const fileData: any = { const fileData: FileData = {
file_blob: fileBlob, file_blob: fileBlob,
file_name: file.name file_name: file.name
}; };

View File

@ -7,6 +7,7 @@ import { DocumentNotary } from "le-coffre-resources/dist/Notary";
import Image from "next/image"; import Image from "next/image";
import { NextRouter, useRouter } from "next/router"; import { NextRouter, useRouter } from "next/router";
import React from "react"; import React from "react";
import { FileBlob } from "@Front/Api/Entities/types";
import BasePage from "../../Base"; import BasePage from "../../Base";
import classes from "./classes.module.scss"; import classes from "./classes.module.scss";
@ -28,7 +29,7 @@ type IState = {
isValidateModalVisible: boolean; isValidateModalVisible: boolean;
refuseText: string; refuseText: string;
selectedFileIndex: number; selectedFileIndex: number;
selectedFile: any; selectedFile: { uid: string; file_name: string; file_blob: FileBlob } | null;
documentNotary: DocumentNotary | null; documentNotary: DocumentNotary | null;
fileBlob: Blob | null; fileBlob: Blob | null;
isLoading: boolean; isLoading: boolean;
@ -150,7 +151,7 @@ class ViewDocumentsNotaryClass extends BasePage<IPropsClass, IState> {
{ {
documentNotary, documentNotary,
selectedFileIndex: 0, selectedFileIndex: 0,
selectedFile: documentNotary.files![0]!, selectedFile: documentNotary.files![0] as any,
isLoading: false, isLoading: false,
}, },
() => { () => {

View File

@ -1,8 +1,12 @@
import Modal from "@Front/Components/DesignSystem/Modal"; import Modal from "@Front/Components/DesignSystem/Modal";
import React from "react"; import React from "react";
import { FileBlob } from "@Front/Api/Entities/types";
type IProps = { type IProps = {
file: any; file: {
uid: string;
file_blob: FileBlob;
};
url: string; url: string;
isOpen: boolean; isOpen: boolean;
onClose?: () => void; onClose?: () => void;

View File

@ -19,6 +19,7 @@ import MessageBox from "@Front/Components/Elements/MessageBox";
import DocumentService from "src/common/Api/LeCoffreApi/sdk/DocumentService"; import DocumentService from "src/common/Api/LeCoffreApi/sdk/DocumentService";
import FileService from "src/common/Api/LeCoffreApi/sdk/FileService"; import FileService from "src/common/Api/LeCoffreApi/sdk/FileService";
import { FileBlob } from "@Front/Api/Entities/types";
type IProps = {}; type IProps = {};
type IPropsClass = { type IPropsClass = {
@ -32,7 +33,7 @@ type IState = {
isValidateModalVisible: boolean; isValidateModalVisible: boolean;
refuseText: string; refuseText: string;
selectedFileIndex: number; selectedFileIndex: number;
selectedFile: any; // File | null; TODO: review selectedFile: { uid: string; file_name: string; file_blob: FileBlob } | null;
validatedPercentage: number; validatedPercentage: number;
document: Document | null; document: Document | null;
fileBlob: Blob | null; fileBlob: Blob | null;
@ -237,6 +238,8 @@ class ViewDocumentsClass extends BasePage<IPropsClass, IState> {
private async getFilePreview(): Promise<void> { private async getFilePreview(): Promise<void> {
try { try {
if (!this.state.selectedFile) return;
const fileBlob: Blob = new Blob([this.state.selectedFile.file_blob.data], { type: this.state.selectedFile.file_blob.type }); const fileBlob: Blob = new Blob([this.state.selectedFile.file_blob.data], { type: this.state.selectedFile.file_blob.type });
this.setState({ this.setState({
fileBlob, fileBlob,
@ -247,7 +250,7 @@ class ViewDocumentsClass extends BasePage<IPropsClass, IState> {
} }
private downloadFile() { private downloadFile() {
if (!this.state.fileBlob) return; if (!this.state.fileBlob || !this.state.selectedFile) return;
const url = URL.createObjectURL(this.state.fileBlob); const url = URL.createObjectURL(this.state.fileBlob);
const a = document.createElement('a'); const a = document.createElement('a');