0
0
mirror of https://github.com/yude-jp/yude.jp synced 2025-01-09 21:10:11 +09:00

Compare commits

...

6 Commits

Author SHA1 Message Date
5a0e87d7d4
Update icon size 2021-12-11 21:40:26 +09:00
b6f427d605
Fix image centering 2021-12-11 21:32:51 +09:00
92bb8b995c
Remove FreeSpeech banner 2021-12-11 21:32:42 +09:00
52c8cd8d1c
Fix: Discord playing data fetching 2021-12-11 21:13:44 +09:00
22385a42c8
Ignore @next/next/no-img-element, react-hooks/exhaustive-deps 2021-12-11 21:13:29 +09:00
99f776b861
Avoid using next/image 2021-12-11 19:19:50 +09:00
11 changed files with 41 additions and 76 deletions

View File

@ -1,6 +1,8 @@
{ {
"extends": "next/core-web-vitals", "extends": "next/core-web-vitals",
"rules": { "rules": {
"@next/next/no-document-import-in-page": "off" "@next/next/no-document-import-in-page": "off",
"@next/next/no-img-element": "off",
"react-hooks/exhaustive-deps": "off"
} }
} }

View File

@ -2,44 +2,37 @@
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
// Data fetching // Data fetching
import axios from 'axios'; import useSwr from 'swr'
const fetcher = (url) => fetch(url).then((res) => res.json())
// i18n // i18n
import { useTranslation, useLanguageQuery } from 'next-export-i18n'; import { useTranslation, useLanguageQuery } from 'next-export-i18n';
function App (){ export default function DiscordPlaying() {
const [data, setData] = useState({ hits: [] }); const { t } = useTranslation();
useEffect(() => { const [query] = useLanguageQuery();
const fetchData = async () => {
const result = await axios(
'https://discord.com/api/guilds/723409709306216498/widget.json',
);
setData(result.data);
};
fetchData();
}, []);
if (data === undefined){
console.log("[Discord API] データの取得に失敗しました。 / Failed to retrieve data.")
return <p></p>
}else{
const str = JSON.stringify(data)
if (str.indexOf("game") !== -1){ const { data, error } = useSwr(
`https://discord.com/api/guilds/723409709306216498/widget.json`,
fetcher
)
if (error){
console.log("[Discord API] データの取得に失敗しました。 / Failed to retrieve data.")
return <></>
} else {
if (!data) {
return <p>Loading...</p>
} else {
if (data.members) {
if (data.members[0].game) {
const yes_playing = t('yes_playing', {playing: data.members[0].game.name}) const yes_playing = t('yes_playing', {playing: data.members[0].game.name})
return <p>{yes_playing}</p> return <p>{yes_playing}</p>
}else{ } else {
return <></> return <></>
} }
} else {
return <></>
}
}
} }
};
export async function getServerSideProps() {
// Fetch data from external API
const res = await fetch(url)
const data = await res.json()
// Pass data to the page via props
return { props: { data } }
} }
export default App;

View File

@ -1,20 +0,0 @@
// Next.js
import Link from 'next/link'
import Image from 'next/image'
const happybusy = (props) => {
return (
<Link href="https://www.eff.org/pages/blue-ribbon-campaign">
<a>
<Image
src="/images/brstrip.gif"
width={150}
height={41}
alt="EFF Blue Ribbon Campaign"
/>
</a>
</Link>
)
}
export default happybusy

View File

