Loading .dockerignore +3 −1 Original line number Diff line number Diff line Loading @@ -5,3 +5,5 @@ Dockerfile docker-compose.yml *.log .env* uploads/file/* uploads/logo/* .gitignore +2 −2 Original line number Diff line number Diff line Loading @@ -40,5 +40,5 @@ yarn-error.log* *.tsbuildinfo next-env.d.ts public/uploads/file/* public/uploads/logo/* No newline at end of file uploads/file/* uploads/logo/* No newline at end of file src/app/Admin/About/ClientAbout.tsx +2 −3 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ import { ClientAboutProps, AboutTranslation } from "@/types/CustomTypes"; export default function ClientAbout({ data, enabledLanguage }: ClientAboutProps) { export default function ClientAbout({ data, enabledLanguage, logoBaseUrl }: ClientAboutProps) { const about = data?.abouts?.[0]; const translations: AboutTranslation[] = about?.translations || []; const enabledLanguageList = (enabledLanguage?.languages || []).filter(l => l.enabled); Loading @@ -25,7 +25,6 @@ export default function ClientAbout({ data, enabledLanguage }: ClientAboutProps) const [logo, setLogo] = useState<string>(about?.picture || ""); const [logoFile, setLogoFile] = useState<File | null>(null); const logoBaseUrl = process.env.LOGO_UPLOAD_DIR || ""; const [logoPreview, setLogoPreview] = useState<string>(about?.picture ? `${logoBaseUrl}${about?.picture}` : ""); const [logoIsUpdated, setLogoIsUpdated] = useState<boolean>(false); Loading Loading @@ -120,7 +119,7 @@ export default function ClientAbout({ data, enabledLanguage }: ClientAboutProps) // Always use a public path for SSR, only use blob: for client-side preview const getLogoSrc = () => { if (logoPreview && logoPreview.startsWith("blob:")) return logoPreview; if (logo) return `/uploads/logo/${logo}`; if (logo) return `${logoBaseUrl}${logo}`; return ""; }; Loading src/app/Admin/About/page.tsx +2 −1 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ import { cookies } from "next/headers"; import { redirect } from 'next/navigation'; export default async function About() { const logoBaseUrl = process.env.LOGO_UPLOAD_DIR || ""; const cookieStore = cookies(); const token = (await cookieStore).get("access_token")?.value; const res = await fetch(`${process.env.API_URL}/abouts/full`, { Loading Loading @@ -32,7 +33,7 @@ export default async function About() { return <> <RefreshToken /> <ClientAbout data={data} enabledLanguage={enabledLanguage} /> <ClientAbout data={data} enabledLanguage={enabledLanguage} logoBaseUrl={logoBaseUrl} /> </>; } No newline at end of file src/app/Admin/Experience/edit/[id]/ExperienceEditPageClient.tsx +5 −4 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ import Image from "next/image"; import { ExperienceEditPageClientProps, ExperienceTranslations } from "@/types/CustomTypes"; export default function ExperienceEditPageClient({ data, enabledLanguage }: ExperienceEditPageClientProps) { export default function ExperienceEditPageClient({ data, enabledLanguage, logoBaseUrl }: ExperienceEditPageClientProps) { const router = useRouter(); const [ExperienceID, setExperienceID] = useState(data.id); Loading @@ -26,12 +26,11 @@ export default function ExperienceEditPageClient({ data, enabledLanguage }: Expe const [logo, setLogo] = useState<string>(data.logo || ""); const [logoFile, setLogoFile] = useState<File | null>(null); const logoBaseUrl = process.env.LOGO_UPLOAD_DIR || ""; const [logoPreview, setLogoPreview] = useState<string>(data.logo ? `${logoBaseUrl}${data.logo}` : ""); const [logoIsUpdated, setLogoIsUpdated] = useState<boolean>(false); const enabledLanguageList = (enabledLanguage?.languages || []).filter((l) => l.enabled); console.log("Enabled languages:", enabledLanguageList); // Language-specific translations state const [translations, setTranslations] = useState<ExperienceTranslations>(() => { const initial: ExperienceTranslations = {}; Loading Loading @@ -173,10 +172,12 @@ export default function ExperienceEditPageClient({ data, enabledLanguage }: Expe // Always use a public path for SSR, only use blob: for client-side preview const getLogoSrc = () => { if (logoPreview && logoPreview.startsWith("blob:")) return logoPreview; if (logo) return `/uploads/logo/${logo}`; if (logo) return `${logoBaseUrl}${logo}`; return ""; }; console.log("Logo preview URL from component:", getLogoSrc()); return <div className="container container-fluid d-flex flex-column align-items-center" style={{ minHeight: "100vh", width: "100vw", maxWidth: "100vw", overflowY: "auto" }} Loading Loading
.dockerignore +3 −1 Original line number Diff line number Diff line Loading @@ -5,3 +5,5 @@ Dockerfile docker-compose.yml *.log .env* uploads/file/* uploads/logo/*
.gitignore +2 −2 Original line number Diff line number Diff line Loading @@ -40,5 +40,5 @@ yarn-error.log* *.tsbuildinfo next-env.d.ts public/uploads/file/* public/uploads/logo/* No newline at end of file uploads/file/* uploads/logo/* No newline at end of file
src/app/Admin/About/ClientAbout.tsx +2 −3 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ import { ClientAboutProps, AboutTranslation } from "@/types/CustomTypes"; export default function ClientAbout({ data, enabledLanguage }: ClientAboutProps) { export default function ClientAbout({ data, enabledLanguage, logoBaseUrl }: ClientAboutProps) { const about = data?.abouts?.[0]; const translations: AboutTranslation[] = about?.translations || []; const enabledLanguageList = (enabledLanguage?.languages || []).filter(l => l.enabled); Loading @@ -25,7 +25,6 @@ export default function ClientAbout({ data, enabledLanguage }: ClientAboutProps) const [logo, setLogo] = useState<string>(about?.picture || ""); const [logoFile, setLogoFile] = useState<File | null>(null); const logoBaseUrl = process.env.LOGO_UPLOAD_DIR || ""; const [logoPreview, setLogoPreview] = useState<string>(about?.picture ? `${logoBaseUrl}${about?.picture}` : ""); const [logoIsUpdated, setLogoIsUpdated] = useState<boolean>(false); Loading Loading @@ -120,7 +119,7 @@ export default function ClientAbout({ data, enabledLanguage }: ClientAboutProps) // Always use a public path for SSR, only use blob: for client-side preview const getLogoSrc = () => { if (logoPreview && logoPreview.startsWith("blob:")) return logoPreview; if (logo) return `/uploads/logo/${logo}`; if (logo) return `${logoBaseUrl}${logo}`; return ""; }; Loading
src/app/Admin/About/page.tsx +2 −1 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ import { cookies } from "next/headers"; import { redirect } from 'next/navigation'; export default async function About() { const logoBaseUrl = process.env.LOGO_UPLOAD_DIR || ""; const cookieStore = cookies(); const token = (await cookieStore).get("access_token")?.value; const res = await fetch(`${process.env.API_URL}/abouts/full`, { Loading Loading @@ -32,7 +33,7 @@ export default async function About() { return <> <RefreshToken /> <ClientAbout data={data} enabledLanguage={enabledLanguage} /> <ClientAbout data={data} enabledLanguage={enabledLanguage} logoBaseUrl={logoBaseUrl} /> </>; } No newline at end of file
src/app/Admin/Experience/edit/[id]/ExperienceEditPageClient.tsx +5 −4 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ import Image from "next/image"; import { ExperienceEditPageClientProps, ExperienceTranslations } from "@/types/CustomTypes"; export default function ExperienceEditPageClient({ data, enabledLanguage }: ExperienceEditPageClientProps) { export default function ExperienceEditPageClient({ data, enabledLanguage, logoBaseUrl }: ExperienceEditPageClientProps) { const router = useRouter(); const [ExperienceID, setExperienceID] = useState(data.id); Loading @@ -26,12 +26,11 @@ export default function ExperienceEditPageClient({ data, enabledLanguage }: Expe const [logo, setLogo] = useState<string>(data.logo || ""); const [logoFile, setLogoFile] = useState<File | null>(null); const logoBaseUrl = process.env.LOGO_UPLOAD_DIR || ""; const [logoPreview, setLogoPreview] = useState<string>(data.logo ? `${logoBaseUrl}${data.logo}` : ""); const [logoIsUpdated, setLogoIsUpdated] = useState<boolean>(false); const enabledLanguageList = (enabledLanguage?.languages || []).filter((l) => l.enabled); console.log("Enabled languages:", enabledLanguageList); // Language-specific translations state const [translations, setTranslations] = useState<ExperienceTranslations>(() => { const initial: ExperienceTranslations = {}; Loading Loading @@ -173,10 +172,12 @@ export default function ExperienceEditPageClient({ data, enabledLanguage }: Expe // Always use a public path for SSR, only use blob: for client-side preview const getLogoSrc = () => { if (logoPreview && logoPreview.startsWith("blob:")) return logoPreview; if (logo) return `/uploads/logo/${logo}`; if (logo) return `${logoBaseUrl}${logo}`; return ""; }; console.log("Logo preview URL from component:", getLogoSrc()); return <div className="container container-fluid d-flex flex-column align-items-center" style={{ minHeight: "100vh", width: "100vw", maxWidth: "100vw", overflowY: "auto" }} Loading