fix: some 🐛
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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 && (
|
||||
|
||||
@@ -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 }
|
||||
@@ -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',
|
||||
|
||||
@@ -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': '保存到新服务器组',
|
||||
|
||||
@@ -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>}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
)
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user