Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
titaniumnetwork-dev
GitHub Repository: titaniumnetwork-dev/Ludicrous
Path: blob/main/pages/_offline.tsx
1223 views
1
import type { NextPage } from 'next'
2
import Head from 'next/head'
3
import { IoAppsOutline, IoSettingsOutline } from "react-icons/io5";
4
import { FaGithub } from "react-icons/fa";
5
import styles from '../styles/Home.module.css';
6
import { loadFull } from "tsparticles";
7
import { useRouter } from 'next/router';
8
import { useEffect } from 'react'
9
10
if (global.window) {
11
window.onload = function() {
12
(document.querySelector('#'+styles["main-input"])||document.createElement('input')).addEventListener('keypress', (e: any) => {
13
if (e.key=='Enter') {
14
var url = (e.target.value).toString();
15
16
if ('serviceWorker' in navigator) {
17
navigator.serviceWorker.register('/sw.js', {scope: '/service'});
18
19
location.href = '/service/uv/'+encodeURIComponent(url);
20
} else {
21
alert('ServiceWorker not supported');
22
}
23
}
24
});
25
}
26
}
27
28
const Offline: NextPage = ({ particles }: any) => {
29
var Router = useRouter();
30
31
var win: any = global.window||{};
32
33
if (global.window) {
34
var main: any = function() {
35
(document.getElementById(styles['main-page-init'])||document.body).style.opacity = '1';
36
}
37
38
window.addEventListener('load', function(e: any) {
39
setTimeout(main, performance.timing.responseEnd - performance.timing.responseStart+100);
40
});
41
42
if (document.readyState=='complete') {
43
setTimeout(main, performance.timing.responseEnd - performance.timing.responseStart+100);
44
}
45
}
46
47
useEffect(() => {
48
Router.prefetch('/options');
49
Router.prefetch('/apps');
50
Router.prefetch('/');
51
});
52
53
const Apps: any = () => {
54
if (global.window) {
55
setTimeout(function() {
56
(document.getElementById(styles['main-page-init'])||document.body).style.opacity = '0';
57
win.particles = particles;
58
Router.replace('/apps')
59
}, 150);
60
}
61
}
62
63
const Settings: any = () => {
64
if (global.window) {
65
setTimeout(function() {
66
(document.getElementById(styles['main-page-init'])||document.body).style.opacity = '0';
67
win.particles = particles;
68
Router.replace('/options')
69
}, 150);
70
}
71
}
72
73
const particlesInit: any = async (main: any) => {await loadFull(main)};
74
75
const particlesLoaded: any = () => {};
76
77
return (
78
<div className={styles.main}>
79
<Head>
80
<meta name="description" content="Ludicrous | A School Site" />
81
<meta name="theme-color" content="#2467a5" />
82
<meta charSet='utf-8' />
83
<meta httpEquiv='X-UA-Compatible' content='IE=edge' />
84
<meta name='viewport' content='width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no' />
85
<title>Ludicrous - Offline</title>
86
<link rel='manifest' href='/manifest.json' />
87
<link href='/icons/favicon-16x16.png' rel='icon' type='image/png' sizes='16x16' />
88
<link href='/icons/favicon-32x32.png' rel='icon' type='image/png' sizes='32x32' />
89
<link rel='apple-touch-icon' href='/icons/apple-icon.png'></link>
90
91
</Head>
92
93
<main className={styles.main}>
94
95
<div id={styles['main-page-content']}>
96
97
<div onClick={Apps} className={styles["main-page-apps-init"]} id="apps-init"><IoAppsOutline /></div>
98
<div className={styles["main-page-about-init"]} id={"ab-cloak"} onClick={Settings}><IoSettingsOutline /></div>
99
100
<div id={styles["main-page-init"]}>
101
<h1 className={styles["main-title"]}><span>Ludicrous</span> <FaGithub style={{"cursor": "pointer"}} onClick={(e) => {window.open('https://github.com/ludicrousdevelopment/ludi');}} /></h1>
102
<h3 className={styles["main-desc"]}>{"You're Offline!"}</h3>
103
</div>
104
</div>
105
</main>
106
</div>
107
);
108
};
109
110
111
export default Offline;
112
113