-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathApp.js
More file actions
72 lines (61 loc) · 1.62 KB
/
App.js
File metadata and controls
72 lines (61 loc) · 1.62 KB
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
import React, { Suspense, lazy, useEffect, useState } from 'react';
import { getBootExperience } from './app-mode';
const DrawingsAdminPage = lazy(() => import('./admin/DrawingsAdminPage'));
const MobileSite = lazy(() => import('./mobile-site/index'));
const WinXP = lazy(() => import('WinXP'));
function RootLoadingScreen() {
return (
<div
style={{
minHeight: '100vh',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
background: '#245edb',
color: '#fff',
fontFamily: '"Trebuchet MS", sans-serif',
fontSize: '14px',
}}
>
Loading thinko...
</div>
);
}
const App = () => {
const isAdminRoute = window.location.pathname.startsWith('/admin/drawings');
const isLayoutRoute = window.location.pathname.startsWith('/layout');
const [bootExperience] = useState(() =>
getBootExperience(window.location, window.innerWidth),
);
useEffect(() => {
if (isAdminRoute) {
document.title = 'thinko admin';
return;
}
if (isLayoutRoute) {
document.title = 'thinko layout';
return;
}
document.title = 'thinko';
}, [isAdminRoute, isLayoutRoute]);
if (isAdminRoute) {
return (
<Suspense fallback={<RootLoadingScreen />}>
<DrawingsAdminPage />
</Suspense>
);
}
if (bootExperience === 'mobile') {
return (
<Suspense fallback={<RootLoadingScreen />}>
<MobileSite />
</Suspense>
);
}
return (
<Suspense fallback={<RootLoadingScreen />}>
<WinXP enableLayoutDebug={isLayoutRoute} />
</Suspense>
);
};
export default App;