Use Supabase only for social service
cgen-f7efa9713fc7429e8239a46f709003cc
This commit is contained in:
parent
867619529e
commit
b536bb92d6
1 changed files with 41 additions and 46 deletions
|
|
@ -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 {
|
return [];
|
||||||
const raw = localStorage.getItem("mock_follows");
|
}
|
||||||
const map = raw ? JSON.parse(raw) : {};
|
|
||||||
return map[userId] || [];
|
return (data as any[]).map((r: any) => r.following_id);
|
||||||
} catch {}
|
} catch (error) {
|
||||||
return [];
|
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;
|
if (error) {
|
||||||
} catch {}
|
throw new Error(error.message || "Unable to follow user");
|
||||||
const raw = localStorage.getItem("mock_follows");
|
}
|
||||||
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;
|
if (error) {
|
||||||
} catch {}
|
throw new Error(error.message || "Unable to unfollow user");
|
||||||
const raw = localStorage.getItem("mock_follows");
|
}
|
||||||
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));
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue