a tool for shared writing and social publishing
1"use server"; 2 3import { cookies } from "next/headers"; 4import { supabaseServerClient } from "supabase/serverClient"; 5 6export async function getIdentityData() { 7 let cookieStore = await cookies(); 8 let auth_token = 9 cookieStore.get("auth_token")?.value || 10 cookieStore.get("external_auth_token")?.value; 11 let auth_res = auth_token 12 ? await supabaseServerClient 13 .from("email_auth_tokens") 14 .select( 15 `*, 16 identities( 17 *, 18 bsky_profiles(*), 19 publication_subscriptions(*), 20 custom_domains!custom_domains_identity_id_fkey(publication_domains(*), *), 21 home_leaflet:permission_tokens!identities_home_page_fkey(*, permission_token_rights(*)), 22 permission_token_on_homepage( 23 created_at, 24 permission_tokens!inner( 25 id, 26 root_entity, 27 permission_token_rights(*), 28 leaflets_in_publications(*, publications(*), documents(*)) 29 ) 30 ) 31 )`, 32 ) 33 .eq("id", auth_token) 34 .eq("confirmed", true) 35 .single() 36 : null; 37 if (!auth_res?.data?.identities) return null; 38 if (auth_res.data.identities.atp_did) { 39 //I should create a relationship table so I can do this in the above query 40 let { data: publications } = await supabaseServerClient 41 .from("publications") 42 .select("*") 43 .eq("identity_did", auth_res.data.identities.atp_did); 44 return { 45 ...auth_res.data.identities, 46 publications: publications || [], 47 }; 48 } 49 50 return { ...auth_res.data.identities, publications: [] }; 51}