70 lines
2.4 KiB
TypeScript
70 lines
2.4 KiB
TypeScript
"use client";
|
|
|
|
import { useEffect } from "react";
|
|
import Head from "next/head";
|
|
|
|
export default function SharePage({ params }: { params: { code: string } }) {
|
|
const code = params.code;
|
|
|
|
useEffect(() => {
|
|
try {
|
|
const deepLink = "nemia://share/" + code;
|
|
const playStoreLink = "https://play.google.com/store/apps/details?id=app.nemia.android";
|
|
const waitlistLink = "https://nemia.app/waitlist";
|
|
const landingPage = "https://nemia.app";
|
|
|
|
const userAgent = navigator.userAgent || navigator.vendor || (window as any).opera;
|
|
|
|
// iOS Detection
|
|
if (/iPad|iPhone|iPod/.test(userAgent) && !(window as any).MSStream) {
|
|
window.location.href = waitlistLink;
|
|
return;
|
|
}
|
|
|
|
// Android Detection
|
|
if (/android/i.test(userAgent)) {
|
|
// Try to open the app via Intent Scheme
|
|
// Fallback to Play Store if app not installed
|
|
const intentUrl =
|
|
"intent://share/" +
|
|
code +
|
|
"#Intent;scheme=nemia;package=app.nemia.android;S.browser_fallback_url=" +
|
|
encodeURIComponent(playStoreLink) +
|
|
";end";
|
|
window.location.href = intentUrl;
|
|
return;
|
|
}
|
|
|
|
// Desktop / Other: Stay on the page
|
|
} catch (e) {
|
|
console.error("Redirection error:", e);
|
|
window.location.href = `/?error=${encodeURIComponent("An error occurred while redirecting.")}`;
|
|
}
|
|
}, [code]);
|
|
|
|
return (
|
|
<>
|
|
<Head>
|
|
<title>Shared Deck | Nemia</title>
|
|
<meta property="og:title" content="Join my Flashcard Deck on Nemia" />
|
|
<meta property="og:description" content="Click to view this deck in the Nemia app." />
|
|
</Head>
|
|
<div
|
|
style={{
|
|
display: "flex",
|
|
flexDirection: "column",
|
|
alignItems: "center",
|
|
paddingTop: "50px",
|
|
fontFamily: "sans-serif",
|
|
}}
|
|
>
|
|
<h1>Nemia Flashcards</h1>
|
|
<p>Redirecting you to the app...</p>
|
|
<p>
|
|
<a href="https://nemia.app">Go to Homepage</a>
|
|
</p>
|
|
</div>
|
|
</>
|
|
);
|
|
}
|