Here's my code (followed this guide: https://docs.expo.dev/versions/latest/sdk/securestore/):
fetch('<APIurl>', {
method: 'POST',
body: formBody,
headers: {
//Header Definition
'Content-Type':
'application/x-www-form-urlencoded;charset=UTF-8',
},
})
.then((response) => response.json())
.then((responseJson) => {
console.log(responseJson.id_user);
// If server response message same as Data Matched
if (responseJson.status != '0 results') {
//Alert.alert("Excellent!", "Please go on");
async function save(key, value) {
await SecureStore.setItemAsync(key, value);
}
async function getValueFor(key) {
let result = await SecureStore.getItemAsync(key);
if (result) {
alert("🔐 Here's your value 🔐 \n" + result);
} else {
alert('No values stored under that key.');
}
}
save(id_user, responseJson.id_user);
getValueFor(id_user);
//navigation.navigate('InsertCodeScreen');
} else {
console.log('Please check your mobileNumber');
}
})
.catch((error) => {
//Hide Loader
console.error(error);
});
it returns Can't find variable: id_user
Strangely, if I do save(responseJson.id_user, responseJson.id_user); it works perfectly, but if in an another screen I do getValueFor(responseJson.id_user);, the app complains that cannot find responseJson variable.
But by the way, isn't the first argument of save() the name I want to give to the item I want to store?
Solved: haven't realized before that the "key" for save() must be a string