The entire skate-spots codebase was accidentally copied into src/src/ and public/public/ instead of src/ and public/ directly. This left the real src/ directory as blank MKStack template stubs, explaining why the landing page showed the default template instead of SkateSpots. Changes made: - Copied all files from src/src/ up to src/ (App.tsx, AppRouter.tsx, main.tsx, all pages, components, hooks, contexts, lib, i18n, test) - Copied all files from public/public/ up to public/ (images, manifest, etc.) - Deleted src/src/ and public/public/ nested directories - Removed HelloWorld.tsx template stub from pages/ - Retained the previously fixed index.css (Tailwind v3 directives) Full skate-spots feature set is now active: - All 30+ routes (map, events, spots, coaches, marketplace, wallet, etc.) - NWCProvider, LanguageProvider, PWAInstallPrompt, AmberCallbackHandler - Skate community relays (goskatespots.nostr1.com, wotr.relatr.xyz, etc.) - Outfit Variable font, Amber pre-check in main.tsx - All hooks (useSkateSpots, useCoaches, useZaps, etc.) - i18n support (en/es) Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
41 lines
No EOL
1.2 KiB
TypeScript
41 lines
No EOL
1.2 KiB
TypeScript
import { useMemo } from 'react';
|
|
import { useNWC } from '@/hooks/useNWCContext';
|
|
import type { WebLNProvider } from '@webbtc/webln-types';
|
|
|
|
export interface WalletStatus {
|
|
hasNWC: boolean;
|
|
webln: WebLNProvider | null;
|
|
activeNWC: ReturnType<typeof useNWC>['getActiveConnection'] extends () => infer T ? T : null;
|
|
preferredMethod: 'nwc' | 'webln' | 'manual';
|
|
}
|
|
|
|
export function useWallet() {
|
|
const { connections, getActiveConnection } = useNWC();
|
|
|
|
// Get the active connection directly - no memoization to avoid stale state
|
|
const activeNWC = getActiveConnection();
|
|
|
|
// Access WebLN directly from browser global scope (Bitcoin Connect sets this)
|
|
const webln = (globalThis as { webln?: WebLNProvider }).webln || null;
|
|
|
|
// Calculate status values reactively
|
|
const hasNWC = useMemo(() => {
|
|
return connections.length > 0 && connections.some(c => c.isConnected);
|
|
}, [connections]);
|
|
|
|
// Determine preferred payment method
|
|
const preferredMethod: WalletStatus['preferredMethod'] = activeNWC
|
|
? 'nwc'
|
|
: webln
|
|
? 'webln'
|
|
: 'manual';
|
|
|
|
const status: WalletStatus = {
|
|
hasNWC,
|
|
webln,
|
|
activeNWC,
|
|
preferredMethod,
|
|
};
|
|
|
|
return status;
|
|
} |