private void doSaveAction() {
    if (mSpinner != null) {
      mSpinner.setVisibility(View.VISIBLE);
    }
    UserProfileProvider userProfileProvider = new UserProfileProvider();
    userProfileProvider.updateAccount(
        getUpdateJson(),
        mWeddingLocationMarketCode,
        mHomeMarketCode,
        new OnProviderDataCallBackListener<UserProfile>() {

          @Override
          protected Activity getActivity() {
            return UserAccountFragment.this.getActivity();
          }

          @Override
          protected void onErrorUIUpdate(String errorMessage) {
            if (mSpinner != null) {
              mSpinner.setVisibility(View.GONE);
            }
            tipsSaveRst(false);
          }

          @Override
          protected void onSuccessDataFetch(UserProfile userProfile) {
            VendorChecklistSession.getInstance().clear();
            mIsUpdateFinished = true;
            Message message = new Message();
            message.obj = UserAccountFragment.this;
            message.what = HANDLE_MSG_ID_BUDGET_UPDATE;
            sEventHandler.sendMessageDelayed(message, 20);
          }

          @Override
          protected Runnable getOnSuccessUIUpdateRunnable() {
            return new Runnable() {
              @Override
              public void run() {
                SyncedObject.DashboardPhotoChangedSyncedObject dashboardPhotoChangedSyncedObject =
                    new SyncedObject.DashboardPhotoChangedSyncedObject();
                dashboardPhotoChangedSyncedObject.setUrl(mNewUser.getCouplePhotoUrl());
                syncedRefreshDataListener(dashboardPhotoChangedSyncedObject);

                if (mIsBudgetFinished && mSpinner != null) {
                  mIsBudgetFinished = false;
                  mIsUpdateFinished = false;
                  mSpinner.setVisibility(View.GONE);
                  tipsSaveRst(true);
                }
              }
            };
          }
        },
        UserAccountFragment.this,
        getActivity());
  }