mirror of
https://github.com/aljazceru/rabbit.git
synced 2025-12-17 14:04:21 +01:00
update
This commit is contained in:
@@ -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('');
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user