This commit is contained in:
ct
2025-07-07 21:17:00 +08:00
parent 23fa3aec04
commit 6a66f96d22
31 changed files with 227 additions and 232 deletions

View File

@@ -2,9 +2,8 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Inertia\Inertia;
use Illuminate\Support\Str;
use Inertia\Inertia;
class FrontPagesController extends Controller
{
@@ -12,16 +11,16 @@ public function privacy()
{
$markdownPath = resource_path('markdown/privacy.md');
$markdownContent = file_get_contents($markdownPath);
// Parse markdown to HTML using Laravel's built-in Str::markdown helper
$htmlContent = Str::markdown($markdownContent);
// Style the HTML with Tailwind classes
$styledContent = $this->styleHtmlContent($htmlContent);
return Inertia::render('FrontPages/Privacy', [
'content' => $styledContent,
'title' => 'Privacy Policy'
'title' => 'Privacy Policy',
]);
}
@@ -29,16 +28,16 @@ public function terms()
{
$markdownPath = resource_path('markdown/terms.md');
$markdownContent = file_get_contents($markdownPath);
// Parse markdown to HTML using Laravel's built-in Str::markdown helper
$htmlContent = Str::markdown($markdownContent);
// Style the HTML with Tailwind classes
$styledContent = $this->styleHtmlContent($htmlContent);
return Inertia::render('FrontPages/Terms', [
'content' => $styledContent,
'title' => 'Terms & Conditions'
'title' => 'Terms & Conditions',
]);
}
@@ -59,7 +58,7 @@ private function styleHtmlContent($html)
$html = preg_replace('/<blockquote([^>]*)>/', '<blockquote$1 class="border-l-4 border-gray-300 dark:border-gray-600 pl-4 py-2 my-4 bg-gray-50 dark:bg-gray-800">', $html);
$html = preg_replace('/<code([^>]*)>/', '<code$1 class="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono text-gray-800 dark:text-gray-200">', $html);
$html = preg_replace('/<pre([^>]*)>/', '<pre$1 class="bg-gray-100 dark:bg-gray-800 p-4 rounded-lg overflow-x-auto mb-4">', $html);
return $html;
}
}
}

View File

@@ -92,7 +92,7 @@ private function getMockGoogleUser()
// Create a mock user object that mimics Socialite's user structure
return new class
{
public $email = 'memeaigen.com@gmail.com';
public $email = 'memefa.st@gmail.com';
public $id = 'xxx';

View File

@@ -4,10 +4,10 @@
use App\Helpers\FirstParty\Credits\CreditsService;
use App\Jobs\GenerateMemeJob;
use App\Models\UserMemeGeneration;
use Illuminate\Http\Request;
use App\Models\Category;
use App\Models\UserMemeGeneration;
use Auth;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Str;
@@ -24,7 +24,7 @@ public function generateMeme(Request $request)
->where('user_id', $user->id)
->whereIn('status', ['pending', 'processing'])
->first();
if ($activeGeneration) {
return response()->json([
'error' => [
@@ -34,7 +34,7 @@ public function generateMeme(Request $request)
}
}
if (!CreditsService::canSpend($user->id, 2)) {
if (! CreditsService::canSpend($user->id, 2)) {
return response()->json([
'error' => [
'message' => 'You do not have enough credits to generate a meme. Please purchase credits from the Store.',
@@ -45,7 +45,7 @@ public function generateMeme(Request $request)
CreditsService::spend($user->id, 2);
$jobId = Str::uuid()->toString();
// Create database record
$generation = UserMemeGeneration::create([
'user_id' => $user->id,
@@ -55,11 +55,11 @@ public function generateMeme(Request $request)
'credits_to_be_charged' => 2,
'credits_are_processed' => false,
]);
// Set active job in cache
Cache::put("user_active_job_{$user->id}", $jobId, 300);
Cache::put("meme_job_status_{$jobId}", 'pending', 300);
$job = new GenerateMemeJob($user->id, $request->prompt, $jobId);
dispatch($job);
@@ -76,8 +76,8 @@ public function generateMeme(Request $request)
public function checkMemeJobStatus(Request $request)
{
$jobId = $request->job_id;
if (!$jobId) {
if (! $jobId) {
return response()->json([
'error' => [
'message' => 'Job ID is required.',
@@ -86,8 +86,8 @@ public function checkMemeJobStatus(Request $request)
}
$status = Cache::get("meme_job_status_{$jobId}");
if (!$status) {
if (! $status) {
return response()->json([
'error' => [
'message' => 'Job not found or expired.',
@@ -122,10 +122,10 @@ public function checkMemeJobStatus(Request $request)
public function getActiveJob()
{
$user = Auth::user();
$activeJobId = Cache::get("user_active_job_{$user->id}");
if (!$activeJobId) {
if (! $activeJobId) {
return response()->json([
'success' => [
'data' => null,
@@ -138,9 +138,10 @@ public function getActiveJob()
->with('meme.meme_media', 'meme.background_media')
->first();
if (!$generation) {
if (! $generation) {
// Clean up stale cache
Cache::forget("user_active_job_{$user->id}");
return response()->json([
'success' => [
'data' => null,
@@ -163,7 +164,7 @@ public function getActiveJob()
if ($generation->status === 'completed' && $generation->meme) {
$meme = $generation->meme;
$meme_media = $generation->meme->meme_media;
$response['success']['data']['result'] = [
'generate' => [
'info' => $meme,
@@ -180,7 +181,7 @@ public function getActiveJob()
public function getMemeHistory()
{
$user = Auth::user();
$generations = UserMemeGeneration::where('user_id', $user->id)
->with('meme.meme_media', 'meme.background_media')
->orderBy('created_at', 'desc')
@@ -228,9 +229,9 @@ public function aiHints()
return response()->json([
'success' => [
'data' => [
'keywords' => []
]
]
'keywords' => [],
],
],
]);
}
@@ -241,9 +242,9 @@ public function aiHints()
return response()->json([
'success' => [
'data' => [
'keywords' => $keywords
]
]
'keywords' => $keywords,
],
],
]);
}
}