Update User Profile Data

b.well Health SDK for Android

Updating User Profile Data

Overview

This section details the process of updating a user's profile data using the SDK. The updateProfile method allows for modifications to the demographic information of a user, which is essential in keeping user profiles accurate and up-to-date.

Method Signature

The updateProfile method is defined as follows:

suspend fun updateProfile(person: Person) : BWellResult<Person>
  • person: The updated user profile of type Person.

    Field Name

    Type

    Description

    id

    String

    A unique identifier for the person.

    firstName

    String

    The person's first name.

    lastName

    String

    The person's last name.

    addressStreet

    String

    The street part of the person's address.

    addressUnit

    String

    The unit or apartment number of the address.

    city

    String

    The city in which the person resides.

    stateOrProvidence

    String

    The state or province of the person's address.

    postageOrZipCode

    String

    The postal or zip code of the person's address.

    homePhone

    String

    The person's home phone number.

    mobilePhone

    String

    The person's mobile phone number.

    officePhone

    String

    The person's office phone number.

    email

    String

    The person's email address.

    birthDate

    String

    The person's date of birth.

    gender

    String

    The person's gender.
    male | female | other | unknown

  • BWellResult<Person>: The method returns an object representing the updated user profile.

For information regarding demographics required for platform use, please see the User Profile Requirements page.

Sample Code

The following example demonstrates how to update the user profile:

val updatedPerson = Person.Builder()
        .firstName("Peter")
        .lastName("Chalmers")
        .birthDate("1974-12-25")
        .mobilePhone("(030) 555 6473")
        .addressStreet("534 Erewhon St")
        .city("Anytown")
        .postageOrZipCode("12345")
        .stateOrProvidence("AnyState")
        .gender("Male")
        .email("[email protected]")
        .build()

suspend fun saveUserProfile(person: Person): Flow<BWellResult<Person>?> = flow {
    var operationOutcome: BWellResult<Person>? = BWellSdk.user?.updateProfile(person)
    emit(operationOutcome)
}

Detailed Explanation

  1. Profile Update Process:

    • BWellSdk.user?.updateProfile(person): This call attempts to update the user's profile with the provided Person object. The safe call operator (?.) is used to ensure that the method is invoked only if the user object is not null.
  2. Handling the Operation Outcome:

    • The method stores the result of the profile update in operationOutcome, which is then emitted to the caller.
    • This result can be used to verify if the update was successful and to access the updated profile data.
  3. Flow Usage:

    • The method saveUserProfile returns a Flow<BWellResult<Person>?>, allowing for asynchronous handling and observation of the profile update process. This is particularly useful for reactive user interfaces or when dealing with real-time data updates.

Best Practices

  • Data Validation: Before updating, validate the Person object to ensure that all provided data is correct and formatted properly.
  • Null Safety: Use null-safe operations to prevent crashes due to null values.
  • Error Handling: Implement proper error handling for scenarios where the update operation fails, for example, due to network issues or invalid data.
  • User Feedback: Provide immediate feedback to the user based on the outcome of the profile update operation, enhancing the user experience.