Bonjour,
Bon d'accord, j'ai peut être clôturer mon premier sujet un peu trop tôt. Je m'explique, j'avais un soucis d'accès au this dans une fonction asynchrone, ce soucis là est régler, or, en remplaçant :
verifyPassword(this.state.username, this.state.password).then(function() => {
ls.get('koustConnecting').then((data) => {
this.setState(() => ({ connectStatus: data }))
});
Par
verifyPassword(this.state.username, this.state.password).then(() => {
ls.get('koustConnecting').then((data) => {
this.setState(() => ({ connectStatus: data }))
});
(Retrait du function pour utiliser une "Arrow function" à la place), et bien je me retrouve face à quelque chose d'incompréhensible. Avec la version "buguée", la première fonction de vérification s'éxécutait bien avant le
ls.get('koustConnecting').then((data) =>
Mais à présent, elle s'éxécutent toutes les deux presque simultanément, ce qui m'oblige à appuyer 2 fois sur mon bouton pour changer le statut, il y a t-il une autre solution? J'ai essayer pourtant d'y mettre un timer mais rien n'y fait.
Voici ma fonction verifyPassword :
function verifyPassword(userid, password){
return fetch('https://xxxx.com/apex/rest/oauth2/acces_mobile?userid='.concat(userid.toUpperCase()), {
method: 'GET'
})
.then((response) => response.json())
.then((responseJson) => {
var ls = require('react-native-local-storage');
var data = responseJson.items;
var l_salt = "XVXXX24ECXXHDCQHSS6XXXQTJSANT3";
var custom_hash = require('md5');
try {
var database_password = data[0].password;
var crypted_password = custom_hash(password.concat(l_salt.substr(9,13), userid.toUpperCase(), l_salt.substr(3, 10))).toUpperCase();
if(crypted_password === database_password){
ls.save('koustConnecting', 'true');
} else {
ls.save('koustConnecting', 'false');
}
} catch (e) {
console.log(e)
return false;
}
})
.catch((error) => {
console.error(error);
});
};
PS : Lien du dernier topic : https://www.grafikart.fr/forum/topics/31381
Excusez moi de créer 2 topics pour le même sujet.
Merci !