Advice on deep linking

0
0

Hi – I’ve downloaded and had a look at the deep linking example, and am trying to adapt the idea to what I need to do.

I need users to be able to pass around links via email, and when the use clicks on the link in the email – it opens the app, user logs in if needed, and then it  navigates to the context represented by the # tag that I build into the link.  So for example – they might pass a link via email that says – look at this customer’s sales report and the link is something like “http://appSite.com/#csr=493   where the app would understand that csr means the customer sales report, and the customer id would be 493.

In my code when the hash changes – I respond to the Application_HashChanged event, and I put the hash into the session. The app then presents the login form as normal and the user logs in; after successful login I then check the session to see if there is a hash saved – and if so – I navigate to the correct context within the app.

All of the above is working great.

However the problem comes when the user already has a browser open and is already logged in.  What my code tries to do if the user is already logged in is simply do the navigation to the correct context.  However – of course – since the user clicked a link outside of the browser – the browser wants to open a new tab.  I’d love it if the app could simply use the browser tab that is already open – but as far as I know that is not possible due to the way browsers work.  So I’d be happy if the app opened in a new tab, and navigated to the correct context and presented it normally.  This part doesn’t work right – a new tab opens – and the context, which includes a modal form (.ShowDialog) starts to try to show up – but its not properly in sync w/ the rest of the app.  It displays (including some real data) – but has lost the context of the ui that should be beneath the modal form, and there is a spinner that keeps spinning forever – and strangely it does not use the app’s theme – it uses the default theme.  And I can’t use the normal buttons to close the modal form – I have to close the whole browser tab.  Its like the modal form is dead in the water – waiting for a sync w/ the UI context that will never come.

I believe this is because the action of showing the new modal form is being sent to the new tab – while the rest of the app’s context is in the old tab – or something like that.  Because it is the exact same code that navigates to the context after login (when the user doesn’t have the app open already) – which works – but when the app is already open – it fails as described.

Any idea what may be going on or what I’m doing wrong? Or any advice how I can handle this?  Do I need to recreate the whole UI again in the context of the new tab?

Thanks in advance for your help.

 

Matthew

 

  • You must to post comments
0
0

Thank you Luca – yes pls send me the test case app…

  • You must to post comments
0
0

Hi Matthew,

I tried to reproduce and I did reproduce an issue related to the same session open on multiple tabs. But couldn’t reproduce the issue with the theme. And when the second tab opens is perfectly in sync with the first.

You are correct that it’s impossible to determine which tab to open when clicking on an external link. But you can force a link to create a new session by adding ?sid=new.

When you have the same session loaded on two tabs and both tabs have a modal dialog open (or a form open, or a page, etc) and one of the two closes the form/dialog/control then other tab cannot be updated automatically – you need to hit refresh. Another issue is that if say Window1 is closed on tab1, then when you click anything on Window1 on tab2 nothing happens. This is by design, because window1 is now disposed and executing code on clicks would be very wrong. There is simple javascript that you can add to a page to make it refresh when is activated.

I can send you a small test case to see if you can change it to reproduce the problem you are seeing.

/Luca

  • You must to post comments
Showing 2 results
Your Answer

Please first to submit.