From 09e8530c6a4ab15ae69c990946e07b5e85bc200c Mon Sep 17 00:00:00 2001 From: Sosthene Date: Wed, 11 Jun 2025 20:37:00 +0200 Subject: [PATCH] Add getMyProcesses logic --- src/App.tsx | 29 ++++++++++++---------------- src/sdk/MessageBus.ts | 45 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 17 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 2162a11..5742652 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -23,6 +23,7 @@ function App() { const [showAuthModal, setShowAuthModal] = useState(false) const [showFolderModal, setShowFolderModal] = useState(false) const [processes, setProcesses] = useState(null) + const [myProcesses, setMyProcesses] = useState([]) const [userPairingId, setUserPairingId] = useState(null) useEffect(() => { @@ -39,28 +40,22 @@ function App() { messageBus.isReady().then(() => { messageBus.getProcesses().then((processes: any) => { setProcesses(processes); - - for (const key of Object.keys(processes)) { - try { - const process = processes[key]; - if (Object.keys(process.states?.[0]?.keys).length === 0) { - continue; - } - - - console.log(key); - console.log(process); - - - } catch (error) { - console.error('Failed to retrieve data:', error); - } - } }); }); } }, [isConnected, iframeUrl]); + useEffect(() => { + if (isConnected && processes !== null) { + const messageBus = MessageBus.getInstance(iframeUrl); + messageBus.isReady().then(() => { + messageBus.getMyProcesses().then((res: string[]) => { + setMyProcesses(res); + }) + }); + } + }, [isConnected, processes]); + useEffect(() => { if (isConnected && userPairingId === null) { const messageBus = MessageBus.getInstance(iframeUrl); diff --git a/src/sdk/MessageBus.ts b/src/sdk/MessageBus.ts index be2b100..1e55837 100644 --- a/src/sdk/MessageBus.ts +++ b/src/sdk/MessageBus.ts @@ -228,6 +228,41 @@ export default class MessageBus { }); } + public getMyProcesses(): Promise { + return new Promise((resolve: (myProcesses: string[]) => 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('GET_MY_PROCESSES', (responseId: string, myProcesses: string[]) => { + if (responseId !== correlationId) { + return; + } + unsubscribe(); + this.destroyMessageListener(); + resolve(myProcesses); + }); + + const unsubscribeError = EventBus.getInstance().on('ERROR_GET_MY_PROCESSES', (responseId: string, error: string) => { + if (responseId !== correlationId) { + return; + } + unsubscribeError(); + this.destroyMessageListener(); + reject(error); + }); + + this.sendMessage({ + type: 'GET_MY_PROCESSES', + accessToken, + }); + }).catch(console.error); + }); + } + public getData(processId: string, stateId: string): Promise { return new Promise((resolve: (data: any) => void, reject: (error: string) => void) => { this.checkToken().then(() => { @@ -444,6 +479,16 @@ export default class MessageBus { EventBus.getInstance().emit('PROCESSES_RETRIEVED', correlationId, message.processes); break; + case 'GET_MY_PROCESSES': + if (this.errors[correlationId]) { + const error = this.errors[correlationId]; + delete this.errors[correlationId]; + EventBus.getInstance().emit('ERROR_GET_MY_PROCESSES', correlationId, error); + return; + } + EventBus.getInstance().emit('GET_MY_PROCESSES', correlationId, message.myProcesses); + break; + case 'PROFILE_CREATED': // CREATE_PROFILE if (this.errors[correlationId]) { const error = this.errors[correlationId];