This commit is contained in:
Shusui MOYATANI
2023-03-18 14:22:25 +09:00
parent fd7da8ad7c
commit 4f10489d19
6 changed files with 18 additions and 20 deletions

View File

@@ -6,13 +6,13 @@ type ConfigProps = {
}; };
const RelayConfig = () => { const RelayConfig = () => {
const { config, setConfig, addRelay, removeRelay } = useConfig(); const { config, addRelay, removeRelay } = useConfig();
const [relayUrlInput, setRelayUrlInput] = createSignal<string>(''); const [relayUrlInput, setRelayUrlInput] = createSignal<string>('');
const handleClickAddRelay: JSX.EventHandler<HTMLFormElement, Event> = (ev) => { const handleClickAddRelay: JSX.EventHandler<HTMLFormElement, Event> = (ev) => {
ev.preventDefault(); ev.preventDefault();
if (relayUrlInput().length > 0) return; if (relayUrlInput().length === 0) return;
addRelay(relayUrlInput()); addRelay(relayUrlInput());
setRelayUrlInput(''); setRelayUrlInput('');
}; };

View File

@@ -44,7 +44,7 @@ const Reaction: Component<ReactionProps> = (props) => {
</Switch> </Switch>
</div> </div>
<div class="notification-user flex gap-1"> <div class="notification-user flex gap-1">
<div class="author-icon h-5 w-5 shrink-0"> <div class="author-icon h-5 w-5 shrink-0 overflow-hidden object-cover">
<Show when={profile()?.picture != null}> <Show when={profile()?.picture != null}>
<img <img
src={profile()?.picture} src={profile()?.picture}

View File

@@ -146,7 +146,7 @@ const TextNoteDisplay: Component<TextNoteDisplayProps> = (props) => {
return ( return (
<div class="nostr-textnote flex flex-col"> <div class="nostr-textnote flex flex-col">
<div class="flex w-full gap-1"> <div class="flex w-full gap-1">
<div class="author-icon h-10 w-10 shrink-0"> <div class="author-icon h-10 w-10 shrink-0 overflow-hidden object-cover">
<Show when={author()?.picture}> <Show when={author()?.picture}>
{/* TODO 画像は脆弱性回避のためにimgじゃない方法で読み込みたい */} {/* TODO 画像は脆弱性回避のためにimgじゃない方法で読み込みたい */}
<img <img

View File

@@ -14,7 +14,7 @@ type UsePersistStatus = {
loggedIn: () => void; loggedIn: () => void;
}; };
const InitialLoginStatus = { const InitialPersistStatus = {
loggedIn: false, loggedIn: false,
agreeWithNostrBuild: false, agreeWithNostrBuild: false,
}; };
@@ -25,25 +25,21 @@ const deserializer = (json: string): PersistStatus => JSON.parse(json) as Persis
const storage = createStorageWithSerializer(() => window.localStorage, serializer, deserializer); const storage = createStorageWithSerializer(() => window.localStorage, serializer, deserializer);
const [persistStatus, setLoginStatus] = createSignalWithStorage( const [persistStatus, setPersistStatus] = createSignalWithStorage(
'RabbitLoginStatus', 'RabbitPersistStatus',
InitialLoginStatus, InitialPersistStatus,
storage, storage,
); );
const usePersistStatus = (): UsePersistStatus => { const usePersistStatus = (): UsePersistStatus => {
const loggedIn = () => { const loggedIn = () => {
setLoginStatus((current) => ({ ...current, loggedIn: true })); setPersistStatus((current) => ({ ...current, loggedIn: true }));
}; };
return { return {
persistStatus: () => ({ persistStatus: () => ({
get loggedIn() { ...InitialPersistStatus,
return persistStatus().loggedIn ?? false; ...persistStatus(),
},
get agreeWithNostrBuild() {
return persistStatus().agreeWithNostrBuild ?? false;
},
}), }),
loggedIn, loggedIn,
}; };

View File

@@ -20,7 +20,7 @@ type UseConfig = {
const InitialConfig: Config = { const InitialConfig: Config = {
relayUrls: [ relayUrls: [
'wss://relay-jp.nostr.wirednet.jp', 'wss://relay-jp.nostr.wirednet.jp',
'wss://nostr.h3z.jp/', 'wss://nostr.h3z.jp',
'wss://relay.damus.io', 'wss://relay.damus.io',
'wss://nos.lol', 'wss://nos.lol',
'wss://relay.snort.social', 'wss://relay.snort.social',
@@ -55,7 +55,12 @@ const useConfig = (): UseConfig => {
})); }));
}; };
return { config, setConfig, addRelay, removeRelay }; return {
config: () => ({ ...InitialConfig, ...config() }),
setConfig,
addRelay,
removeRelay,
};
}; };
export default useConfig; export default useConfig;

View File

@@ -1,8 +1,5 @@
const domains = ['i.imgur.com', 'imgur.com', 'i.gyazo.com'];
export const isImageUrl = (url: URL): boolean => { export const isImageUrl = (url: URL): boolean => {
if (url.pathname.match(/\.(jpeg|jpg|png|gif|webp)$/i)) return true; if (url.pathname.match(/\.(jpeg|jpg|png|gif|webp)$/i)) return true;
if (domains.includes(url.host)) return true;
return false; return false;
}; };