Use Supabase only for social service

cgen-f7efa9713fc7429e8239a46f709003cc
This commit is contained in:
Builder.io 2025-09-30 23:08:18 +00:00
parent 867619529e
commit b536bb92d6

View file

@ -1,5 +1,7 @@
import { supabase } from "./supabase"; import { supabase } from "./supabase";
import { supabase } from "./supabase";
export const aethexSocialService = { export const aethexSocialService = {
async listRecommended(userId: string, limit = 10) { async listRecommended(userId: string, limit = 10) {
try { try {
@ -7,15 +9,18 @@ export const aethexSocialService = {
.from("user_profiles") .from("user_profiles")
.select("id, username, full_name, avatar_url, bio") .select("id, username, full_name, avatar_url, bio")
.neq("id", userId) .neq("id", userId)
.order("updated_at", { ascending: false })
.limit(limit); .limit(limit);
if (!error && data) return data as any[];
} catch {} if (error) {
try { console.error("Failed to load recommended profiles:", error);
const raw = localStorage.getItem("demo_profiles"); return [];
const profiles = raw ? JSON.parse(raw) : []; }
return profiles.filter((p: any) => p.id !== userId).slice(0, limit);
} catch { return (data || []) as any[];
return [] as any[]; } catch (error) {
console.error("Unexpected error loading recommended profiles:", error);
return [];
} }
}, },
@ -25,49 +30,39 @@ export const aethexSocialService = {
.from("user_follows") .from("user_follows")
.select("following_id") .select("following_id")
.eq("follower_id", userId); .eq("follower_id", userId);
if (!error && data)
return (data as any[]).map((r: any) => r.following_id); if (error) {
} catch {} console.error("Failed to load following list:", error);
try {
const raw = localStorage.getItem("mock_follows");
const map = raw ? JSON.parse(raw) : {};
return map[userId] || [];
} catch {}
return []; return [];
}
return (data as any[]).map((r: any) => r.following_id);
} catch (error) {
console.error("Unexpected error loading following list:", error);
return [];
}
}, },
async followUser(followerId: string, followingId: string): Promise<void> { async followUser(followerId: string, followingId: string): Promise<void> {
try {
const { error } = await supabase.from("user_follows").insert({ const { error } = await supabase.from("user_follows").insert({
follower_id: followerId, follower_id: followerId,
following_id: followingId, following_id: followingId,
}); });
if (!error) return;
} catch {} if (error) {
const raw = localStorage.getItem("mock_follows"); throw new Error(error.message || "Unable to follow user");
const map = raw ? JSON.parse(raw) : {}; }
const set: string[] = Array.from(
new Set([...(map[followerId] || []), followingId]),
);
map[followerId] = set;
localStorage.setItem("mock_follows", JSON.stringify(map));
}, },
async unfollowUser(followerId: string, followingId: string): Promise<void> { async unfollowUser(followerId: string, followingId: string): Promise<void> {
try { const { error } = await supabase
await supabase
.from("user_follows") .from("user_follows")
.delete() .delete()
.eq("follower_id", followerId) .eq("follower_id", followerId)
.eq("following_id", followingId); .eq("following_id", followingId);
return;
} catch {} if (error) {
const raw = localStorage.getItem("mock_follows"); throw new Error(error.message || "Unable to unfollow user");
const map = raw ? JSON.parse(raw) : {}; }
const list: string[] = (map[followerId] || []).filter(
(id: string) => id !== followingId,
);
map[followerId] = list;
localStorage.setItem("mock_follows", JSON.stringify(map));
}, },
}; };