aboutsummaryrefslogtreecommitdiffstats
path: root/pages
diff options
context:
space:
mode:
Diffstat (limited to 'pages')
-rw-r--r--pages/_app.js5
-rw-r--r--pages/api/login.js4
-rw-r--r--pages/api/register.js4
-rw-r--r--pages/api/settings.js27
-rw-r--r--pages/index.js95
-rw-r--r--pages/verify.js3
6 files changed, 89 insertions, 49 deletions
diff --git a/pages/_app.js b/pages/_app.js
index 4625291..0fec9f6 100644
--- a/pages/_app.js
+++ b/pages/_app.js
@@ -1,4 +1,5 @@
import { SWRConfig } from 'swr'
+import {PopupProvider} from 'hooks/usePopup'
import fetchJson from 'lib/fetchJson'
import '/styles/global.scss'
@@ -12,7 +13,9 @@ function MyApp({Component, pageProps}) {
},
}}
>
- <Component {...pageProps} />
+ <PopupProvider>
+ <Component {...pageProps} />
+ </PopupProvider>
</SWRConfig>
)
}
diff --git a/pages/api/login.js b/pages/api/login.js
index 30edda1..db39bda 100644
--- a/pages/api/login.js
+++ b/pages/api/login.js
@@ -10,10 +10,10 @@ export default withSession(async (req, res) => {
switch (method) {
case 'POST':
try {
- const {_id, email, isVerified, noteList} = await User.findByCredentials(req.body.email, req.body.password);
+ const {_id, email, isVerified, noteList, theme, language} = await User.findByCredentials(req.body.email, req.body.password);
if (!email) { throw new Error('Something went wrong') }
- const user = {_id, email, isVerified, isLoggedIn: true, noteList}
+ const user = {_id, email, isVerified, isLoggedIn: true, noteList, theme, language}
req.session.set('user', user)
await req.session.save()
res.status(201).json(user)
diff --git a/pages/api/register.js b/pages/api/register.js
index f89e347..1407146 100644
--- a/pages/api/register.js
+++ b/pages/api/register.js
@@ -13,12 +13,12 @@ export default withSession(async (req, res) => {
try {
const noteList = await NoteList.create({})
- const {_id, email, verificationKey: key} = await User.create({...req.body, noteList})
+ const {_id, email, verificationKey: key, theme, language} = await User.create({...req.body, noteList})
if (!email) { throw new Error('Something went wrong') }
sendMail(req.body.email, subject, text(key), html(key))
- const user = {_id, email, noteList, isVerified: false, isLoggedIn: true}
+ const user = {_id, email, noteList, theme, language, isVerified: false, isLoggedIn: true}
req.session.set('user', user)
await req.session.save()
res.status(201).json(user)
diff --git a/pages/api/settings.js b/pages/api/settings.js
new file mode 100644
index 0000000..e70868e
--- /dev/null
+++ b/pages/api/settings.js
@@ -0,0 +1,27 @@
+import withSession from 'lib/withSession'
+import User from 'models/User'
+import dbConnect from 'lib/dbConnect'
+
+export default withSession(async (req, res) => {
+ await dbConnect()
+
+ switch (req.method) {
+ case 'POST':
+ try {
+ if (req.body.theme && req.body.language) {
+ const user = await User.saveSettings(req.body)
+ req.session.set('user', user)
+ await req.session.save()
+ res.status(200).json(user)
+ }
+ } catch (error) {
+ console.log(error)
+ res.status(400).send()
+ }
+ break
+ default:
+ res.status(400).send()
+ break
+ }
+})
+
diff --git a/pages/index.js b/pages/index.js
index 4b420fb..ee1c277 100644
--- a/pages/index.js
+++ b/pages/index.js
@@ -1,73 +1,82 @@
import styles from 'styles/Main.module.scss'
-import React, {useState} from 'react'
+import React, {useState, useEffect} from 'react'
import useUser from 'lib/useUser'
-import {Layout, App} from 'components'
+import {Layout, App, Splash} from 'components'
import {open} from 'helpers/windowActions'
-import {Notes} from 'apps'
-
-const appList = {
- Notes,
-};
+import appList from 'helpers/appList'
+import Context from '../context';
const Home = () => {
+ const [settings, setSettings] = useState()
const [apps, setApps] = useState([])
- useUser({
+ const {user} = useUser({
redirectToLogin: true,
redirectToVerify: true,
redirectToApps: true,
})
- const handleClick = (e, appName) => {
+ useEffect(() => {
+ if (user) {
+ setSettings({theme: user.theme, language: user.language})
+ }
+ }, [user])
+
+ if (!user) return (
+ <Layout><Splash fixed /></Layout>
+ )
+
+ const handleClick = (e, appProps) => {
switch (e.detail) {
case 1:
e.currentTarget.focus()
break;
case 2:
- open(appName, apps, setApps)
+ open(appProps, setApps)
e.currentTarget.blur()
break;
}
};
- const handleKey = (e, appName) => {
+ const handleKey = (e, appProps) => {
if (e.key === 'Enter') {
- open(appName, apps, setApps)
+ open(appProps, setApps)
}
}
return (
- <Layout apps={apps} setApps={setApps}>
- <>
- {
- Object.keys(appList).map(appName => (
- <div
- key={`${appName}_icon`}
- className={styles.icon}
- onClick={e => handleClick(e, appName)}
- onKeyDown={e => handleKey(e, appName)}
- tabIndex="0"
- >
- <img src={`./${appName.toLowerCase()}.svg`} alt={`${appName} Icon`} />
- <p>{appName}</p>
- </div>
- ))
- }
- { apps && apps.map(app => {
- const AppName = appList[app.name]
+ <Context.Provider value={{settings, setSettings, setApps}}>
+ <Layout apps={apps} setApps={setApps} settings={settings}>
+ <>
+ {
+ Object.entries(appList).filter(a => a[1].icon).map(a => (
+ <div
+ key={`${a[0]}_icon`}
+ className={styles.icon}
+ onClick={e => handleClick(e, {appName: a[0], ...a[1]})}
+ onKeyDown={e => handleKey(e, {appName: a[0], ...a[1]})}
+ tabIndex="0"
+ >
+ <img src={`./${a[0].toLowerCase()}.svg`} alt={`${a[0]} Icon`} />
+ <p>{a[0]}</p>
+ </div>
+ ))
+ }
+ {apps && apps.map(app => {
+ const AppComponent = appList[app.name].component
- return (
- <App
- key={`${app.name}_app`}
- app={app}
- apps={apps}
- setApps={setApps}
- >
- <AppName />
- </App>
- );
- })}
- </>
- </Layout>
+ return (
+ <App
+ key={`${app.name}_app`}
+ app={app}
+ setApps={setApps}
+ >
+ <AppComponent />
+ </App>
+ );
+ })}
+ </>
+ </Layout>
+ </Context.Provider>
)
}
diff --git a/pages/verify.js b/pages/verify.js
index 7161d67..5991035 100644
--- a/pages/verify.js
+++ b/pages/verify.js
@@ -3,6 +3,7 @@ import {useState} from 'react'
import useUser from 'lib/useUser'
import fetchJson from 'lib/fetchJson'
import {Layout} from 'components'
+import Splash from 'components/Splash'
const Verify = () => {
const {user, mutateUser} = useUser({
@@ -48,7 +49,7 @@ const Verify = () => {
{!user
? (
<div className="window window--popup">
- <p>Loading...</p>
+ <Splash />
</div>
) : (
<div className={`window window--popup ${styles.verify}`}>