Fix library view for anonymous user
Some checks failed
Backend CI / build (3.12) (push) Has been cancelled
Frontend CI / build (18.x) (push) Has been cancelled

This commit is contained in:
IRBorisov 2024-06-14 21:43:37 +03:00
parent 5ddad91dbd
commit 255fe90ce7
2 changed files with 34 additions and 27 deletions

View File

@ -3,6 +3,7 @@
import { useCallback, useLayoutEffect, useMemo, useState } from 'react'; import { useCallback, useLayoutEffect, useMemo, useState } from 'react';
import DataLoader from '@/components/wrap/DataLoader'; import DataLoader from '@/components/wrap/DataLoader';
import { useAuth } from '@/context/AuthContext';
import { useLibrary } from '@/context/LibraryContext'; import { useLibrary } from '@/context/LibraryContext';
import useLocalStorage from '@/hooks/useLocalStorage'; import useLocalStorage from '@/hooks/useLocalStorage';
import { ILibraryItem, LocationHead } from '@/models/library'; import { ILibraryItem, LocationHead } from '@/models/library';
@ -15,6 +16,7 @@ import SearchPanel from './SearchPanel';
function LibraryPage() { function LibraryPage() {
const library = useLibrary(); const library = useLibrary();
const { user } = useAuth();
const [items, setItems] = useState<ILibraryItem[]>([]); const [items, setItems] = useState<ILibraryItem[]>([]);
const [query, setQuery] = useState(''); const [query, setQuery] = useState('');
@ -34,12 +36,12 @@ function LibraryPage() {
head: head, head: head,
path: path, path: path,
query: query, query: query,
isEditor: isEditor, isEditor: user ? isEditor : undefined,
isOwned: isOwned, isOwned: user ? isOwned : undefined,
isSubscribed: isSubscribed, isSubscribed: user ? isSubscribed : undefined,
isVisible: isVisible isVisible: user ? isVisible : true
}), }),
[head, path, query, isEditor, isOwned, isSubscribed, isVisible] [head, path, query, isEditor, isOwned, isSubscribed, isVisible, user]
); );
useLayoutEffect(() => { useLayoutEffect(() => {

View File

@ -11,6 +11,7 @@ import DropdownButton from '@/components/ui/DropdownButton';
import MiniButton from '@/components/ui/MiniButton'; import MiniButton from '@/components/ui/MiniButton';
import SearchBar from '@/components/ui/SearchBar'; import SearchBar from '@/components/ui/SearchBar';
import SelectorButton from '@/components/ui/SelectorButton'; import SelectorButton from '@/components/ui/SelectorButton';
import { useAuth } from '@/context/AuthContext';
import useDropdown from '@/hooks/useDropdown'; import useDropdown from '@/hooks/useDropdown';
import { LocationHead } from '@/models/library'; import { LocationHead } from '@/models/library';
import { HelpTopic } from '@/models/miscellaneous'; import { HelpTopic } from '@/models/miscellaneous';
@ -58,6 +59,7 @@ function SearchPanel({
isEditor, isEditor,
toggleEditor toggleEditor
}: SearchPanelProps) { }: SearchPanelProps) {
const { user } = useAuth();
const headMenu = useDropdown(); const headMenu = useDropdown();
const handleChange = useCallback( const handleChange = useCallback(
@ -83,29 +85,32 @@ function SearchPanel({
{filtered} из {total} {filtered} из {total}
</div> </div>
<div className='cc-icons'> {user ? (
<MiniButton <div className='cc-icons'>
title='Видимость' <MiniButton
icon={<VisibilityIcon value={true} className={tripleToggleColor(isVisible)} />} title='Видимость'
onClick={toggleVisible} icon={<VisibilityIcon value={true} className={tripleToggleColor(isVisible)} />}
/> onClick={toggleVisible}
<MiniButton />
title='Я - Подписчик' <MiniButton
icon={<SubscribeIcon value={true} className={tripleToggleColor(isSubscribed)} />} title='Я - Подписчик'
onClick={toggleSubscribed} icon={<SubscribeIcon value={true} className={tripleToggleColor(isSubscribed)} />}
/> onClick={toggleSubscribed}
<MiniButton />
title='Я - Владелец'
icon={<IconOwner size='1.25rem' className={tripleToggleColor(isOwned)} />}
onClick={toggleOwned}
/>
<MiniButton <MiniButton
title='Я - Редактор' title='Я - Владелец'
icon={<IconEditor size='1.25rem' className={tripleToggleColor(isEditor)} />} icon={<IconOwner size='1.25rem' className={tripleToggleColor(isOwned)} />}
onClick={toggleEditor} onClick={toggleOwned}
/> />
</div>
<MiniButton
title='Я - Редактор'
icon={<IconEditor size='1.25rem' className={tripleToggleColor(isEditor)} />}
onClick={toggleEditor}
/>
</div>
) : null}
<div className='flex items-center h-full mx-auto'> <div className='flex items-center h-full mx-auto'>
<SearchBar <SearchBar