diff --git a/app/composables/useAuth.js b/app/composables/useAuth.js index 9e37046..b4c23b5 100644 --- a/app/composables/useAuth.js +++ b/app/composables/useAuth.js @@ -1,46 +1,54 @@ export const useAuth = () => { - const memberData = useState('auth.member', () => null) - - const isAuthenticated = computed(() => !!memberData.value) - - const isMember = computed(() => !!memberData.value) + const memberData = useState("auth.member", () => null); + + const isAuthenticated = computed(() => !!memberData.value); + + const isMember = computed(() => !!memberData.value); const checkMemberStatus = async () => { - console.log('🔍 checkMemberStatus called') - console.log(' - Current memberData:', !!memberData.value) - + console.log("🔍 checkMemberStatus called"); + console.log(" - Current memberData:", !!memberData.value); + try { - console.log(' - Making API call to /api/auth/member...') - const response = await $fetch('/api/auth/member') - console.log(' - API response received:', { email: response.email, id: response.id }) - memberData.value = response - console.log(' - ✅ Member authenticated successfully') - return true + console.log(" - Making API call to /api/auth/member..."); + const response = await $fetch("/api/auth/member"); + console.log(" - API response received:", { + email: response.email, + id: response.id, + }); + memberData.value = response; + console.log(" - ✅ Member authenticated successfully"); + return true; } catch (error) { - console.error(' - ❌ Failed to fetch member status:', error.statusCode, error.statusMessage) - memberData.value = null - console.log(' - Cleared memberData') - return false + console.error( + " - ❌ Failed to fetch member status:", + error.statusCode, + error.statusMessage, + ); + memberData.value = null; + console.log(" - Cleared memberData"); + return false; } - } + }; const logout = async () => { try { - await $fetch('/api/auth/logout', { - method: 'POST' - }) - memberData.value = null - await navigateTo('/') + await $fetch("/api/auth/logout", { + method: "POST", + }); + memberData.value = null; + await navigateTo("/"); } catch (error) { - console.error('Logout failed:', error) + console.error("Logout failed:", error); } - } + }; return { isAuthenticated: readonly(isAuthenticated), isMember: readonly(isMember), memberData: readonly(memberData), checkMemberStatus, - logout - } -} \ No newline at end of file + fetchMember: checkMemberStatus, // Alias for consistency + logout, + }; +}; diff --git a/app/composables/usePeerSupport.js b/app/composables/usePeerSupport.js new file mode 100644 index 0000000..125d75c --- /dev/null +++ b/app/composables/usePeerSupport.js @@ -0,0 +1,16 @@ +export const usePeerSupport = () => { + const updateSettings = async (settings) => { + return await $fetch('/api/members/me/peer-support', { + method: 'PATCH', + body: settings + }); + }; + + const getSupporters = async (topic) => { + return await $fetch('/api/peer-support', { + query: topic ? { topic } : {} + }); + }; + + return { updateSettings, getSupporters }; +}; diff --git a/app/pages/member/profile.vue b/app/pages/member/profile.vue index b2e96c7..2650a0d 100644 --- a/app/pages/member/profile.vue +++ b/app/pages/member/profile.vue @@ -456,6 +456,114 @@ + +