add prop to disable favicon and title change

This commit is contained in:
nflnkr 2024-04-06 17:01:04 +03:00
parent 49e5faa39a
commit bcf6b1e1d0
3 changed files with 18 additions and 14 deletions

@ -26,9 +26,10 @@ type Props = {
quizSettings?: QuizSettings;
quizId: string;
preview?: boolean;
changeFaviconAndTitle?: boolean;
};
export default function QuizAnswerer({ quizSettings, quizId, preview = false }: Props) {
export default function QuizAnswerer({ quizSettings, quizId, preview = false, changeFaviconAndTitle = true }: Props) {
const [quizViewStore] = useState(createQuizViewStore);
const [rootContainerWidth, setRootContainerWidth] = useState<number>(() => window.innerWidth);
const rootContainerRef = useRef<HTMLDivElement>(null);
@ -65,7 +66,7 @@ export default function QuizAnswerer({ quizSettings, quizId, preview = false }:
return (
<QuizViewContext.Provider value={quizViewStore}>
<RootContainerWidthContext.Provider value={rootContainerWidth}>
<QuizDataContext.Provider value={{ ...quizSettings, quizId, preview }}>
<QuizDataContext.Provider value={{ ...quizSettings, quizId, preview, changeFaviconAndTitle }}>
<LocalizationProvider dateAdapter={AdapterMoment} adapterLocale="ru" localeText={localeText}>
<ThemeProvider theme={lightTheme}>
<SnackbarProvider

@ -15,7 +15,7 @@ import NextButton from "./tools/NextButton";
import PrevButton from "./tools/PrevButton";
export default function ViewPublicationPage() {
const { settings, recentlyCompleted, quizId, preview } = useQuizData();
const { settings, recentlyCompleted, quizId, preview, changeFaviconAndTitle } = useQuizData();
const answers = useQuizViewStore(state => state.answers);
let currentQuizStep = useQuizViewStore((state) => state.currentQuizStep);
const {
@ -30,17 +30,16 @@ export default function ViewPublicationPage() {
const isAnswer = answers.some(ans => ans.questionId === currentQuestion.id);
useEffect(
function setFaviconAndTitle() {
const link = document.querySelector('link[rel="icon"]');
if (link && settings.cfg.startpage.favIcon) {
link.setAttribute("href", settings.cfg.startpage.favIcon);
}
useEffect(function setFaviconAndTitle() {
if (!changeFaviconAndTitle) return;
document.title = settings.name;
},
[settings]
);
const link = document.querySelector('link[rel="icon"]');
if (link && settings.cfg.startpage.favIcon) {
link.setAttribute("href", settings.cfg.startpage.favIcon);
}
document.title = settings.name;
}, [changeFaviconAndTitle, settings.cfg.startpage.favIcon, settings.name]);
if (recentlyCompleted) throw new Error("Quiz already completed");
if (currentQuizStep === "startpage" && settings.cfg.noStartPage)

@ -1,7 +1,11 @@
import { QuizSettings } from "@model/settingsData";
import { createContext, useContext } from "react";
type QuizData = QuizSettings & { quizId: string; preview: boolean; };
type QuizData = QuizSettings & {
quizId: string;
preview: boolean;
changeFaviconAndTitle: boolean;
};
export const QuizDataContext = createContext<QuizData | null>(null);