2020-06-04 15:35:07 +02:00
|
|
|
/*
|
|
|
|
Copyright 2020 The Matrix.org Foundation C.I.C.
|
|
|
|
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
you may not use this file except in compliance with the License.
|
|
|
|
You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|
|
|
|
*/
|
|
|
|
|
2020-09-16 14:04:18 +02:00
|
|
|
import React, { useState, useEffect } from 'react';
|
2020-06-04 15:35:07 +02:00
|
|
|
|
2020-09-01 10:14:13 +02:00
|
|
|
import SingleColumn from './layouts/SingleColumn';
|
|
|
|
import CreateLinkTile from './components/CreateLinkTile';
|
|
|
|
import MatrixTile from './components/MatrixTile';
|
|
|
|
import Tile from './components/Tile';
|
|
|
|
import LinkRouter from './pages/LinkRouter';
|
2020-09-16 01:19:52 +02:00
|
|
|
import Footer from './components/Footer';
|
2020-08-17 18:48:13 +02:00
|
|
|
|
2020-09-01 10:44:26 +02:00
|
|
|
import './App.scss';
|
|
|
|
|
2020-09-01 10:14:13 +02:00
|
|
|
import GlobalContext from './contexts/GlobalContext';
|
2020-08-17 18:48:13 +02:00
|
|
|
|
|
|
|
/* eslint-disable no-restricted-globals */
|
2020-06-01 15:42:30 +02:00
|
|
|
|
2020-06-24 16:20:30 +02:00
|
|
|
const App: React.FC = () => {
|
2020-08-17 18:48:13 +02:00
|
|
|
let page = (
|
|
|
|
<>
|
2020-09-01 10:44:26 +02:00
|
|
|
<CreateLinkTile />
|
2020-08-17 18:48:13 +02:00
|
|
|
</>
|
|
|
|
);
|
2020-09-01 10:44:26 +02:00
|
|
|
|
2020-09-16 14:04:18 +02:00
|
|
|
const [hash, setHash] = useState(location.hash);
|
|
|
|
|
|
|
|
useEffect(() => (window.onhashchange = () => setHash(location.hash)), []);
|
|
|
|
|
|
|
|
if (hash) {
|
|
|
|
if (hash.startsWith('#/')) {
|
|
|
|
page = <LinkRouter link={hash.slice(2)} />;
|
2020-08-17 18:48:13 +02:00
|
|
|
} else {
|
|
|
|
page = (
|
|
|
|
<Tile>
|
2020-09-01 10:14:13 +02:00
|
|
|
Links should be in the format {location.host}/#/{'<'}
|
|
|
|
matrix-resource-identifier{'>'}
|
2020-08-17 18:48:13 +02:00
|
|
|
</Tile>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-06-24 17:20:56 +02:00
|
|
|
return (
|
2020-09-16 01:19:52 +02:00
|
|
|
<GlobalContext>
|
|
|
|
<SingleColumn>
|
|
|
|
<div className="topSpacer" />
|
|
|
|
{page}
|
|
|
|
<div>
|
|
|
|
<MatrixTile isLink={!!location.hash} />
|
|
|
|
<br />
|
|
|
|
<Footer />
|
|
|
|
</div>
|
|
|
|
<div className="bottomSpacer" />
|
|
|
|
</SingleColumn>
|
|
|
|
</GlobalContext>
|
2020-06-24 17:20:56 +02:00
|
|
|
);
|
2020-06-24 16:20:30 +02:00
|
|
|
};
|
2020-06-01 15:42:30 +02:00
|
|
|
|
|
|
|
export default App;
|