UserPersonalEditFragment.java 6.69 KB
package com.cnlive.gundam.user.fragment;

import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.cnlive.gundam.R;
import com.cnlive.gundam.databinding.FragmentPersonalEditBinding;
import com.cnlive.gundam.user.activity.UserPersonalActivity;
import com.cnlive.gundam.user.auth.UserService;
import com.cnlive.gundam.user.model.User;
import com.cnlive.gundam.user.util.ToastUtil;
import com.cnlive.libs.user.IUserService;
import com.cnlive.libs.user.UserUtil;
import com.cnlive.libs.user.model.UserData;
import com.cnlive.libs.util.data.network.Callback;

/**
 * Created by gujun on 2017/6/28.
 */

public class UserPersonalEditFragment extends Fragment implements Callback, View.OnClickListener {

    public static final int TYPE_NICK = 0x1001;
    public static final int TYPE_MOBILE = 0x1002;
    public static final int TYPE_EMAIL = 0x1003;
    public static final int TYPE_ADDRESS = 0x1004;

    private FragmentPersonalEditBinding binding;
    private int type;
    private User user;

    public static UserPersonalEditFragment newInstance(int type) {

        Bundle args = new Bundle();
        args.putInt("type", type);
        UserPersonalEditFragment fragment = new UserPersonalEditFragment();
        fragment.setArguments(args);
        return fragment;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        binding = DataBindingUtil.inflate(inflater, R.layout.fragment_personal_edit, container, false);
        return binding.getRoot();
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        init();
    }

    private void init() {
        binding.setUserPersonalEditFragment(this);
        type = getArguments().getInt("type");
        UserService userService = UserService.getInstance(getActivity());
        user = userService.getActiveAccountInfo();
        String title = "";
        switch (type) {
            case TYPE_NICK:
                binding.editText.setText(user.getNickname());
                binding.editText.setVisibility(View.VISIBLE);
                binding.includeMobileLayout.mobileKeycodeLayout.setVisibility(View.GONE);
                title = "修改昵称";
                break;
            case TYPE_MOBILE:
                binding.editText.setVisibility(View.GONE);
                binding.includeMobileLayout.mobileKeycodeLayout.setVisibility(View.VISIBLE);
                binding.includeMobileLayout.edtLoginNumber.setText(user.getMobile());
                binding.includeMobileLayout.getVerify.setOnClickListener(this);
                title = "修改手机号";
                break;
            case TYPE_EMAIL:
                binding.editText.setText(user.getEmail());
                binding.editText.setVisibility(View.VISIBLE);
                binding.includeMobileLayout.mobileKeycodeLayout.setVisibility(View.GONE);
                title = "修改邮箱";
                break;
            case TYPE_ADDRESS:
                binding.editText.setText(user.getLocation());
                binding.editText.setVisibility(View.VISIBLE);
                binding.includeMobileLayout.mobileKeycodeLayout.setVisibility(View.GONE);
                title = "修改地址";
                break;
        }
        ((UserPersonalActivity) getActivity()).setTitle(title);
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.submit) {
            switch (type) {
                case TYPE_NICK:
                    UserUtil.modifyUserInfo(String.valueOf(user.getUid()), "nickName", binding.editText.getText().toString(), this);
                    break;
                case TYPE_MOBILE:
                    UserUtil.updateMobile(String.valueOf(user.getUid()), binding.includeMobileLayout.edtLoginNumber.getText().toString(), binding.includeMobileLayout.edtVerify.getText().toString(), this);
                    break;
                case TYPE_EMAIL:
                    UserUtil.modifyUserInfo(String.valueOf(user.getUid()), "email", binding.editText.getText().toString(), this);
                    break;
                case TYPE_ADDRESS:
                    UserUtil.modifyUserInfo(String.valueOf(user.getUid()), "location", binding.editText.getText().toString(), this);
                    break;
            }
        } else if (v.getId() == R.id.get_verify) {
            UserUtil.sendMessage(IUserService.REGISTER_OR_MODIFY_MOBILE, binding.includeMobileLayout.edtLoginNumber.getText().toString(), new Callback() {
                @Override
                public void onState(int i, String s, Object o) {
                    if (i == IUserService.SUCCESS) {
                        Toast.makeText(getActivity(), "验证码已发送", Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(getActivity(), "获取验证码失败" + s, Toast.LENGTH_LONG).show();
                    }

                }
            });
        }
    }

    @Override
    public void onState(int i, String s, Object o) {
        if (i == IUserService.SUCCESS) {
            updateUserInfo();
            Toast.makeText(getActivity(), "提交成功", Toast.LENGTH_LONG).show();
        } else if (i == IUserService.ERROR_TOKEN_INVALID) {
            ToastUtil.show(getActivity(), getString(R.string.user_token_invalid));
            UserService userService = UserService.getInstance(getActivity());
            userService.clearUser();
            getActivity().finish();
        } else {
            Toast.makeText(getActivity(), "提交失败" + s, Toast.LENGTH_LONG).show();
        }
    }

    private void updateUserInfo() {
        UserUtil.queryUserInfo(String.valueOf(user.getUid()), String.valueOf(user.getUid()), new Callback() {
            @Override
            public void onState(int i, String s, Object obj) {
                if (i == IUserService.SUCCESS) {
                    UserData userData = (UserData) obj;
                    UserService userService = UserService.getInstance(getActivity());
                    userService.setActiveAccountInfo(userData.getData());
                } else if (i == IUserService.ERROR_TOKEN_INVALID) {
                    ToastUtil.show(getActivity(), getString(R.string.user_token_invalid));
                    UserService userService = UserService.getInstance(getActivity());
                    userService.clearUser();
                    getActivity().finish();
                }
            }
        });
    }
}