Compare commits
3 Commits
94b6e58cd0
...
334f548cbb
Author | SHA1 | Date | |
---|---|---|---|
![]() |
334f548cbb | ||
![]() |
1d0d0c034d | ||
![]() |
f404054438 |
@ -189,7 +189,7 @@ function App() {
|
|||||||
{/* Espace pour contenu supplémentaire à droite */}
|
{/* Espace pour contenu supplémentaire à droite */}
|
||||||
<div className="content-area">
|
<div className="content-area">
|
||||||
{/* Affichage des blocs de la blockchain */}
|
{/* Affichage des blocs de la blockchain */}
|
||||||
<BlockchainViewer processes={processes} myProcesses={myProcesses}/>
|
<BlockchainViewer processes={processes} myProcesses={myProcesses} onProcessesUpdate={setProcesses}/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -23,9 +23,10 @@ interface Processes {
|
|||||||
interface ProcessesViewerProps {
|
interface ProcessesViewerProps {
|
||||||
processes: Processes | null;
|
processes: Processes | null;
|
||||||
myProcesses: string[];
|
myProcesses: string[];
|
||||||
|
onProcessesUpdate?: (processes: Processes) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
function ProcessesViewer({ processes, myProcesses }: ProcessesViewerProps) {
|
function ProcessesViewer({ processes, myProcesses, onProcessesUpdate }: ProcessesViewerProps) {
|
||||||
const [expandedBlocks, setExpandedBlocks] = useState<string[]>([]);
|
const [expandedBlocks, setExpandedBlocks] = useState<string[]>([]);
|
||||||
const [isFiltered, setIsFiltered] = useState<boolean>(false);
|
const [isFiltered, setIsFiltered] = useState<boolean>(false);
|
||||||
const [privateData, setPrivateData] = useState<Record<string, Record<string, any>>>({});
|
const [privateData, setPrivateData] = useState<Record<string, Record<string, any>>>({});
|
||||||
|
@ -2,6 +2,7 @@ import React, { useState, memo } from 'react';
|
|||||||
import Modal from './modal/Modal';
|
import Modal from './modal/Modal';
|
||||||
import './ProfileModal.css';
|
import './ProfileModal.css';
|
||||||
import type { ProfileData } from '../sdk/models/ProfileData';
|
import type { ProfileData } from '../sdk/models/ProfileData';
|
||||||
|
import type { FileBlob } from '../sdk/models/Data';
|
||||||
|
|
||||||
interface ProfileModalProps {
|
interface ProfileModalProps {
|
||||||
isOpen: boolean;
|
isOpen: boolean;
|
||||||
@ -34,10 +35,16 @@ function ProfileModal({ isOpen, onClose, onSubmit, initialData = {} }: ProfileMo
|
|||||||
if (type === 'file' && files) {
|
if (type === 'file' && files) {
|
||||||
// Assuming you want to handle a single file
|
// Assuming you want to handle a single file
|
||||||
const file = files[0];
|
const file = files[0];
|
||||||
setProfileData(prev => ({
|
file.arrayBuffer().then(arrayBuffer => {
|
||||||
...prev,
|
const fileBlob: FileBlob = {
|
||||||
[name]: file
|
type: file.type,
|
||||||
}));
|
data: new Uint8Array(arrayBuffer)
|
||||||
|
};
|
||||||
|
setProfileData(prev => ({
|
||||||
|
...prev,
|
||||||
|
[name]: fileBlob
|
||||||
|
}));
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
setProfileData(prev => ({
|
setProfileData(prev => ({
|
||||||
...prev,
|
...prev,
|
||||||
|
@ -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> {
|
public notifyProcessUpdate(processId: string, stateId: string): Promise<void> {
|
||||||
return new Promise<void>((resolve: () => void, reject: (error: string) => void) => {
|
return new Promise<void>((resolve: () => void, reject: (error: string) => void) => {
|
||||||
this.checkToken().then(() => {
|
this.checkToken().then(() => {
|
||||||
@ -640,6 +681,18 @@ export default class MessageBus {
|
|||||||
EventBus.getInstance().emit('STATE_VALIDATED', correlationId, message.validatedProcess);
|
EventBus.getInstance().emit('STATE_VALIDATED', correlationId, message.validatedProcess);
|
||||||
break;
|
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':
|
case 'ERROR':
|
||||||
console.error('Error:', message);
|
console.error('Error:', message);
|
||||||
this.errors[correlationId] = message.error;
|
this.errors[correlationId] = message.error;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user