async function updateDatabaseUser()

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;
}