diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..b59e8a9
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,2 @@
+.env
+buikd-push.sh
\ No newline at end of file
diff --git a/build-push.sh b/build-push.sh
index ef08376..deb7797 100755
--- a/build-push.sh
+++ b/build-push.sh
@@ -12,10 +12,10 @@ fi
echo "$GITEA_PAT" | docker login $GITEA_SERVER -u $GITEA_USER --password-stdin
# Build and tag the Docker image
-docker build -t $GITEA_SERVER/$GITEA_USER/$GITEA_REPO:$IMAGE_TAG .
+docker build --output=type=docker -t $GITEA_SERVER/$GITEA_USER/$GITEA_REPO:$IMAGE_TAG .
# Push the image
-DOCKER_CLI_EXPERIMENTAL=enabled docker --log-level debug push $GITEA_SERVER/$GITEA_USER/$GITEA_REPO:$IMAGE_TAG
+docker --log-level debug push $GITEA_SERVER/$GITEA_USER/$GITEA_REPO:$IMAGE_TAG
# Logout to prevent credential storage
docker logout $GITEA_SERVER
diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx
index 704e716..7de239c 100644
--- a/src/app/blog/page.tsx
+++ b/src/app/blog/page.tsx
@@ -54,7 +54,7 @@ export default async function BlogPage() {
diff --git a/src/app/blog/posts/0/page.tsx b/src/app/blog/posts/0/page.tsx
index 4547e65..aa03df6 100644
--- a/src/app/blog/posts/0/page.tsx
+++ b/src/app/blog/posts/0/page.tsx
@@ -18,7 +18,7 @@ export default function ExamplePost() {
diff --git a/src/app/blog/posts/1/page.tsx b/src/app/blog/posts/1/page.tsx
index ddf99be..d5396f5 100644
--- a/src/app/blog/posts/1/page.tsx
+++ b/src/app/blog/posts/1/page.tsx
@@ -47,7 +47,7 @@ export default function ExamplePost() {
diff --git a/src/app/blog/posts/2/page.tsx b/src/app/blog/posts/2/page.tsx
index a836032..4d8cfd2 100644
--- a/src/app/blog/posts/2/page.tsx
+++ b/src/app/blog/posts/2/page.tsx
@@ -48,7 +48,7 @@ export default function ExamplePost() {
diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx
index 5a077b1..c3f03bf 100644
--- a/src/app/contact/page.tsx
+++ b/src/app/contact/page.tsx
@@ -42,7 +42,7 @@ export default function ContactPage() {
diff --git a/src/components/BackButton.tsx b/src/components/BackButton.tsx
index 389e1cd..2918632 100644
--- a/src/components/BackButton.tsx
+++ b/src/components/BackButton.tsx
@@ -2,12 +2,38 @@
import { IoMdArrowBack } from "react-icons/io";
import { useRouter } from "next/navigation";
+import { useEffect, useState } from "react";
-export default function BackButton() {
+interface BackButtonProps {
+ defaultPath?: string;
+}
+
+export default function BackButton({ defaultPath = "/" }: BackButtonProps) {
const router = useRouter();
+ const [shouldUseDefault, setShouldUseDefault] = useState(false);
+
+ useEffect(() => {
+ // Check if we should use default path
+ const hasNoValidHistory = window.history.length <= 1;
+ const hasNoReferrer = !document.referrer || document.referrer === '';
+ const referrerIsExternal = document.referrer && !document.referrer.includes(window.location.hostname);
+ const referrerIsEmpty = document.referrer === 'about:blank' || document.referrer.startsWith('data:');
+
+ setShouldUseDefault(hasNoValidHistory || hasNoReferrer || referrerIsExternal || referrerIsEmpty);
+ }, []);
const handleBack = () => {
- router.back();
+ if (shouldUseDefault) {
+ router.push(defaultPath);
+ } else {
+ // Try to go back, but fallback to default if it fails
+ try {
+ router.back();
+ } catch (error: unknown) {
+ console.error("Error going back:", error);
+ router.push(defaultPath);
+ }
+ }
};
return (