@ -1,16 +1,16 @@
// Next.js // Next.js
import Link from 'next/link' import Link from 'next/link'
import Image from 'next/image'
const HappyBusy = (props) => { const HappyBusy = (props) => {
return ( return (
<Link href="https://sites.google.com/site/happybusy/"> <Link href="https://sites.google.com/site/happybusy/">
<a> <a>
<Image <img
src="/images/busy_banner.png" src="/images/busy_banner.png"
width={200} width={200}
height={42} height={42}
alt="時間のないサイト運営者リング" alt="時間のないサイト運営者リング"
className="mx-auto"
/> />
</a> </a>
</Link> </Link>

View File

@ -40,7 +40,7 @@ const Dropdown = ({ color }) => {
: openDropdownPopover(); : openDropdownPopover();
}} }}
> >
<FontAwesomeIcon icon={faLanguage} className="w-12 h-9" /> <FontAwesomeIcon icon={faLanguage} className="text-4xl" />
<svg className="-mr-1 ml-2 h-9 w-3" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <svg className="-mr-1 ml-2 h-9 w-3" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fillRule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clipRule="evenodd" /> <path fillRule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clipRule="evenodd" />
</svg> </svg>

View File

@ -11,7 +11,7 @@ const FontAwesomeMenu = (props) => {
<div> <div>
<Link href={{ pathname: dest, query: query }}> <Link href={{ pathname: dest, query: query }}>
<a> <a>
<FontAwesomeIcon icon={icon} className="w-10 h-10 fill-current inline transition duration-200 ease-in-out transform hover:-translate-y-1 hover:scale-110" /> <FontAwesomeIcon icon={icon} className="text-4xl fill-current inline transition duration-200 ease-in-out transform hover:-translate-y-1 hover:scale-110" />
</a> </a>
</Link> </Link>
</div> </div>

View File

@ -5,8 +5,6 @@ import React, { useState, useEffect } from 'react';
import { useTranslation, useLanguageQuery } from 'next-export-i18n'; import { useTranslation, useLanguageQuery } from 'next-export-i18n';
import axios from 'axios'; import axios from 'axios';
import Image from 'next/image'
import { list } from 'postcss';
export default function Minecraft(props) { export default function Minecraft(props) {
const { t } = useTranslation(); const { t } = useTranslation();
@ -55,7 +53,7 @@ export default function Minecraft(props) {
url.push('https://mc-heads.net/avatar/' + data.players.list[i]) url.push('https://mc-heads.net/avatar/' + data.players.list[i])
} }
for (var i in url){ for (var i in url){
list.push(<Image src={url[i]} key={i} className="inline" height="50" width="50" alt={i}/>) list.push(<img src={url[i]} key={i} className="inline" height="50" width="50" alt={i}/>)
} }
return <div>{list}</div> return <div>{list}</div>
} }

View File

@ -1,11 +1,10 @@
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import Image from 'next/image'
function App (props) { function App (props) {
const uuid = props; const uuid = props;
return ( return (
<Image <img
src={"https://crafatar.com/renders/body/" + uuid.uuid} src={"https://crafatar.com/renders/body/" + uuid.uuid}
width={110} width={110}
height={250} height={250}

View File

@ -5,22 +5,19 @@ import Layout from "./components/Layout"
import FAMenu from "./components/Menu/FontAwesomeMenu" import FAMenu from "./components/Menu/FontAwesomeMenu"
// Banner // Banner
import BlueRibbon from "./components/Footer/BlueRibbon"
import HappyBusy from "./components/Footer/HappyBusy" import HappyBusy from "./components/Footer/HappyBusy"
// Next.js // Next.js
import Image from 'next/image'
import Link from 'next/link' import Link from 'next/link'
// i18n // i18n
import { useTranslation, useLanguageQuery } from 'next-export-i18n'; import { useTranslation, useLanguageQuery } from 'next-export-i18n';
// React Router // React Router
import { useRouter } from 'next/router'
import MinecraftMenu from "./components/Menu/MinecraftMenu" import MinecraftMenu from "./components/Menu/MinecraftMenu"
// Font Awesome // Font Awesome
import { faDiscord, faGit, faMastodon, faGithub } from '@fortawesome/free-brands-svg-icons' import { faDiscord, faGit, faGithub } from '@fortawesome/free-brands-svg-icons'
import { faBook, faUser, faServer, faHouseUser, faHeart } from '@fortawesome/free-solid-svg-icons' import { faBook, faUser, faServer, faHouseUser, faHeart } from '@fortawesome/free-solid-svg-icons'
export default function Index(props) { export default function Index(props) {
@ -35,12 +32,12 @@ export default function Index(props) {
<Layout title={t('home')}> <Layout title={t('home')}>
<div className="my-9 text-center"> <div className="my-9 text-center">
<div className="m-10"> <div className="m-10">
<Image <img
className = "mx-auto"
src = "/images/avatar_riru.png" src = "/images/avatar_riru.png"
alt = "yude's avatar" alt = "yude's avatar"
width = {200} width = {200}
height = {200} height = {200}
unoptimized = {true}
/> />
</div> </div>
@ -59,7 +56,6 @@ export default function Index(props) {
{/* Banner */} {/* Banner */}
<div className="mx-auto mt-10"> <div className="mx-auto mt-10">
<BlueRibbon />
<HappyBusy /> <HappyBusy />
</div> </div>

View File

@ -9,7 +9,6 @@ import { useRouter } from 'next/router'
import { useTranslation, useLanguageQuery, LanguageSwitcher } from 'next-export-i18n'; import { useTranslation, useLanguageQuery, LanguageSwitcher } from 'next-export-i18n';
// Next.js // Next.js
import Image from 'next/image'
import Link from 'next/link' import Link from 'next/link'
// Custom pages // Custom pages
@ -51,7 +50,7 @@ export default function About(props) {
<div> <div>
<p className="my-2 text-3xl text-center">{t('title')}</p> <p className="my-2 text-3xl text-center">{t('title')}</p>
<div className="w-full"> <div className="w-full">
<Image <img
src = "/images/dynmap.png" src = "/images/dynmap.png"
alt = "Minecraft brief world map generated by Dynmap" alt = "Minecraft brief world map generated by Dynmap"
width = {1354} width = {1354}

View File

@ -11,8 +11,6 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
// Next.js, React // Next.js, React
import Link from 'next/link' import Link from 'next/link'
import Image from 'next/image'
import { useRouter } from 'next/router'
// Discord // Discord
import DiscordStatus from './components/Discord/DiscordStatus' import DiscordStatus from './components/Discord/DiscordStatus'
@ -46,7 +44,7 @@ export default function Profile(props) {
} }
<div> <div>
<div className="flex mb-10 justify-center"> <div className="flex mb-10 justify-center">
<Image <img
className = "rounded-full hover:animate-rumble z-0 p-15" className = "rounded-full hover:animate-rumble z-0 p-15"
src = "/images/avatar_mel.png" src = "/images/avatar_mel.png"
alt = "yude's avatar" alt = "yude's avatar"