feat: Upgrade to Next.js 16.1 & React 19.2, migrate to Supabase SSR with async client handling

This commit is contained in:
2025-12-19 20:31:46 +01:00
parent d9b44a0ec5
commit 24e243fff8
49 changed files with 942 additions and 852 deletions

View File

@@ -1,9 +1,10 @@
'use client';
import React, { useState, useEffect } from 'react';
import { createClientComponentClient } from '@supabase/auth-helpers-nextjs';
import { createClient } from '@/lib/supabase/client';
import { Users, UserPlus, Trash2, User, Loader2, ChevronDown, ChevronUp } from 'lucide-react';
import { useI18n } from '@/i18n/I18nContext';
import { addBuddy, deleteBuddy } from '@/services/buddy';
interface Buddy {
id: string;
@@ -13,7 +14,7 @@ interface Buddy {
export default function BuddyList() {
const { t } = useI18n();
const supabase = createClientComponentClient();
const supabase = createClient();
const [buddies, setBuddies] = useState<Buddy[]>([]);
const [newName, setNewName] = useState('');
const [isLoading, setIsLoading] = useState(true);
@@ -57,33 +58,24 @@ export default function BuddyList() {
if (!newName.trim()) return;
setIsAdding(true);
const { data: { user } } = await supabase.auth.getUser();
if (!user) return;
const result = await addBuddy({ name: newName.trim() });
const { data, error } = await supabase
.from('buddies')
.insert([{ name: newName.trim(), user_id: user.id }])
.select();
if (error) {
console.error('Error adding buddy:', error);
} else {
setBuddies(prev => [...(data || []), ...prev].sort((a, b) => a.name.localeCompare(b.name)));
if (result.success && result.data) {
setBuddies(prev => [...[result.data], ...prev].sort((a, b) => a.name.localeCompare(b.name)));
setNewName('');
} else {
console.error('Error adding buddy:', result.error);
}
setIsAdding(false);
};
const handleDeleteBuddy = async (id: string) => {
const { error } = await supabase
.from('buddies')
.delete()
.eq('id', id);
const result = await deleteBuddy(id);
if (error) {
console.error('Error deleting buddy:', error);
} else {
if (result.success) {
setBuddies(prev => prev.filter(b => b.id !== id));
} else {
console.error('Error deleting buddy:', result.error);
}
};