Skip to content

Commit

Permalink
Fix initial flash of default data
Browse files Browse the repository at this point in the history
  • Loading branch information
MatthewStanciu committed Nov 17, 2023
1 parent fadcfd8 commit 5cad6f1
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 27 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@purduehackers/time",
"version": "0.6.11",
"version": "0.6.12",
"description": "convert between traditional time and lightning time ⚡️",
"main": "dist/index.js",
"module": "dist/esm/index.js",
Expand Down
46 changes: 20 additions & 26 deletions src/react/index.tsx
Original file line number Diff line number Diff line change
@@ -1,35 +1,29 @@
import { useState, useEffect, useRef, useLayoutEffect } from 'react'
import { useState, useEffect } from 'react'
import { format as formatTime } from 'date-fns'
import { LightningTime, MILLIS_PER_CHARGE } from '../time'
import { Colors } from '../types'

const useIsomorphicLayoutEffect =
typeof window !== 'undefined' ? useLayoutEffect : useEffect
function calculateInitialData() {
const now = new Date()
const { lightningString, colors } = new LightningTime().convertToLightning(
now
)
const formattedNormalTime = formatTime(now, 'h:mm a')

return {
lightningString,
formattedNormalTime,
colors
}
}

export function useLightningTimeClock() {
const [lightningTimeClock, setLightningTime] = useState<string>('')
const [normalTimeClock, setNormalTime] = useState<string>('')
const [timeColors, setTimeColors] = useState<Colors>({
boltColor: '',
zapColor: '',
sparkColor: ''
})
const isFirstRender = useRef(true)

useIsomorphicLayoutEffect(() => {
if (isFirstRender.current) {
const now = new Date()
const { lightningString, colors } =
new LightningTime().convertToLightning(now)
const formattedTime = formatTime(now, 'h:mm a')

setLightningTime(lightningString)
setNormalTime(formattedTime)
setTimeColors(colors)

isFirstRender.current = false
}
}, [])
const { lightningString, formattedNormalTime, colors } =
calculateInitialData()
const [lightningTimeClock, setLightningTime] =
useState<string>(lightningString)
const [normalTimeClock, setNormalTime] = useState<string>(formattedNormalTime)
const [timeColors, setTimeColors] = useState<Colors>(colors)

useEffect(() => {
const update = () => {
Expand Down

0 comments on commit 5cad6f1

Please sign in to comment.