Skip to content

Commit

Permalink
Merge pull request #21 from QWYNG/play_with_hook
Browse files Browse the repository at this point in the history
impl loading indicator
  • Loading branch information
QWYNG committed Apr 25, 2020
2 parents c4adf8e + 6bb91e8 commit f06fc87
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 39 deletions.
46 changes: 7 additions & 39 deletions src/components/RankCard.tsx
Original file line number Diff line number Diff line change
@@ -1,47 +1,15 @@
import React, { useEffect, useState } from 'react'

// myEncryptedAccountIdは公開されてるので特に秘匿ではない
const myEncryptedAccountId = 'eouFLBesHZCWzbab9ygwRQjqcUATAJnM0QfXeN5rhtPnYw'
const RiotApiProxyEndPoint = ' https://hjdkbpkvcl.execute-api.us-east-2.amazonaws.com/default/apiProxyWithGO'

export interface RankedStatus {
leagueId: string
queueType: string
tier: string
rank: string
summonerId: string
summonerName: string
leaguePoints: number
wins: number
losses: number
veteran: boolean
inactive: boolean
freshBlood: boolean
hotStreak: boolean
}

function fetchThroughProxy(path: string): Promise<Response> {
return fetch(`${RiotApiProxyEndPoint}?path=${path}`)
}

function fetchMyRankStatus(): Promise<RankedStatus> {
return fetchThroughProxy(`league/v4/entries/by-summoner/${myEncryptedAccountId}`)
.then(response => response.json())
.then(json => json[0] as RankedStatus)
}
import React from 'react'
import useRankedStatus from '../hooks/useRankedStatus'

const RankCard: React.FC = () => {
const [rankedStatus, setRankedStatus] = useState<RankedStatus | undefined>(undefined)

useEffect(() => {
fetchMyRankStatus().then(fetchedStatus => {
setRankedStatus(fetchedStatus)
})
}, [])
const [rankedStatus, isLoading] = useRankedStatus()

if (isLoading) {
return <div> now Loading...</div>
}
return (
<div>
<p>{rankedStatus?.summonerName}のLOLソロQランク!</p>
<p>{rankedStatus?.summonerName}'s LOL ranked status</p>
<p>
{rankedStatus?.tier} {rankedStatus?.rank} {rankedStatus?.leaguePoints}LP
</p>
Expand Down
48 changes: 48 additions & 0 deletions src/hooks/useRankedStatus.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { useEffect, useState } from 'react'

// myEncryptedAccountIdは公開されてるので特に秘匿ではない
const myEncryptedAccountId = 'eouFLBesHZCWzbab9ygwRQjqcUATAJnM0QfXeN5rhtPnYw'
const RiotApiProxyEndPoint = ' https://hjdkbpkvcl.execute-api.us-east-2.amazonaws.com/default/apiProxyWithGO'

export interface RankedStatus {
leagueId: string
queueType: string
tier: string
rank: string
summonerId: string
summonerName: string
leaguePoints: number
wins: number
losses: number
veteran: boolean
inactive: boolean
freshBlood: boolean
hotStreak: boolean
}

function fetchThroughProxy(path: string): Promise<Response> {
return fetch(`${RiotApiProxyEndPoint}?path=${path}`)
}

function fetchMyRankStatus(): Promise<RankedStatus> {
return fetchThroughProxy(`league/v4/entries/by-summoner/${myEncryptedAccountId}`)
.then(response => response.json())
.then(json => json[0] as RankedStatus)
}

function useRankedStatus(): [RankedStatus | undefined, boolean] {
const [rankedStatus, setRankedStatus] = useState<RankedStatus | undefined>(undefined)
const [isLoading, setIsLoading] = useState(false)

useEffect(() => {
setIsLoading(true)
fetchMyRankStatus().then(fetchedStatus => {
setRankedStatus(fetchedStatus)
setIsLoading(false)
})
}, [])

return [rankedStatus, isLoading]
}

export default useRankedStatus

0 comments on commit f06fc87

Please sign in to comment.