<p>Comme vous l’avez probablement constaté, un appel à <code>microsoftTeams.getContext(...)</code> ne retourne jamais si vous n’êtes <em>pas</em> dans Teams.</p>
<p>J’ai donc un drapeau que je surveille avec un <code>setInterval</code> et si <code>this.teamsContext</code> est vrai et contient des valeurs cohérentes ; et seulement s’il a <code>this.hasAttemptedConnection</code></p>
<p>C’est une méthode un peu détournée.</p>
<p>Un autre mécanisme que j’ai implémenté un peu plus tard était de passer un drapeau avec le point d’entrée de l’URL (dans notre cas : c’est un onglet Teams) <code>https://<notreurl>?context=teams</code> et d’utiliser le chemin de code Teams uniquement quand on est dans Teams.</p>
<p>J’ai vu des demandes sur le GitHub de Microsoft Teams .js pour retourner un échec de <code>microsoftTeams.getContext(...)</code> voir : <a href="https://github.com/OfficeDev/microsoft-teams-library-js/issues/310">existe-t-il une API pour détecter si on est dans Teams ou non ?</a></p>
<p>Avant le drapeau, j’avais du code TypeScript qui ressemblait à</p>
<pre><code class="lang-auto"> WireTeams(): Promise<boolean> {
this.hasAttemptedConnection = false
return new Promise<boolean>((resolve, reject) => {
microsoftTeams.initialize()
microsoftTeams.getContext((context) => {
if (context === null || context === undefined) {
resolve(false)
}
this.teamsContext = context
})
})
this._hasAttemptedConnection = true
}
</code></pre>