@@ -21,6 +21,12 @@ const PassportContext = createContext<{
2121 getUserInfo : ( ) => Promise < UserProfile | undefined > ;
2222 getLinkedAddresses : ( ) => Promise < string [ ] | undefined > ;
2323 linkWallet : ( params : LinkWalletParams ) => Promise < LinkedWallet | undefined > ;
24+ popupRedirectGoogle : ( ) => void ;
25+ popupRedirectApple : ( ) => void ;
26+ popupRedirectFacebook : ( ) => void ;
27+ loginGoogle : ( ) => void ;
28+ loginApple : ( ) => void ;
29+ loginFacebook : ( ) => void ;
2430} > ( {
2531 imxProvider : undefined ,
2632 zkEvmProvider : undefined ,
@@ -34,6 +40,12 @@ const PassportContext = createContext<{
3440 getUserInfo : ( ) => Promise . resolve ( undefined ) ,
3541 getLinkedAddresses : ( ) => Promise . resolve ( undefined ) ,
3642 linkWallet : ( ) => Promise . resolve ( undefined ) ,
43+ popupRedirectGoogle : ( ) => undefined ,
44+ popupRedirectApple : ( ) => undefined ,
45+ popupRedirectFacebook : ( ) => undefined ,
46+ loginGoogle : ( ) => undefined ,
47+ loginApple : ( ) => undefined ,
48+ loginFacebook : ( ) => undefined ,
3749 } ) ;
3850
3951export function PassportProvider ( {
@@ -163,14 +175,109 @@ export function PassportProvider({
163175 }
164176 } , [ addMessage , passportClient , setIsLoading ] ) ;
165177
178+ // Popup redirect methods (provider-specific)
179+ const popupRedirectGoogle = useCallback ( async ( ) => {
180+ try {
181+ setIsLoading ( true ) ;
182+ const userProfile = await passportClient . login ( { directLoginMethod : 'google' } ) ;
183+ addMessage ( 'Popup Login (Google)' , userProfile ) ;
184+ } catch ( err ) {
185+ addMessage ( 'Popup Login (Google)' , err ) ;
186+ console . error ( err ) ;
187+ } finally {
188+ setIsLoading ( false ) ;
189+ }
190+ } , [ addMessage , passportClient , setIsLoading ] ) ;
191+
192+ const popupRedirectApple = useCallback ( async ( ) => {
193+ try {
194+ setIsLoading ( true ) ;
195+ const userProfile = await passportClient . login ( { directLoginMethod : 'apple' } ) ;
196+ addMessage ( 'Popup Login (Apple)' , userProfile ) ;
197+ } catch ( err ) {
198+ addMessage ( 'Popup Login (Apple)' , err ) ;
199+ console . error ( err ) ;
200+ } finally {
201+ setIsLoading ( false ) ;
202+ }
203+ } , [ addMessage , passportClient , setIsLoading ] ) ;
204+
205+ const popupRedirectFacebook = useCallback ( async ( ) => {
206+ try {
207+ setIsLoading ( true ) ;
208+ const userProfile = await passportClient . login ( { directLoginMethod : 'facebook' } ) ;
209+ addMessage ( 'Popup Login (Facebook)' , userProfile ) ;
210+ } catch ( err ) {
211+ addMessage ( 'Popup Login (Facebook)' , err ) ;
212+ console . error ( err ) ;
213+ } finally {
214+ setIsLoading ( false ) ;
215+ }
216+ } , [ addMessage , passportClient , setIsLoading ] ) ;
217+
218+ // Login (redirect) methods
219+ const loginGoogle = useCallback ( async ( ) => {
220+ try {
221+ setIsLoading ( true ) ;
222+ const userProfile = await passportClient . login ( {
223+ directLoginMethod : 'google' ,
224+ useRedirectFlow : true ,
225+ } ) ;
226+ addMessage ( 'Login (Google)' , userProfile ) ;
227+ } catch ( err ) {
228+ addMessage ( 'Login (Google)' , err ) ;
229+ console . error ( err ) ;
230+ } finally {
231+ setIsLoading ( false ) ;
232+ }
233+ } , [ addMessage , passportClient , setIsLoading ] ) ;
234+
235+ const loginApple = useCallback ( async ( ) => {
236+ try {
237+ setIsLoading ( true ) ;
238+ const userProfile = await passportClient . login ( {
239+ directLoginMethod : 'apple' ,
240+ useRedirectFlow : true ,
241+ } ) ;
242+ addMessage ( 'Login (Apple)' , userProfile ) ;
243+ } catch ( err ) {
244+ addMessage ( 'Login (Apple)' , err ) ;
245+ console . error ( err ) ;
246+ } finally {
247+ setIsLoading ( false ) ;
248+ }
249+ } , [ addMessage , passportClient , setIsLoading ] ) ;
250+
251+ const loginFacebook = useCallback ( async ( ) => {
252+ try {
253+ setIsLoading ( true ) ;
254+ const userProfile = await passportClient . login ( {
255+ directLoginMethod : 'facebook' ,
256+ useRedirectFlow : true ,
257+ } ) ;
258+ addMessage ( 'Login (Facebook)' , userProfile ) ;
259+ } catch ( err ) {
260+ addMessage ( 'Login (Facebook)' , err ) ;
261+ console . error ( err ) ;
262+ } finally {
263+ setIsLoading ( false ) ;
264+ }
265+ } , [ addMessage , passportClient , setIsLoading ] ) ;
266+
166267 const providerValues = useMemo ( ( ) => ( {
167268 imxProvider,
168269 zkEvmProvider,
169270 connectImx,
170271 connectZkEvm,
171272 logout,
172- login,
173273 popupRedirect,
274+ popupRedirectGoogle,
275+ popupRedirectApple,
276+ popupRedirectFacebook,
277+ login,
278+ loginGoogle,
279+ loginApple,
280+ loginFacebook,
174281 getIdToken,
175282 getAccessToken,
176283 getUserInfo,
@@ -182,8 +289,14 @@ export function PassportProvider({
182289 connectImx ,
183290 connectZkEvm ,
184291 logout ,
185- login ,
186292 popupRedirect ,
293+ popupRedirectGoogle ,
294+ popupRedirectApple ,
295+ popupRedirectFacebook ,
296+ login ,
297+ loginGoogle ,
298+ loginApple ,
299+ loginFacebook ,
187300 getIdToken ,
188301 getAccessToken ,
189302 getUserInfo ,
@@ -204,9 +317,15 @@ export function usePassportProvider() {
204317 zkEvmProvider,
205318 connectImx,
206319 connectZkEvm,
207- login,
208- popupRedirect,
209320 logout,
321+ popupRedirect,
322+ popupRedirectGoogle,
323+ popupRedirectApple,
324+ popupRedirectFacebook,
325+ login,
326+ loginGoogle,
327+ loginApple,
328+ loginFacebook,
210329 getIdToken,
211330 getAccessToken,
212331 getUserInfo,
@@ -218,9 +337,15 @@ export function usePassportProvider() {
218337 zkEvmProvider,
219338 connectImx,
220339 connectZkEvm,
221- login,
222- popupRedirect,
223340 logout,
341+ popupRedirect,
342+ popupRedirectGoogle,
343+ popupRedirectApple,
344+ popupRedirectFacebook,
345+ login,
346+ loginGoogle,
347+ loginApple,
348+ loginFacebook,
224349 getIdToken,
225350 getAccessToken,
226351 getUserInfo,
0 commit comments