mirror of
https://github.com/cheeaun/phanpy.git
synced 2025-03-23 14:13:21 +01:00
Fix status not shown if ancestors count > 40
Plus a few perf fixes
This commit is contained in:
parent
97964cff73
commit
60c635b610
2 changed files with 32 additions and 10 deletions
15
src/app.jsx
15
src/app.jsx
|
@ -13,6 +13,7 @@ import {
|
||||||
Routes,
|
Routes,
|
||||||
useLocation,
|
useLocation,
|
||||||
useNavigate,
|
useNavigate,
|
||||||
|
useParams,
|
||||||
} from 'react-router-dom';
|
} from 'react-router-dom';
|
||||||
import { useSnapshot } from 'valtio';
|
import { useSnapshot } from 'valtio';
|
||||||
|
|
||||||
|
@ -250,9 +251,11 @@ function App() {
|
||||||
<Route path="/:instance?/search" element={<Search />} />
|
<Route path="/:instance?/search" element={<Search />} />
|
||||||
{/* <Route path="/:anything" element={<NotFound />} /> */}
|
{/* <Route path="/:anything" element={<NotFound />} /> */}
|
||||||
</Routes>
|
</Routes>
|
||||||
<Routes>
|
{uiState === 'default' && (
|
||||||
<Route path="/:instance?/s/:id" element={<Status />} />
|
<Routes>
|
||||||
</Routes>
|
<Route path="/:instance?/s/:id" element={<StatusRoute />} />
|
||||||
|
</Routes>
|
||||||
|
)}
|
||||||
<div>
|
<div>
|
||||||
{isLoggedIn &&
|
{isLoggedIn &&
|
||||||
!snapStates.settings.shortcutsColumnsMode &&
|
!snapStates.settings.shortcutsColumnsMode &&
|
||||||
|
@ -490,4 +493,10 @@ function BackgroundService({ isLoggedIn }) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function StatusRoute() {
|
||||||
|
const params = useParams();
|
||||||
|
const { id, instance } = params;
|
||||||
|
return <Status id={id} instance={instance} />;
|
||||||
|
}
|
||||||
|
|
||||||
export { App };
|
export { App };
|
||||||
|
|
|
@ -3,6 +3,7 @@ import './status.css';
|
||||||
import { Menu, MenuDivider, MenuHeader, MenuItem } from '@szhsin/react-menu';
|
import { Menu, MenuDivider, MenuHeader, MenuItem } from '@szhsin/react-menu';
|
||||||
import debounce from 'just-debounce-it';
|
import debounce from 'just-debounce-it';
|
||||||
import pRetry from 'p-retry';
|
import pRetry from 'p-retry';
|
||||||
|
import { memo } from 'preact/compat';
|
||||||
import {
|
import {
|
||||||
useCallback,
|
useCallback,
|
||||||
useEffect,
|
useEffect,
|
||||||
|
@ -50,8 +51,8 @@ function resetScrollPosition(id) {
|
||||||
delete states.scrollPositions[id];
|
delete states.scrollPositions[id];
|
||||||
}
|
}
|
||||||
|
|
||||||
function StatusPage() {
|
function StatusPage(params) {
|
||||||
const { id, ...params } = useParams();
|
const { id } = params;
|
||||||
const { masto, instance } = api({ instance: params.instance });
|
const { masto, instance } = api({ instance: params.instance });
|
||||||
const [searchParams, setSearchParams] = useSearchParams();
|
const [searchParams, setSearchParams] = useSearchParams();
|
||||||
const mediaParam = searchParams.get('media');
|
const mediaParam = searchParams.get('media');
|
||||||
|
@ -127,18 +128,23 @@ function StatusPage() {
|
||||||
) : (
|
) : (
|
||||||
<Link to={closeLink} />
|
<Link to={closeLink} />
|
||||||
)}
|
)}
|
||||||
{!showMediaOnly && <StatusThread closeLink={closeLink} />}
|
{!showMediaOnly && (
|
||||||
|
<StatusThread
|
||||||
|
id={id}
|
||||||
|
instance={params.instance}
|
||||||
|
closeLink={closeLink}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function StatusThread({ closeLink = '/' }) {
|
function StatusThread({ id, closeLink = '/', instance: propInstance }) {
|
||||||
const { id, ...params } = useParams();
|
|
||||||
const [searchParams, setSearchParams] = useSearchParams();
|
const [searchParams, setSearchParams] = useSearchParams();
|
||||||
const mediaParam = searchParams.get('media');
|
const mediaParam = searchParams.get('media');
|
||||||
const showMedia = parseInt(mediaParam, 10) > 0;
|
const showMedia = parseInt(mediaParam, 10) > 0;
|
||||||
const [viewMode, setViewMode] = useState(searchParams.get('view'));
|
const [viewMode, setViewMode] = useState(searchParams.get('view'));
|
||||||
const { masto, instance } = api({ instance: params.instance });
|
const { masto, instance } = api({ instance: propInstance });
|
||||||
const {
|
const {
|
||||||
masto: currentMasto,
|
masto: currentMasto,
|
||||||
instance: currentInstance,
|
instance: currentInstance,
|
||||||
|
@ -308,6 +314,13 @@ function StatusThread({ closeLink = '/' }) {
|
||||||
offsetTop: heroStatusRef.current?.offsetTop,
|
offsetTop: heroStatusRef.current?.offsetTop,
|
||||||
scrollTop: scrollableRef.current?.scrollTop,
|
scrollTop: scrollableRef.current?.scrollTop,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Set limit to hero's index
|
||||||
|
const heroLimit = allStatuses.findIndex((s) => s.id === id);
|
||||||
|
if (heroLimit >= limit) {
|
||||||
|
setLimit(heroLimit + 1);
|
||||||
|
}
|
||||||
|
|
||||||
console.log({ allStatuses });
|
console.log({ allStatuses });
|
||||||
setStatuses(allStatuses);
|
setStatuses(allStatuses);
|
||||||
cachedStatusesMap[id] = allStatuses;
|
cachedStatusesMap[id] = allStatuses;
|
||||||
|
@ -1100,4 +1113,4 @@ function SubComments({
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default StatusPage;
|
export default memo(StatusPage);
|
||||||
|
|
Loading…
Add table
Reference in a new issue