@@ -63,7 +63,7 @@ public class DeepLinkHandler : IDeepLinkHandler
6363
6464 private readonly IList < IDeepLinkParser > _links ;
6565 private bool _readyToHandleDeepLink ;
66- private Uri _pendingDeepLink ;
66+ private PendingDeepLink _pendingDeepLink ;
6767
6868 public DeepLinkHandler (
6969 IBMMClient client ,
@@ -230,17 +230,28 @@ private async Task PlayTrackById(TrackLinkParameters trackLinkParameters)
230230 await PlayTracks ( new [ ] { requestedTrack } , PlaybackOriginName , trackLinkParameters . StartTimeInMs ) ;
231231 }
232232
233- public bool OpenFromInsideOfApp ( Uri uri , string origin ) => Open ( uri , "internal link opened" , origin ) ;
233+ public bool OpenFromInsideOfApp ( Uri uri , string origin )
234+ {
235+ if ( _readyToHandleDeepLink )
236+ return Open ( uri , "internal link opened" , origin ) ;
237+
238+ return CheckIfCanOpenDeepLinkAndSetPendingIfNeeded ( new PendingDeepLink ( uri , DeepLinkSource . InsideApp ) ) ;
239+ }
234240
235241 public bool OpenFromOutsideOfApp ( Uri uri )
236242 {
237243 if ( _readyToHandleDeepLink )
238244 return Open ( uri , "deep link opened" ) ;
239245
240- if ( ! _links . Any ( l => l . PerformCanNavigateTo ( uri , out _ ) ) )
246+ return CheckIfCanOpenDeepLinkAndSetPendingIfNeeded ( new PendingDeepLink ( uri , DeepLinkSource . OutsideOfApp ) ) ;
247+ }
248+
249+ private bool CheckIfCanOpenDeepLinkAndSetPendingIfNeeded ( PendingDeepLink pendingDeepLink )
250+ {
251+ if ( ! _links . Any ( l => l . PerformCanNavigateTo ( pendingDeepLink . Uri , out _ ) ) )
241252 return false ;
242253
243- _pendingDeepLink = uri ;
254+ _pendingDeepLink = pendingDeepLink ;
244255 return true ;
245256 }
246257
@@ -251,7 +262,11 @@ public void SetReadyToOpenDeepLinkAndHandlePending()
251262 if ( _pendingDeepLink == null )
252263 return ;
253264
254- OpenFromOutsideOfApp ( _pendingDeepLink ) ;
265+ if ( _pendingDeepLink . Source == DeepLinkSource . OutsideOfApp )
266+ OpenFromOutsideOfApp ( _pendingDeepLink . Uri ) ;
267+ else
268+ OpenFromInsideOfApp ( _pendingDeepLink . Uri , string . Empty ) ;
269+
255270 _pendingDeepLink = null ;
256271 }
257272
0 commit comments