mirror of
https://github.com/cheeaun/phanpy.git
synced 2024-11-23 09:45:46 +03:00
Fix titles
This commit is contained in:
parent
f756f23d6e
commit
863ac2663c
4 changed files with 22 additions and 1 deletions
|
@ -5,9 +5,11 @@ import Link from '../components/link';
|
||||||
import Loader from '../components/loader';
|
import Loader from '../components/loader';
|
||||||
import Menu from '../components/menu';
|
import Menu from '../components/menu';
|
||||||
import { api } from '../utils/api';
|
import { api } from '../utils/api';
|
||||||
|
import useTitle from '../utils/useTitle';
|
||||||
|
|
||||||
function FollowedHashtags() {
|
function FollowedHashtags() {
|
||||||
const { masto, instance } = api();
|
const { masto, instance } = api();
|
||||||
|
useTitle(`Followed Hashtags`, `/ft`);
|
||||||
const [uiState, setUiState] = useState('default');
|
const [uiState, setUiState] = useState('default');
|
||||||
|
|
||||||
const [followedHashtags, setFollowedHashtags] = useState([]);
|
const [followedHashtags, setFollowedHashtags] = useState([]);
|
||||||
|
|
|
@ -5,9 +5,11 @@ import Link from '../components/link';
|
||||||
import Loader from '../components/loader';
|
import Loader from '../components/loader';
|
||||||
import Menu from '../components/menu';
|
import Menu from '../components/menu';
|
||||||
import { api } from '../utils/api';
|
import { api } from '../utils/api';
|
||||||
|
import useTitle from '../utils/useTitle';
|
||||||
|
|
||||||
function Lists() {
|
function Lists() {
|
||||||
const { masto } = api();
|
const { masto } = api();
|
||||||
|
useTitle(`Lists`, `/l`);
|
||||||
const [uiState, setUiState] = useState('default');
|
const [uiState, setUiState] = useState('default');
|
||||||
|
|
||||||
const [lists, setLists] = useState([]);
|
const [lists, setLists] = useState([]);
|
||||||
|
|
|
@ -11,6 +11,7 @@ import Menu from '../components/menu';
|
||||||
import NameText from '../components/name-text';
|
import NameText from '../components/name-text';
|
||||||
import Status from '../components/status';
|
import Status from '../components/status';
|
||||||
import { api } from '../utils/api';
|
import { api } from '../utils/api';
|
||||||
|
import useTitle from '../utils/useTitle';
|
||||||
|
|
||||||
function Search() {
|
function Search() {
|
||||||
const { masto, instance, authenticated } = api();
|
const { masto, instance, authenticated } = api();
|
||||||
|
@ -18,6 +19,8 @@ function Search() {
|
||||||
const [searchParams, setSearchParams] = useSearchParams();
|
const [searchParams, setSearchParams] = useSearchParams();
|
||||||
const searchFieldRef = useRef();
|
const searchFieldRef = useRef();
|
||||||
const q = searchParams.get('q');
|
const q = searchParams.get('q');
|
||||||
|
useTitle(q ? `Search: ${q}` : 'Search', `/search`);
|
||||||
|
|
||||||
const [statusResults, setStatusResults] = useState([]);
|
const [statusResults, setStatusResults] = useState([]);
|
||||||
const [accountResults, setAccountResults] = useState([]);
|
const [accountResults, setAccountResults] = useState([]);
|
||||||
const [hashtagResults, setHashtagResults] = useState([]);
|
const [hashtagResults, setHashtagResults] = useState([]);
|
||||||
|
|
|
@ -8,8 +8,22 @@ const { VITE_CLIENT_NAME: CLIENT_NAME } = import.meta.env;
|
||||||
|
|
||||||
export default function useTitle(title, path) {
|
export default function useTitle(title, path) {
|
||||||
const snapStates = useSnapshot(states);
|
const snapStates = useSnapshot(states);
|
||||||
|
const { currentLocation } = snapStates;
|
||||||
|
let paths = [];
|
||||||
|
// Workaround for matchPath not working for optional path segments
|
||||||
|
// https://github.com/remix-run/react-router/discussions/9862
|
||||||
|
if (/:\w+\?/.test(path)) {
|
||||||
|
paths.push(path.replace(/\?/g, ''));
|
||||||
|
paths.push(path.replace(/\/?:\w+\?/g, ''));
|
||||||
|
}
|
||||||
|
let matched = false;
|
||||||
|
if (paths.length) {
|
||||||
|
matched = paths.some((p) => matchPath(p, currentLocation));
|
||||||
|
} else {
|
||||||
|
matched = matchPath(path, currentLocation);
|
||||||
|
}
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (path && !matchPath(path, snapStates.currentLocation)) return;
|
if (path && !matched) return;
|
||||||
document.title = title ? `${title} / ${CLIENT_NAME}` : CLIENT_NAME;
|
document.title = title ? `${title} / ${CLIENT_NAME}` : CLIENT_NAME;
|
||||||
}, [title, snapStates.currentLocation]);
|
}, [title, snapStates.currentLocation]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue