Compare commits
5 Commits
1e6065ec7c
...
74ae167e3c
Author | SHA1 | Date | |
---|---|---|---|
![]() |
74ae167e3c | ||
![]() |
90b2ed5e6e | ||
![]() |
78c7d009c1 | ||
![]() |
d9851105ab | ||
![]() |
d8105fa3cf |
21
src/App.tsx
21
src/App.tsx
@ -23,11 +23,16 @@ function App() {
|
||||
const [showAuthModal, setShowAuthModal] = useState(false)
|
||||
const [showFolderModal, setShowFolderModal] = useState(false)
|
||||
const [processes, setProcesses] = useState<any>(null)
|
||||
const [userPairingId, setUserPairingId] = useState<string | null>(null)
|
||||
|
||||
useEffect(() => {
|
||||
setIsConnected(UserStore.getInstance().isConnected());
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
setUserPairingId(UserStore.getInstance().getUserPairingId());
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
if (isConnected) {
|
||||
const messageBus = MessageBus.getInstance(iframeUrl);
|
||||
@ -51,15 +56,23 @@ function App() {
|
||||
console.error('Failed to retrieve data:', error);
|
||||
}
|
||||
}
|
||||
|
||||
messageBus.getData('467b005278cf516a42a54ba777fcbab29748072b52c01a988a596662e7b7844a:0', 'ada06b5c6e5add8a281b284a31a258355b33a9f0dbc4a5dcfe77dfd4eb904011').then((data: any) => {
|
||||
console.log(data);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
}, [isConnected, iframeUrl]);
|
||||
|
||||
useEffect(() => {
|
||||
if (isConnected && userPairingId === null) {
|
||||
const messageBus = MessageBus.getInstance(iframeUrl);
|
||||
messageBus.isReady().then(() => {
|
||||
messageBus.getUserPairingId().then((userPairingId: string) => {
|
||||
UserStore.getInstance().pair(userPairingId);
|
||||
setUserPairingId(UserStore.getInstance().getUserPairingId());
|
||||
})
|
||||
});
|
||||
}
|
||||
}, [isConnected, userPairingId]);
|
||||
|
||||
// Gestionnaire pour afficher la modale de connexion
|
||||
const handleLogin = useCallback(() => {
|
||||
// Afficher la modale de connexion
|
||||
|
@ -10,6 +10,8 @@ export default class MessageBus {
|
||||
private readonly origin: string;
|
||||
private messageListener: ((event: MessageEvent) => void) | null = null;
|
||||
private errors: { [key: string]: string } = {};
|
||||
private readyPromise: Promise<void> | null = null;
|
||||
private isReadyFlag = false;
|
||||
|
||||
private constructor(origin: string) {
|
||||
this.origin = origin;
|
||||
@ -23,19 +25,28 @@ export default class MessageBus {
|
||||
}
|
||||
|
||||
public isReady(): Promise<void> {
|
||||
return new Promise<void>((resolve: () => void) => {
|
||||
if (this.isReadyFlag) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
if (this.readyPromise) {
|
||||
return this.readyPromise;
|
||||
}
|
||||
|
||||
this.readyPromise = new Promise<void>((resolve) => {
|
||||
const correlationId = uuidv4();
|
||||
this.initMessageListener(correlationId);
|
||||
|
||||
const unsubscribe = EventBus.getInstance().on('IS_READY', (responseId: string) => {
|
||||
if (responseId !== correlationId) {
|
||||
return;
|
||||
}
|
||||
if (responseId !== correlationId) return;
|
||||
unsubscribe();
|
||||
this.destroyMessageListener();
|
||||
this.isReadyFlag = true;
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
|
||||
return this.readyPromise;
|
||||
}
|
||||
|
||||
public requestLink(): Promise<void> {
|
||||
@ -68,6 +79,41 @@ export default class MessageBus {
|
||||
});
|
||||
}
|
||||
|
||||
public getUserPairingId(): Promise<string> {
|
||||
return new Promise<string>((resolve: (userPairingId: 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('PAIRING_ID', (responseId: string, userPairingId: string) => {
|
||||
if (responseId !== correlationId) {
|
||||
return;
|
||||
}
|
||||
unsubscribe();
|
||||
this.destroyMessageListener();
|
||||
resolve(userPairingId);
|
||||
});
|
||||
|
||||
const unsubscribeError = EventBus.getInstance().on('ERROR_PAIRING_ID', (responseId: string, error: string) => {
|
||||
if (responseId !== correlationId) {
|
||||
return;
|
||||
}
|
||||
unsubscribeError();
|
||||
this.destroyMessageListener();
|
||||
reject(error);
|
||||
});
|
||||
|
||||
this.sendMessage({
|
||||
type: 'GET_PAIRING_ID',
|
||||
accessToken,
|
||||
});
|
||||
}).catch(console.error);
|
||||
});
|
||||
}
|
||||
|
||||
public validateToken(): Promise<boolean> {
|
||||
return new Promise<boolean>((resolve: (isValid: boolean) => void, reject: (error: string) => void) => {
|
||||
const userStore = UserStore.getInstance();
|
||||
@ -148,10 +194,15 @@ export default class MessageBus {
|
||||
public getProcesses(): Promise<any> {
|
||||
return new Promise<any>((resolve: (processes: any) => void, reject: (error: string) => void) => {
|
||||
this.checkToken().then(() => {
|
||||
const userStore = UserStore.getInstance();
|
||||
const accessToken = userStore.getAccessToken()!;
|
||||
|
||||
const correlationId = uuidv4();
|
||||
console.log(correlationId);
|
||||
this.initMessageListener(correlationId);
|
||||
|
||||
const unsubscribe = EventBus.getInstance().on('PROCESSES_RETRIEVED', (responseId: string, processes: any) => {
|
||||
console.log(responseId);
|
||||
if (responseId !== correlationId) {
|
||||
return;
|
||||
}
|
||||
@ -170,7 +221,8 @@ export default class MessageBus {
|
||||
});
|
||||
|
||||
this.sendMessage({
|
||||
type: 'GET_PROCESSES'
|
||||
type: 'GET_PROCESSES',
|
||||
accessToken,
|
||||
});
|
||||
}).catch(console.error);
|
||||
});
|
||||
@ -371,6 +423,17 @@ export default class MessageBus {
|
||||
EventBus.getInstance().emit('TOKEN_RENEWED', correlationId, message.accessToken, message.refreshToken);
|
||||
break;
|
||||
|
||||
case 'GET_PAIRING_ID':
|
||||
if (this.errors[correlationId]) {
|
||||
const error = this.errors[correlationId];
|
||||
delete this.errors[correlationId];
|
||||
EventBus.getInstance().emit('ERROR_PAIRING_ID', correlationId, error);
|
||||
return;
|
||||
}
|
||||
EventBus.getInstance().emit('MESSAGE_RECEIVED', message);
|
||||
EventBus.getInstance().emit('PAIRING_ID', correlationId, message.userPairingId);
|
||||
break;
|
||||
|
||||
case 'PROCESSES_RETRIEVED': // GET_PROCESSES
|
||||
if (this.errors[correlationId]) {
|
||||
const error = this.errors[correlationId];
|
||||
|
@ -22,6 +22,7 @@ export default class UserStore {
|
||||
public disconnect(): void {
|
||||
sessionStorage.removeItem('accessToken');
|
||||
sessionStorage.removeItem('refreshToken');
|
||||
sessionStorage.removeItem('userPairingId');
|
||||
}
|
||||
|
||||
public getAccessToken(): string | null {
|
||||
@ -31,4 +32,12 @@ export default class UserStore {
|
||||
public getRefreshToken(): string | null {
|
||||
return sessionStorage.getItem('refreshToken');
|
||||
}
|
||||
|
||||
public pair(userPairingId: string): void {
|
||||
sessionStorage.setItem('userPairingId', userPairingId);
|
||||
}
|
||||
|
||||
public getUserPairingId(): string | null {
|
||||
return sessionStorage.getItem('userPairingId');
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user