22 lines
632 B
TypeScript
22 lines
632 B
TypeScript
import { readIdentity, writeIdentity } from '../utils/identity'
|
|
|
|
export function useIdentity() {
|
|
const name = useState<string | null>('identity-name', () => null)
|
|
const loaded = useState('identity-loaded', () => false)
|
|
|
|
if (import.meta.client && !loaded.value) {
|
|
const identity = readIdentity(window.localStorage)
|
|
name.value = identity?.name ?? null
|
|
loaded.value = true
|
|
}
|
|
|
|
function setName(newName: string) {
|
|
const trimmed = newName.trim()
|
|
if (!trimmed) return
|
|
name.value = trimmed
|
|
if (import.meta.client) writeIdentity(window.localStorage, { name: trimmed })
|
|
}
|
|
|
|
return { name, setName }
|
|
}
|