import { createSignal, For, type JSX } from 'solid-js'; import XMark from 'heroicons/24/outline/x-mark.svg'; import Modal from '@/components/Modal'; import useConfig, { type Config } from '@/nostr/useConfig'; import UserNameDisplay from './UserDisplayName'; type ConfigProps = { onClose: () => void; }; const RelayConfig = () => { const { config, addRelay, removeRelay } = useConfig(); const [relayUrlInput, setRelayUrlInput] = createSignal(''); const handleClickAddRelay: JSX.EventHandler = (ev) => { ev.preventDefault(); if (relayUrlInput().length === 0) return; addRelay(relayUrlInput()); setRelayUrlInput(''); }; return (

リレー

    {(relayUrl: string) => { return (
  • {relayUrl}
  • ); }}
setRelayUrlInput(ev.currentTarget.value)} />
); }; const dateFormats: { id: Config['dateFormat']; name: string; example: string; }[] = [ { id: 'relative', name: '相対表記', example: '7秒前', }, { id: 'absolute-short', name: '絶対表記 (短形式)', example: '昨日 23:55', }, { id: 'absolute-long', name: '絶対表記 (長形式)', example: '2020/11/8 21:02:53', }, ]; const DateFormatConfig = () => { const { config, setConfig } = useConfig(); const updateDateFormat = (dateFormat: Config['dateFormat']) => { setConfig((current) => ({ ...current, dateFormat })); }; return (

時刻の表記

{({ id, name, example }) => (
{example}
)}
); }; const ToggleButton = (props: { value: boolean; onClick: JSX.EventHandler; }) => { return ( ); }; const MuteConfig = () => { const { config, removeMutedPubkey, addMutedKeyword, removeMutedKeyword } = useConfig(); const [keywordInput, setKeywordInput] = createSignal(''); const handleClickAddKeyword: JSX.EventHandler = (ev) => { ev.preventDefault(); if (keywordInput().length === 0) return; addMutedKeyword(keywordInput()); setKeywordInput(''); }; return ( <>

ミュートしたユーザ

    {(pubkey) => (
  • )}

ミュートした単語

    {(keyword) => (
  • {keyword}
  • )}
setKeywordInput(ev.currentTarget.value)} />
); }; const OtherConfig = () => { const { config, setConfig } = useConfig(); const toggleKeepOpenPostForm = () => { setConfig((current) => ({ ...current, keepOpenPostForm: !(current.keepOpenPostForm ?? false), })); }; const toggleShowImage = () => { setConfig((current) => ({ ...current, showImage: !(current.showImage ?? true), })); }; return (

その他

投稿欄を開いたままにする
toggleKeepOpenPostForm()} />
画像をデフォルトで表示する
toggleShowImage()} />
{/*
リアクションのデフォルト
*/}
); }; const ConfigUI = (props: ConfigProps) => { return (

設定

); }; export default ConfigUI;