diff --git a/src/components/header.js b/src/components/header.js new file mode 100644 index 0000000..907ade7 --- /dev/null +++ b/src/components/header.js @@ -0,0 +1,21 @@ +import React from 'react' +import Head from 'next/head' +import { useQueryClient } from 'react-query' + +export default function Header(props) { + const { title } = props + const queryClient = useQueryClient() + const globalData = queryClient.getQueryData(['infos']) + + const unreadString = + globalData && globalData.unreads.length > 0 + ? `(${globalData.unreads.length}) ` + : '' + const titleString = title ? `${title} - ` : '' + + return ( + + {`${unreadString}${titleString}Qmining | Frylabs.net`} + + ) +} diff --git a/src/pages/_app.js b/src/pages/_app.js index 2328112..60869d0 100644 --- a/src/pages/_app.js +++ b/src/pages/_app.js @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react' +import React, { useState } from 'react' import { useQuery, QueryClientProvider, QueryClient } from 'react-query' import Head from 'next/head' @@ -46,15 +46,11 @@ const getGlobalProps = () => { function App({ Component, pageProps, router }) { const [globalState, setGlobalState] = useState({}) const { data } = useQuery(['infos'], () => getGlobalProps(), { - refetchOnWindowFocus: true, + refetchOnWindowFocus: 'always', }) const { motd, uid: userId, unreads } = data || {} - useEffect(() => { - getGlobalProps() - }, []) - const updateGlobalState = (newState) => { setGlobalState({ ...globalState, @@ -79,7 +75,7 @@ function App({ Component, pageProps, router }) { queryClient.invalidateQueries(['infos'])} setGlobalState={updateGlobalState} globalState={globalState} > @@ -87,7 +83,7 @@ function App({ Component, pageProps, router }) { {...pageProps} router={router} globalData={globalData} - refetchGlobalData={getGlobalProps} + refetchGlobalData={() => queryClient.invalidateQueries(['infos'])} setGlobalState={updateGlobalState} globalState={globalState} /> diff --git a/src/pages/allQuestions.js b/src/pages/allQuestions.js index 8ddff19..8f97697 100644 --- a/src/pages/allQuestions.js +++ b/src/pages/allQuestions.js @@ -1,6 +1,6 @@ import React, { useState, useEffect } from 'react' -import Head from 'next/head' +import Header from '../components/header' import LoadingIndicator from '../components/LoadingIndicator.js' import QuestionSearchResult from '../components/QuestionSearchResult.js' import Subject from '../components/Subject.js' @@ -308,9 +308,7 @@ export default function AllQuestions({ router, globalState, setGlobalState }) { return (
- - Kérdések és tárgyak - Qmining | Frylabs.net - +
{dbs ? <>{renderDbSelector()} : } {dbs && data ? ( <> diff --git a/src/pages/chat.js b/src/pages/chat.js index 801e435..5e56d71 100644 --- a/src/pages/chat.js +++ b/src/pages/chat.js @@ -1,11 +1,11 @@ import React from 'react' -import Head from 'next/head' import io from 'socket.io-client' import linkifyString from 'linkify-string' import constants from '../constants.json' import LoadingIndicator from '../components/LoadingIndicator' import { queryClient } from '../pages/_app' +import Header from '../components/header' import styles from './chat.module.css' @@ -109,9 +109,6 @@ export default class Chat extends React.Component { connected: false, selectedUser: 0, } - if (props.refetchGlobalData) { - props.refetchGlobalData() - } if (props.globalData && !isNaN(props.globalData.userId)) { this.state.user = props.globalData.userId this.connect(this.props.globalData.userId) @@ -325,9 +322,6 @@ export default class Chat extends React.Component { chatMessageSeen(chatPartner) { const { msgs, user } = this.state - if (this.props.refetchGlobalData) { - this.props.refetchGlobalData() - } this.socket.emit('chat message read', { chatPartner: chatPartner }) this.setState({ msgs: { @@ -670,9 +664,7 @@ export default class Chat extends React.Component { return (
- - Chat - Qmining | Frylabs.net - +
{connected ? ( <>
diff --git a/src/pages/contact.js b/src/pages/contact.js index 7cc7dfc..b75641a 100644 --- a/src/pages/contact.js +++ b/src/pages/contact.js @@ -1,7 +1,7 @@ import React, { useState, useEffect } from 'react' -import Head from 'next/head' import Link from 'next/link' +import Header from '../components/header' import FeedbackArea from '../components/feedbackArea' import constants from '../constants.json' import LoadingIndicator from '../components/LoadingIndicator' @@ -37,9 +37,7 @@ export default function Contact({ globalState, setGlobalState }) { return (
- - Kapcsolat - Qmining | Frylabs.net - +

Kapcsolat

diff --git a/src/pages/contribute.js b/src/pages/contribute.js index 02dc3a0..375edaa 100644 --- a/src/pages/contribute.js +++ b/src/pages/contribute.js @@ -1,9 +1,9 @@ import React, { useState } from 'react' -import Head from 'next/head' import Todos from '../components/todoStuff/todos' import FeedbackArea from '../components/feedbackArea' import Modal from '../components/modal' +import Header from '../components/header' import constants from '../constants.json' import styles from './contribute.module.css' @@ -14,9 +14,7 @@ export default function Contribute({ globalState, setGlobalState }) { return (
- - Todos - Qmining | Frylabs.net - +

Teendők

diff --git a/src/pages/faq.js b/src/pages/faq.js index 08894c3..c286f90 100644 --- a/src/pages/faq.js +++ b/src/pages/faq.js @@ -1,7 +1,7 @@ import React, { useState, useEffect } from 'react' import Link from 'next/link' -import Head from 'next/head' +import Header from '../components/header' import constants from '../constants.json' import styles from './faq.module.css' @@ -503,9 +503,7 @@ export default function FAQ({ router }) { return (
- - GYIK - Qmining | Frylabs.net - +

Gyakran Ismételt Kérdések

diff --git a/src/pages/index.js b/src/pages/index.js index 25c2a54..6db2eb8 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -1,11 +1,11 @@ import React, { useState, useEffect } from 'react' import fetch from 'unfetch' -import Head from 'next/head' import LoadingIndicator from '../components/LoadingIndicator' import Sleep from '../components/sleep' import NewsEntry from '../components/newsEntry' import Composer from '../components/composer' +import Header from '../components/header' import styles from './index.module.css' import constants from '../constants.json' @@ -342,9 +342,7 @@ export default function Main({ globalData, globalState, setGlobalState }) { return (
- - Qmining | Frylabs.net - +
{renderMotd()} {renderNews()} diff --git a/src/pages/pwRequest.js b/src/pages/pwRequest.js index 84babd9..20fc22d 100644 --- a/src/pages/pwRequest.js +++ b/src/pages/pwRequest.js @@ -1,8 +1,9 @@ import React, { useState, useEffect } from 'react' import fetch from 'unfetch' -import Head from 'next/head' import Link from 'next/link' +import Header from '../components/header' + import styles from './pwRequest.module.css' import constants from '../constants.json' @@ -96,9 +97,7 @@ export default function PwRequest({ globalData, globalState, setGlobalState }) { return (
- - Jelszó generálás - Qmining | Frylabs.net - +

Jelszó generálás

diff --git a/src/pages/ranklist.js b/src/pages/ranklist.js index 17f5651..932a6fe 100644 --- a/src/pages/ranklist.js +++ b/src/pages/ranklist.js @@ -1,7 +1,7 @@ import React, { useState, useEffect } from 'react' import fetch from 'unfetch' -import Head from 'next/head' +import Header from '../components/header' import LoadingIndicator from '../components/LoadingIndicator' import styles from './ranklist.module.css' @@ -145,9 +145,7 @@ export default function RankList({ globalData, globalState, setGlobalState }) { return (
- - Ranklista - Qmining | Frylabs.net - +
diff --git a/src/pages/script.js b/src/pages/script.js index 962ca09..8a575c4 100644 --- a/src/pages/script.js +++ b/src/pages/script.js @@ -1,7 +1,7 @@ -import React, { useState, useEffect } from 'react' +import React from 'react' import { useQuery } from 'react-query' -import Head from 'next/head' +import Header from '../components/header' import Link from 'next/link' import constants from '../constants.json' @@ -30,9 +30,7 @@ export default function Script() { return (
- - Script - Qmining | Frylabs.net - +

Script

diff --git a/src/pages/userfiles.js b/src/pages/userfiles.js index af5ac6b..0e7edc1 100644 --- a/src/pages/userfiles.js +++ b/src/pages/userfiles.js @@ -1,11 +1,11 @@ import React, { useState, useEffect } from 'react' -import Head from 'next/head' import Link from 'next/link' import LoadingIndicator from '../components/LoadingIndicator' import Modal from '../components/modal' import SearchBar from '../components/searchBar' import UpDownVote from '../components/upDownVote' +import Header from '../components/header' import styles from './userfiles.module.css' import constants from '../constants.json' @@ -455,9 +455,7 @@ export default function UserFiles({ return (
- - ZH-k/Vizsgák, segédanyagok - Qmining | Frylabs.net - +

ZH-k/Vizsgák, segédanyagok