From 7f2cdbe5da583010466d725197137f503e1fb771 Mon Sep 17 00:00:00 2001
From: polwex <polwex@sortug.com>
Date: Sat, 16 Aug 2025 15:50:10 +0700
Subject: damn good

---
 src/pages/tones.tsx | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

(limited to 'src/pages/tones.tsx')

diff --git a/src/pages/tones.tsx b/src/pages/tones.tsx
index 8658401..20c1237 100644
--- a/src/pages/tones.tsx
+++ b/src/pages/tones.tsx
@@ -3,18 +3,30 @@ import { Suspense } from "react";
 import { fetchWordsByToneAndSyllables } from "@/actions/tones";
 import ToneSelectorClient from "@/components/tones/ToneSelectorClient";
 import { Skeleton } from "@/components/ui/skeleton"; // For Suspense fallback
+import { thaiTones } from "@/lib/types/phonetics";
+import { randomFromArray } from "@/lib/utils";
 
 export const getConfig = async () => {
   return {
     render: "static", // Or 'dynamic' if you prefer SSR for every request
   };
 };
+async function randomTones(tries = 0) {
+  const syllables = Math.floor(Math.random() * 5);
+  const toneStrings = Object.values(thaiTones);
+  const tones = Array.from(Array(syllables)).map((_) =>
+    randomFromArray(toneStrings),
+  );
+  console.log({ tones, toneStrings });
+  const initialWords = await fetchWordsByToneAndSyllables(tones);
+  if (!initialWords || initialWords.length === 0) return randomTones(tries + 1);
+  else return {initialWords, tones};
+}
 
 // Function to fetch the initial word on the server
 async function InitialWordLoader() {
   // Fetch a random 1-syllable Thai word with any tone initially
-  const tones = ["falling", "falling"];
-  const initialWords = await fetchWordsByToneAndSyllables(tones);
+  const {initialWords, tones]} = await randomTones();
   return <ToneSelectorClient initialData={initialWords} initialTones={tones} />;
 }
 
-- 
cgit v1.2.3

