It is currently 8 June 2025, 22:17 Advanced search

comportamento strano shell.isInsideShell()

Domande e risposte su come utilizzare Instant Developer Foundation al meglio

comportamento strano shell.isInsideShell()

Postby texw » 12 July 2024, 10:48

se tento di recuperare shell.isInsideShell() all'interno di una procedura eseguita lato server della app online, (mostrata in caravel o apk è indifferente), la funzione restiuisce correttamente "True"


se invece la stessa funzione la richiamo allo stesso modo e nelle stesse modalità, ma all'interno di una procedura inserita in un componente, restituisce "False"


per risolvere nel frattempo, all'interno dei componenti, uso la sintassi if (Useragent like "*Shell/*")
CadCentric
texw
 
Posts: 498
Joined: 1 February 2018, 8:25

Re: comportamento strano shell.isInsideShell()

Postby texw » 17 July 2024, 23:21

aggiungo una precisazione, sembra proprio che l'oggeto SHELL non sia disponibile in nessuna procedura di classe, che sia essa definita in un documento di progetto od un componente, è disponibile solo per il codice eseguito in metodi od eventi di videata.... vi torna?
CadCentric
texw
 
Posts: 498
Joined: 1 February 2018, 8:25

Re: comportamento strano shell.isInsideShell()

Postby d.termini » 18 July 2024, 6:52

No, lo usiamo anche nei componenti, ma forse ci funziona perché da noi l'app è offline
d.termini
 
Posts: 1656
Joined: 13 November 2017, 8:41

Re: comportamento strano shell.isInsideShell()

Postby texw » 22 July 2024, 22:17

d.termini wrote:No, lo usiamo anche nei componenti, ma forse ci funziona perché da noi l'app è offline



credo proprio sia un bug

se richiamo infatti shell.isinsideshell nella fase di inizializzazione della app (nell'evento on-initialize), prima a che a video sia apparsa almeno una videata, tale funzione restituisce sempre False.

mentre se chiamo tale procedura da, ad esempio, un tasto di una videata già mostrata a video, la funzione restutuisce il valore corretto.

penso che sia qualcosa legato al fatto che i dati Shell vengano inviati alla prima risposta con il client, e quindi in inizializzazione non è ancora disponibile?

il fatto è che mi serve questa funzione "funzionante" nella videata di Login, che richiamo da inizialize -> form.show -> evento load


per ora ho risolto nascondendo il panel ed attivando un timer, che una volta scattato prepara la videata di Login e rimetta la "visible" del panel a true.

così facendo l'oggetto shell è disponibile nella procedura di preparazione della videata.

ma di contro lo schermo resta bianco per un attimo ed è tutto sommanto un "accrocchio"
CadCentric
texw
 
Posts: 498
Joined: 1 February 2018, 8:25

Re: comportamento strano shell.isInsideShell()

Postby texw » 22 July 2024, 23:35

ok, ho risolto credo nel modo corretto e molto più elegante, praticamente eseguo la procedura di login quando nell'oncommand ricevo "NOTIFICATIONIND", che significa che ho a disposizione l'oggetto Shell.

Fuori shell chiamo la procedura di login, in base al parametro "useragent".
CadCentric
texw
 
Posts: 498
Joined: 1 February 2018, 8:25

Re: comportamento strano shell.isInsideShell()

Postby d.termini » 23 July 2024, 6:42

Ha senso, la parte utilizzabile dell'applicazione dovrebbe sempre essere avviata dopo che l'applicazione si è stabilizzata e completamente inizializzata.
Su InDe Cloud ho dovuto fare così pure io perché mezza roba su "initialize" non era inizializzata oppure essendo asincrona il valore arrivava dopo.
d.termini
 
Posts: 1656
Joined: 13 November 2017, 8:41


Return to Tips & Tricks - Foundation

Who is online

Users browsing this forum: Google [Bot] and 50 guests