fix: some 🐛

This commit is contained in:
codytseng
2025-02-01 14:05:13 +08:00
parent a264b747e7
commit 7c34042da3
11 changed files with 27 additions and 69 deletions

View File

@@ -1,5 +1,4 @@
import Sidebar from '@/components/Sidebar'
import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '@/components/ui/resizable'
import { Separator } from '@/components/ui/separator'
import { cn } from '@/lib/utils'
import NoteListPage from '@/pages/primary/NoteListPage'
@@ -268,11 +267,12 @@ export function PageManager({ maxStackSize = 5 }: { maxStackSize?: number }) {
<div className="flex h-screen overflow-hidden">
<Sidebar />
<Separator orientation="vertical" />
<ResizablePanelGroup direction="horizontal">
<ResizablePanel minSize={30}>
<div className="grid grid-cols-2 w-full">
<div className="flex">
{primaryPages.map(({ name, element }) => (
<div
key={name}
className="w-full"
style={{
display: currentPrimaryPage === name ? 'block' : 'none'
}}
@@ -280,9 +280,9 @@ export function PageManager({ maxStackSize = 5 }: { maxStackSize?: number }) {
{element}
</div>
))}
</ResizablePanel>
<ResizableHandle />
<ResizablePanel minSize={30}>
<Separator orientation="vertical" className="z-50" />
</div>
<div>
{secondaryStack.length ? (
secondaryStack.map((item, index) => (
<div
@@ -295,8 +295,8 @@ export function PageManager({ maxStackSize = 5 }: { maxStackSize?: number }) {
) : (
<HomePage />
)}
</ResizablePanel>
</ResizablePanelGroup>
</div>
</div>
</div>
</SecondaryPageContext.Provider>
</PrimaryPageContext.Provider>

View File

@@ -86,14 +86,14 @@ function AccountManagerNav({
}}
className="w-full mt-4"
>
{t('Signup with Nstart wizard')}
{t('Sign up')}
</Button>
<Button
variant="link"
onClick={() => setPage('generate')}
className="w-full text-muted-foreground py-0 h-fit mt-1"
>
{t('or generate your private key here')}
{t('or simply generate a private key')}
</Button>
</div>
{accounts.length > 0 && (

View File

@@ -1,40 +0,0 @@
import { GripVertical } from 'lucide-react'
import * as ResizablePrimitive from 'react-resizable-panels'
import { cn } from '@/lib/utils'
const ResizablePanelGroup = ({
className,
...props
}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => (
<ResizablePrimitive.PanelGroup
className={cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className)}
{...props}
/>
)
const ResizablePanel = ResizablePrimitive.Panel
const ResizableHandle = ({
withHandle,
className,
...props
}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
withHandle?: boolean
}) => (
<ResizablePrimitive.PanelResizeHandle
className={cn(
'relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90',
className
)}
{...props}
>
{withHandle && (
<div className="z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border">
<GripVertical className="h-2.5 w-2.5" />
</div>
)}
</ResizablePrimitive.PanelResizeHandle>
)
export { ResizablePanelGroup, ResizablePanel, ResizableHandle }

View File

@@ -132,7 +132,7 @@ export default {
'read & write relays notice':
'The number of read and write servers should ideally be kept between 2 and 4.',
"Don't have an account yet?": "Don't have an account yet?",
'or generate your private key here': 'or generate your private key here',
'or simply generate a private key': 'or simply generate a private key',
'This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.':
'This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.',
Edit: 'Edit',
@@ -146,7 +146,7 @@ export default {
Back: 'Back',
'optional: encrypt nsec': 'optional: encrypt nsec',
password: 'password',
'Signup with Nstart wizard': 'Signup with Nstart wizard',
'Sign up': 'Sign up',
'Save to': 'Save to',
'Enter a name for the new relay set': 'Enter a name for the new relay set',
'Save to a new relay set': 'Save to a new relay set',

View File

@@ -132,7 +132,7 @@ export default {
'写服务器用于发布您的事件。其他用户会从您的写服务器寻找您发布的事件。',
'read & write relays notice': '读服务器和写服务器的数量都应尽量保持在 2 到 4 个之间。',
"Don't have an account yet?": '还没有账户?',
'or generate your private key here': '或者直接生成私钥',
'or simply generate a private key': '或者简单生成一个私钥',
'This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.':
'这是私钥,请勿与他人分享。请妥善保管,否则将无法找回。',
Edit: '编辑',
@@ -147,7 +147,7 @@ export default {
'password (optional): encrypt nsec': '密码 (可选): 加密 nsec',
'optional: encrypt nsec': '可选: 加密 nsec',
password: '密码',
'Signup with Nstart wizard': '使用 Nstart 向导注册',
'Sign up': '注册',
'Save to': '保存到',
'Enter a name for the new relay set': '输入新服务器组的名称',
'Save to a new relay set': '保存到新服务器组',

View File

@@ -67,7 +67,7 @@ const PrimaryPageLayout = forwardRef(
<DeepBrowsingProvider active={current === pageName} scrollAreaRef={scrollAreaRef}>
<ScrollArea
className="h-screen overflow-auto"
scrollBarClassName="z-50"
scrollBarClassName="z-20 pt-12"
ref={scrollAreaRef}
>
{titlebar && <PrimaryPageTitlebar>{titlebar}</PrimaryPageTitlebar>}

View File

@@ -76,7 +76,7 @@ const SecondaryPageLayout = forwardRef(
<DeepBrowsingProvider active={currentIndex === index} scrollAreaRef={scrollAreaRef}>
<ScrollArea
className="h-screen overflow-auto"
scrollBarClassName="sm:z-50"
scrollBarClassName="z-20 pt-12"
ref={scrollAreaRef}
>
<SecondaryPageTitlebar

View File

@@ -28,6 +28,7 @@ export function DeepBrowsingProvider({
const lastScrollTopRef = useRef(
(!scrollAreaRef ? window.scrollY : scrollAreaRef.current?.scrollTop) || 0
)
const [lastScrollTop, setLastScrollTop] = useState(lastScrollTopRef.current)
useEffect(() => {
setDeepBrowsing(false)
@@ -48,6 +49,7 @@ export function DeepBrowsingProvider({
const scrollTop = (!scrollAreaRef ? window.scrollY : scrollAreaRef.current?.scrollTop) || 0
const diff = scrollTop - lastScrollTopRef.current
lastScrollTopRef.current = scrollTop
setLastScrollTop(scrollTop)
if (scrollTop <= 800) {
setDeepBrowsing(false)
return
@@ -74,7 +76,7 @@ export function DeepBrowsingProvider({
}, [active])
return (
<DeepBrowsingContext.Provider value={{ deepBrowsing, lastScrollTop: lastScrollTopRef.current }}>
<DeepBrowsingContext.Provider value={{ deepBrowsing, lastScrollTop }}>
{children}
</DeepBrowsingContext.Provider>
)

View File

@@ -1,5 +1,6 @@
import { BIG_RELAY_URLS } from '@/constants'
import { isWebsocketUrl, normalizeUrl } from '@/lib/url'
import client from '@/services/client.service'
import storage from '@/services/storage.service'
import { TFeedType } from '@/types'
import { Filter } from 'nostr-tools'
@@ -37,6 +38,7 @@ export function FeedProvider({ children }: { children: React.ReactNode }) {
const { getFollowings } = useFollowList()
const { relaySets } = useRelaySets()
const feedTypeRef = useRef<TFeedType>(storage.getFeedType())
const [feedType, setFeedType] = useState<TFeedType>(feedTypeRef.current)
const [relayUrls, setRelayUrls] = useState<string[]>([])
const [temporaryRelayUrls, setTemporaryRelayUrls] = useState<string[]>([])
const [filter, setFilter] = useState<Filter>({})
@@ -93,11 +95,13 @@ export function FeedProvider({ children }: { children: React.ReactNode }) {
(relaySets.length > 0 ? relaySets[0] : null)
if (relaySet) {
feedTypeRef.current = feedType
setFeedType(feedType)
setRelayUrls(relaySet.relayUrls)
setActiveRelaySetId(relaySet.id)
setFilter({})
storage.setActiveRelaySetId(relaySet.id)
storage.setFeedType(feedType)
client.setCurrentRelayUrls(relaySet.relayUrls)
}
return setIsReady(true)
}
@@ -106,6 +110,7 @@ export function FeedProvider({ children }: { children: React.ReactNode }) {
return setIsReady(true)
}
feedTypeRef.current = feedType
setFeedType(feedType)
setActiveRelaySetId(null)
const [relayList, followings] = await Promise.all([
getRelayList(options.pubkey),
@@ -125,10 +130,12 @@ export function FeedProvider({ children }: { children: React.ReactNode }) {
}
feedTypeRef.current = feedType
setFeedType(feedType)
setTemporaryRelayUrls(urls)
setRelayUrls(urls)
setActiveRelaySetId(null)
setFilter({})
client.setCurrentRelayUrls(urls)
return setIsReady(true)
}
setIsReady(true)
@@ -137,7 +144,7 @@ export function FeedProvider({ children }: { children: React.ReactNode }) {
return (
<FeedContext.Provider
value={{
feedType: feedTypeRef.current,
feedType,
relayUrls,
temporaryRelayUrls,
filter,