diff --git a/src/composables/useAuth.ts b/src/composables/useAuth.ts index 525d80c..944e756 100644 --- a/src/composables/useAuth.ts +++ b/src/composables/useAuth.ts @@ -13,14 +13,23 @@ export function useAuth() { */ async function initialize(): Promise { try { + console.log('Initializing authentication...') isLoading.value = true error.value = null - if (lnbitsAPI.isAuthenticated()) { + const isAuth = lnbitsAPI.isAuthenticated() + console.log('Is authenticated:', isAuth) + + if (isAuth) { + console.log('Getting current user...') const user = await lnbitsAPI.getCurrentUser() + console.log('Current user set:', user) currentUser.value = user + } else { + console.log('Not authenticated, skipping user fetch') } } catch (err) { + console.error('Authentication initialization error:', err) error.value = err instanceof Error ? err.message : 'Failed to initialize authentication' // Clear invalid token await logout() @@ -34,15 +43,19 @@ export function useAuth() { */ async function login(credentials: LoginCredentials): Promise { try { + console.log('Login attempt with credentials:', { username: credentials.username }) isLoading.value = true error.value = null await lnbitsAPI.login(credentials) + console.log('Login successful, getting user details...') // Get user details const user = await lnbitsAPI.getCurrentUser() + console.log('User details after login:', user) currentUser.value = user } catch (err) { + console.error('Login error:', err) error.value = err instanceof Error ? err.message : 'Login failed' throw err } finally { @@ -139,6 +152,19 @@ export function useAuth() { } }) + // Get current user from API + async function getCurrentUser(): Promise { + try { + console.log('Getting current user from API...') + const user = await lnbitsAPI.getCurrentUser() + console.log('Current user from API:', user) + return user + } catch (error) { + console.error('Error getting current user:', error) + return null + } + } + return { // State currentUser: computed(() => currentUser.value), diff --git a/src/composables/useTicketPurchase.ts b/src/composables/useTicketPurchase.ts index e6bd52d..357b11f 100644 --- a/src/composables/useTicketPurchase.ts +++ b/src/composables/useTicketPurchase.ts @@ -30,10 +30,25 @@ export function useTicketPurchase() { } }) - const userWallets = computed(() => currentUser.value?.wallets || []) - const hasWalletWithBalance = computed(() => - userWallets.value.some((wallet: any) => wallet.balance_msat > 0) - ) + const userWallets = computed(() => { + const wallets = currentUser.value?.wallets || [] + console.log('User wallets computed:', { + currentUser: currentUser.value, + wallets: wallets, + walletCount: wallets.length, + hasWallets: wallets.length > 0 + }) + return wallets + }) + const hasWalletWithBalance = computed(() => { + const hasBalance = userWallets.value.some((wallet: any) => wallet.balance_msat > 0) + console.log('Wallet balance check:', { + wallets: userWallets.value, + hasBalance: hasBalance, + walletBalances: userWallets.value.map((w: any) => ({ id: w.id, balance: w.balance_msat })) + }) + return hasBalance + }) // Generate QR code for Lightning payment async function generateQRCode(bolt11: string) { diff --git a/src/lib/api/events.ts b/src/lib/api/events.ts index f1ca2ee..d9b1ec9 100644 --- a/src/lib/api/events.ts +++ b/src/lib/api/events.ts @@ -1,4 +1,4 @@ -import type { Event, Ticket } from '../types/event' +import type { Event, EventsApiError, Ticket } from '../types/event' import { config } from '@/lib/config' import { lnbitsAPI } from './lnbits' @@ -72,7 +72,7 @@ export async function purchaseTicket(eventId: string): Promise<{ payment_hash: s } } -export async function payInvoiceWithWallet(paymentRequest: string, _walletId: string, adminKey: string): Promise<{ payment_hash: string; fee_msat: number; preimage: string }> { +export async function payInvoiceWithWallet(paymentRequest: string, walletId: string, adminKey: string): Promise<{ payment_hash: string; fee_msat: number; preimage: string }> { try { const response = await fetch( `${API_BASE_URL}/api/v1/payments`, diff --git a/src/lib/api/lnbits.ts b/src/lib/api/lnbits.ts index 91b9592..ed87ca5 100644 --- a/src/lib/api/lnbits.ts +++ b/src/lib/api/lnbits.ts @@ -85,52 +85,39 @@ class LnbitsAPI { } // Debug logging - if (import.meta.env.VITE_LNBITS_DEBUG === 'true') { - console.log('LNBits API Request:', { - url, - method: options.method || 'GET', - headers: options.headers, - body: options.body - }) - } + console.log('LNBits API Request:', { + url, + method: options.method || 'GET', + headers: headers, + hasAccessToken: !!this.accessToken, + endpoint + }) const response = await fetch(url, { ...options, headers, }) - // Debug logging - if (import.meta.env.VITE_LNBITS_DEBUG === 'true') { - console.log('LNBits API Response:', { - status: response.status, - statusText: response.statusText, - url: response.url - }) - } + console.log('LNBits API Response:', { + status: response.status, + statusText: response.statusText, + ok: response.ok, + url: response.url + }) if (!response.ok) { - let errorMessage = `HTTP ${response.status}: ${response.statusText}` - try { - const errorData = await response.json() - errorMessage = errorData.detail || errorData.message || errorMessage - } catch { - // If we can't parse JSON, use the default error message - } - - // Debug logging for errors - if (import.meta.env.VITE_LNBITS_DEBUG === 'true') { - console.error('LNBits API Error:', { - status: response.status, - statusText: response.statusText, - url: response.url, - error: errorMessage - }) - } - - throw new Error(errorMessage) + const errorText = await response.text() + console.error('LNBits API Error:', { + status: response.status, + statusText: response.statusText, + errorText + }) + throw new Error(`API request failed: ${response.status} ${response.statusText}`) } - return response.json() + const data = await response.json() + console.log('LNBits API Response Data:', data) + return data } async login(credentials: LoginCredentials): Promise { @@ -164,7 +151,10 @@ class LnbitsAPI { } async getCurrentUser(): Promise { - return this.request('/auth') + console.log('getCurrentUser called, accessToken:', this.accessToken ? 'present' : 'missing') + const user = await this.request('/user') + console.log('getCurrentUser response:', user) + return user } async updatePassword(currentPassword: string, newPassword: string): Promise {