diff --git a/package.json b/package.json index fdef85a..aa3ed97 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pezkuwi-telegram-miniapp", - "version": "1.0.117", + "version": "1.0.119", "type": "module", "description": "Pezkuwichain Telegram Mini App - Forum, Announcements, Rewards", "author": "Pezkuwichain Team", diff --git a/src/App.tsx b/src/App.tsx index d563c3f..b3c13e3 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -53,29 +53,28 @@ const P2P_WEB_URL = 'https://telegram.pezkuwichain.io/p2p'; export default function App() { const [activeSection, setActiveSection] = useState
('announcements'); const [showP2PModal, setShowP2PModal] = useState(false); - const { user } = useAuth(); + const { sessionToken } = useAuth(); const { address } = useWallet(); // Open P2P in popup with auth params const openP2P = useCallback(() => { window.Telegram?.WebApp.HapticFeedback.impactOccurred('medium'); - // Build auth URL with params + // Build auth URL with session token const params = new URLSearchParams(); - if (user?.telegram_id) { - params.set('tg_id', user.telegram_id.toString()); + if (sessionToken) { + params.set('session_token', sessionToken); } if (address) { params.set('wallet', address); } - params.set('ts', Date.now().toString()); params.set('from', 'miniapp'); const url = `${P2P_WEB_URL}?${params.toString()}`; // Open in new window/tab window.open(url, '_blank'); - }, [user, address]); + }, [sessionToken, address]); const handleNavClick = (item: NavItem) => { window.Telegram?.WebApp.HapticFeedback.selectionChanged(); diff --git a/src/contexts/AuthContext.tsx b/src/contexts/AuthContext.tsx index adf332c..57db743 100644 --- a/src/contexts/AuthContext.tsx +++ b/src/contexts/AuthContext.tsx @@ -4,6 +4,7 @@ import type { User } from '@/hooks/useSupabase'; interface AuthContextType { user: User | null; + sessionToken: string | null; isLoading: boolean; isAuthenticated: boolean; signIn: () => Promise; @@ -13,6 +14,7 @@ const AuthContext = createContext(null); export function AuthProvider({ children }: { children: ReactNode }) { const [user, setUser] = useState(null); + const [sessionToken, setSessionToken] = useState(null); const [isLoading, setIsLoading] = useState(true); const signIn = async () => { @@ -28,6 +30,10 @@ export function AuthProvider({ children }: { children: ReactNode }) { if (result?.user) { setUser(result.user); } + // Store session token for P2P and other cross-app auth + if (result?.session_token) { + setSessionToken(result.session_token); + } } catch (error) { // Auth failed silently - user will see unauthenticated state if (import.meta.env.DEV) { @@ -47,6 +53,7 @@ export function AuthProvider({ children }: { children: ReactNode }) {