Compare commits

...

3 Commits

Author SHA1 Message Date
Sosthene
334f548cbb [bug] Incorrect formatting of files in ProfileModal 2025-06-15 22:58:55 +02:00
Sosthene
1d0d0c034d pass setProcesses as prop for ProcessesViewer 2025-06-15 22:34:24 +02:00
Sosthene
f404054438 Add process udpate in MessageBus 2025-06-15 22:27:52 +02:00
4 changed files with 67 additions and 6 deletions

View File

@ -189,7 +189,7 @@ function App() {
{/* Espace pour contenu supplémentaire à droite */}
<div className="content-area">
{/* Affichage des blocs de la blockchain */}
<BlockchainViewer processes={processes} myProcesses={myProcesses}/>
<BlockchainViewer processes={processes} myProcesses={myProcesses} onProcessesUpdate={setProcesses}/>
</div>
</div>

View File

@ -23,9 +23,10 @@ interface Processes {
interface ProcessesViewerProps {
processes: Processes | null;
myProcesses: string[];
onProcessesUpdate?: (processes: Processes) => void;
}
function ProcessesViewer({ processes, myProcesses }: ProcessesViewerProps) {
function ProcessesViewer({ processes, myProcesses, onProcessesUpdate }: ProcessesViewerProps) {
const [expandedBlocks, setExpandedBlocks] = useState<string[]>([]);
const [isFiltered, setIsFiltered] = useState<boolean>(false);
const [privateData, setPrivateData] = useState<Record<string, Record<string, any>>>({});

View File

@ -2,6 +2,7 @@ import React, { useState, memo } from 'react';
import Modal from './modal/Modal';
import './ProfileModal.css';
import type { ProfileData } from '../sdk/models/ProfileData';
import type { FileBlob } from '../sdk/models/Data';
interface ProfileModalProps {
isOpen: boolean;
@ -34,10 +35,16 @@ function ProfileModal({ isOpen, onClose, onSubmit, initialData = {} }: ProfileMo
if (type === 'file' && files) {
// Assuming you want to handle a single file
const file = files[0];
setProfileData(prev => ({
...prev,
[name]: file
}));
file.arrayBuffer().then(arrayBuffer => {
const fileBlob: FileBlob = {
type: file.type,
data: new Uint8Array(arrayBuffer)
};
setProfileData(prev => ({
...prev,
[name]: fileBlob
}));
});
} else {
setProfileData(prev => ({
...prev,

View File

@ -406,6 +406,47 @@ export default class MessageBus {
});
}
public updateProcess(processId: string, lastStateId: string, newData: Record<string, any>, privateFields: string[], roles: Record<string, RoleDefinition> | null): Promise<any> {
return new Promise<any>((resolve: (updatedProcess: any) => void, reject: (error: string) => void) => {
this.checkToken().then(() => {
const userStore = UserStore.getInstance();
const accessToken = userStore.getAccessToken()!;
const correlationId = uuidv4();
this.initMessageListener(correlationId);
const unsubscribe = EventBus.getInstance().on('PROCESS_UPDATED', (responseId: string, updatedProcess: any) => {
console.log('PROCESS_UPDATED', updatedProcess);
if (responseId !== correlationId) {
return;
}
unsubscribe();
this.destroyMessageListener();
resolve(updatedProcess);
});
const unsubscribeError = EventBus.getInstance().on('ERROR_PROCESS_UPDATED', (responseId: string, error: string) => {
if (responseId !== correlationId) {
return;
}
unsubscribeError();
this.destroyMessageListener();
reject(error);
});
this.sendMessage({
type: 'UPDATE_PROCESS',
processId,
lastStateId,
newData,
privateFields,
roles,
accessToken
});
}).catch(console.error);
});
}
public notifyProcessUpdate(processId: string, stateId: string): Promise<void> {
return new Promise<void>((resolve: () => void, reject: (error: string) => void) => {
this.checkToken().then(() => {
@ -640,6 +681,18 @@ export default class MessageBus {
EventBus.getInstance().emit('STATE_VALIDATED', correlationId, message.validatedProcess);
break;
case 'PROCESS_UPDATED':
if (this.errors[correlationId]) {
const error = this.errors[correlationId];
delete this.errors[correlationId];
EventBus.getInstance().emit('ERROR_PROCESS_UPDATED', correlationId, error);
return;
}
console.log('PROCESS_UPDATED', message);
EventBus.getInstance().emit('MESSAGE_RECEIVED', message);
EventBus.getInstance().emit('PROCESS_UPDATED', correlationId, message.updatedProcess);
break;
case 'ERROR':
console.error('Error:', message);
this.errors[correlationId] = message.error;