finishing up the implementation
This commit is contained in:
committed by
Samuel Newman
parent
139683fab1
commit
440fae6bc5
@@ -1,3 +1,9 @@
|
|||||||
|
export type ColorModeValues = 'auto' | 'light' | 'dark'
|
||||||
|
|
||||||
|
export function assertColorModeValues(value: string): value is ColorModeValues {
|
||||||
|
return ['auto', 'light', 'dark'].includes(value)
|
||||||
|
}
|
||||||
|
|
||||||
export function applyTheme(theme: 'light' | 'dark') {
|
export function applyTheme(theme: 'light' | 'dark') {
|
||||||
document.documentElement.classList.remove('light', 'dark')
|
document.documentElement.classList.remove('light', 'dark')
|
||||||
document.documentElement.classList.add(theme)
|
document.documentElement.classList.add(theme)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import {useEffect, useMemo, useRef, useState} from 'preact/hooks'
|
|||||||
|
|
||||||
import arrowBottom from '../../assets/arrowBottom_stroke2_corner0_rounded.svg'
|
import arrowBottom from '../../assets/arrowBottom_stroke2_corner0_rounded.svg'
|
||||||
import logo from '../../assets/logo.svg'
|
import logo from '../../assets/logo.svg'
|
||||||
import {initColorMode} from '../color-mode'
|
import {assertColorModeValues, initColorMode} from '../color-mode'
|
||||||
import {Container} from '../components/container'
|
import {Container} from '../components/container'
|
||||||
import {Link} from '../components/link'
|
import {Link} from '../components/link'
|
||||||
import {Post} from '../components/post'
|
import {Post} from '../components/post'
|
||||||
@@ -30,11 +30,6 @@ const agent = new BskyAgent({
|
|||||||
|
|
||||||
render(<LandingPage />, root)
|
render(<LandingPage />, root)
|
||||||
|
|
||||||
type ColorModeValues = 'auto' | 'light' | 'dark'
|
|
||||||
function assertColorModeValues(value: string): value is ColorModeValues {
|
|
||||||
return ['auto', 'light', 'dark'].includes(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
function LandingPage() {
|
function LandingPage() {
|
||||||
const [uri, setUri] = useState('')
|
const [uri, setUri] = useState('')
|
||||||
const [colorMode, setColorMode] = useState<'auto' | 'light' | 'dark'>('auto')
|
const [colorMode, setColorMode] = useState<'auto' | 'light' | 'dark'>('auto')
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import {AppBskyFeedDefs, AtpAgent} from '@atproto/api'
|
|||||||
import {h, render} from 'preact'
|
import {h, render} from 'preact'
|
||||||
|
|
||||||
import logo from '../../assets/logo.svg'
|
import logo from '../../assets/logo.svg'
|
||||||
import {initColorMode} from '../color-mode'
|
import {applyTheme, assertColorModeValues, initColorMode} from '../color-mode'
|
||||||
import {Container} from '../components/container'
|
import {Container} from '../components/container'
|
||||||
import {Link} from '../components/link'
|
import {Link} from '../components/link'
|
||||||
import {Post} from '../components/post'
|
import {Post} from '../components/post'
|
||||||
@@ -22,7 +22,18 @@ if (!uri) {
|
|||||||
throw new Error('No uri in path')
|
throw new Error('No uri in path')
|
||||||
}
|
}
|
||||||
|
|
||||||
initColorMode()
|
const query = new URLSearchParams(window.location.search)
|
||||||
|
const colorMode = query.get('colorMode')
|
||||||
|
|
||||||
|
if (
|
||||||
|
colorMode != null &&
|
||||||
|
assertColorModeValues(colorMode) &&
|
||||||
|
colorMode !== 'auto'
|
||||||
|
) {
|
||||||
|
applyTheme(colorMode)
|
||||||
|
} else {
|
||||||
|
initColorMode()
|
||||||
|
}
|
||||||
|
|
||||||
agent
|
agent
|
||||||
.getPostThread({
|
.getPostThread({
|
||||||
|
|||||||
Reference in New Issue
Block a user