import React, { useState } from 'react' import { atproto } from '../api/atproto.js' import { getPdsFromHandle, getApiConfig } from '../utils/pds.js' export default function UserLookup() { const [handleInput, setHandleInput] = useState('') const [userInfo, setUserInfo] = useState(null) const [loading, setLoading] = useState(false) const handleSubmit = async (e) => { e.preventDefault() if (!handleInput.trim() || loading) return setLoading(true) try { const userPds = await getPdsFromHandle(handleInput) const apiConfig = getApiConfig(userPds) const did = await atproto.getDid(userPds.replace('https://', ''), handleInput) const profile = await atproto.getProfile(apiConfig.bsky, did) setUserInfo({ handle: handleInput, pds: userPds, did, profile, config: apiConfig }) } catch (error) { console.error('User lookup failed:', error) setUserInfo({ error: error.message }) } finally { setLoading(false) } } return (

ユーザー検索

setHandleInput(e.target.value)} placeholder="Enter handle (e.g. syui.syui.ai)" disabled={loading} className="search-input" />
{userInfo && (

ユーザー情報:

{userInfo.error ? (
エラー: {userInfo.error}
) : (
Handle: {userInfo.handle}
PDS: {userInfo.pds}
DID: {userInfo.did}
Display Name: {userInfo.profile?.displayName}
PDS API: {userInfo.config?.pds}
Bsky API: {userInfo.config?.bsky}
Web: {userInfo.config?.web}
)}
)}
) }