mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
38 lines
1.5 KiB
TypeScript
38 lines
1.5 KiB
TypeScript
import { useLocation, useParams } from 'react-router-dom';
|
|
import useThemeStore from '../stores/use-theme-store';
|
|
import useDefaultSubplebbits from './use-default-subplebbits';
|
|
import { isAllView, isHomeView, isNotFoundView, isSubscriptionsView } from '../lib/utils/view-utils';
|
|
import { nsfwTags } from '../views/home/home';
|
|
|
|
const useInitialTheme = () => {
|
|
const location = useLocation();
|
|
const { subplebbitAddress } = useParams<{ subplebbitAddress: string }>();
|
|
const getTheme = useThemeStore((state) => state.getTheme);
|
|
const subplebbits = useDefaultSubplebbits();
|
|
const params = useParams();
|
|
const isInHomeView = isHomeView(location.pathname);
|
|
const isInNotFoundView = isNotFoundView(location.pathname, params);
|
|
const isInAllView = isAllView(location.pathname, params);
|
|
const isInSubscriptionsView = isSubscriptionsView(location.pathname, params);
|
|
|
|
if (isInAllView || isInSubscriptionsView) {
|
|
const userTheme = getTheme(isInAllView ? 'all' : 'subscriptions');
|
|
return userTheme || 'yotsuba-b';
|
|
} else if (isInHomeView || isInNotFoundView) {
|
|
return 'yotsuba';
|
|
} else if (subplebbitAddress) {
|
|
const userTheme = getTheme(subplebbitAddress);
|
|
if (userTheme) {
|
|
return userTheme;
|
|
}
|
|
const subplebbit = subplebbits.find((s) => s.address === subplebbitAddress);
|
|
if (subplebbit && subplebbit.tags && subplebbit.tags.some((tag) => nsfwTags.includes(tag))) {
|
|
return 'yotsuba';
|
|
}
|
|
return 'yotsuba-b';
|
|
}
|
|
return 'yotsuba';
|
|
};
|
|
|
|
export default useInitialTheme;
|