in sample/src/utils/users.js [25:81]
async function updateDatabaseUser(username, attributes, firsttime = true) {
if (!username || !attributes) return null;
const cognitoUser = await Auth.currentAuthenticatedUser();
const id = attributes.sub;
const email = attributes.email;
const phone_number = attributes.phone_number;
const name = `${attributes.given_name} ${attributes.family_name}`;
let result = null;
if (!firsttime) return null;
const input = {
input: {
id,
email,
username,
name,
phone_number,
},
};
let isNewUser = false;
try {
result = await API.graphql(graphqlOperation(createUser, input));
isNewUser = true;
console.log('new user!');
} catch (e) {
result = await API.graphql(graphqlOperation(updateUser, input));
console.log('existing user!');
}
const pinpointResult = await updateEndpoint(attributes, 'email');
// if (isNewUser || email !== cognitoUser.attributes.email) {
// console.log('updateEndpoint', email, attributes);
// }
// if (isNewUser || phone_number !== cognitoUser.attributes.phone_number) {
// console.log('updateEndpoint', phone_number, attributes);
// pinpointResult = updateEndpoint(attributes, 'phone_number');
// }
if (pinpointResult && pinpointResult.MessageBody?.Message === 'Accepted') {
if (isNewUser) {
console.log('NewUser');
Analytics.record({
name: 'NewUser',
});
}
console.log('updateEndpoint');
Analytics.record({
name: 'updateEndpoint',
});
}
return result.data;
}