-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.tsx
79 lines (70 loc) · 2.21 KB
/
main.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import React from 'react';
import { render } from 'react-dom';
import { TestProviderWeb } from './TestProviderWeb';
import { TestProviderCloud } from './TestProviderCloud';
import { TestProviderMailbox } from './TestProviderMailbox';
type TProvider = 'web' | 'cloud' | 'mailbox';
function getInitialProvider(): TProvider {
switch (true) {
case location.href.includes('provider-cloud'):
return 'cloud';
case location.href.includes('provider-mailbox'):
return 'mailbox';
default:
return 'web';
}
}
const initialProvider = getInitialProvider();
function deleteFrames(): void {
const frames = window.document.getElementsByTagName('iframe');
for (let i = 0; i < frames.length; i++) {
window.document.body.removeChild(frames[i]);
}
}
function TestApp(): React.ReactElement {
const [provider, setProvider] = React.useState<TProvider>(initialProvider);
const setProviderWeb = React.useCallback((): void => {
setProvider('web');
deleteFrames();
}, []);
const setProviderCloud = React.useCallback((): void => {
setProvider('cloud');
deleteFrames();
}, []);
const setProviderMailbox = React.useCallback((): void => {
setProvider('mailbox');
deleteFrames();
}, []);
return (
<>
<div>
<button
onClick={setProviderWeb}
>
Provider Web
</button>
<button
onClick={setProviderCloud}
>
Provider Cloud
</button>
<button
onClick={setProviderMailbox}
>
Provider Mailbox
</button>
</div>
{(() => {
switch (provider) {
case 'cloud':
return <TestProviderCloud />;
case 'mailbox':
return <TestProviderMailbox />;
default:
return <TestProviderWeb />;
}
})()}
</>
);
}
render(<TestApp />, document.getElementById('root'));