df89b79c2a
* Clean up flags * Move getMetadataForLogger * Nail down attributers * Polyfill features cache
34 lines
749 B
TypeScript
34 lines
749 B
TypeScript
import {useMemo} from 'react'
|
|
|
|
import {BSKY_SERVICE} from '#/lib/constants'
|
|
import {type SessionAccount} from '#/state/session'
|
|
import {
|
|
type MergeableMetadata,
|
|
type SessionMetadata,
|
|
} from '#/analytics/metadata'
|
|
|
|
/**
|
|
* Thin `useMemo` wrapper that marks the metadata as memoized and provides a
|
|
* type guard.
|
|
*/
|
|
export function useMeta(metadata?: MergeableMetadata) {
|
|
const m = useMemo(() => metadata, [metadata])
|
|
if (!m) return
|
|
// @ts-ignore
|
|
m.__meta = true
|
|
return m
|
|
}
|
|
|
|
export function accountToSessionMetadata(
|
|
account: SessionAccount | undefined,
|
|
): SessionMetadata | undefined {
|
|
if (!account) {
|
|
return
|
|
} else {
|
|
return {
|
|
did: account.did,
|
|
isBskyPds: account.service.startsWith(BSKY_SERVICE),
|
|
}
|
|
}
|
|
}
|