feat: Upgrade to Next.js 16.1 & React 19.2, migrate to Supabase SSR with async client handling
This commit is contained in:
@@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user