|
|
@@ -16,9 +16,10 @@ import com.huawei.hms.support.account.result.AuthAccount;
|
|
|
import com.huawei.hms.support.account.service.AccountAuthService;
|
|
|
|
|
|
import cn.seecoder.courselearningdemo.CourseLearningDemoApplication;
|
|
|
-import cn.seecoder.courselearningdemo.dao.UserDao;
|
|
|
+import cn.seecoder.courselearningdemo.repository.UserLocalRepository;
|
|
|
import cn.seecoder.courselearningdemo.model.User;
|
|
|
import cn.seecoder.courselearningdemo.network.RetrofitClient;
|
|
|
+import cn.seecoder.courselearningdemo.repository.UserRepository;
|
|
|
import cn.seecoder.courselearningdemo.utils.LogUtil;
|
|
|
import retrofit2.Call;
|
|
|
import retrofit2.Callback;
|
|
|
@@ -29,12 +30,17 @@ import retrofit2.Response;
|
|
|
*/
|
|
|
public class SharedViewModel extends ViewModel {
|
|
|
private MutableLiveData<String> uid;
|
|
|
- private final MutableLiveData<User> userData = new MutableLiveData<>();
|
|
|
+ private MutableLiveData<User> userData;
|
|
|
+ private UserRepository userRepository = UserRepository.getCourseRepository();
|
|
|
private AccountAuthService mAuthManager;
|
|
|
|
|
|
+ public SharedViewModel(){
|
|
|
+
|
|
|
+ }
|
|
|
public LiveData<String> getUid(){
|
|
|
if(uid == null){
|
|
|
- uid = new MutableLiveData<>();
|
|
|
+ uid = userRepository.getUidLiveData();
|
|
|
+ userData = userRepository.getUserDataLiveData();
|
|
|
// 打开APP时,默认使用silentSignIn尝试登录
|
|
|
silentSignIn();
|
|
|
}
|
|
|
@@ -46,18 +52,21 @@ public class SharedViewModel extends ViewModel {
|
|
|
}
|
|
|
|
|
|
public void updateUserData(User user){
|
|
|
-// LogUtil.e(this, "updateUserData user: "+user);
|
|
|
- if(user==null || user.getUid()==null){
|
|
|
- uid.setValue(null);
|
|
|
- UserDao.clearUser();
|
|
|
- }else{
|
|
|
- userData.setValue(user);
|
|
|
- UserDao.saveUser(user);
|
|
|
- if(uid.getValue() == null || !uid.getValue().equals(user.getUid()))
|
|
|
- uid.setValue(user.getUid());
|
|
|
- }
|
|
|
+ userRepository.updateUserData(user);
|
|
|
+ }
|
|
|
+ public void userLoginToServer() {
|
|
|
+ userRepository.userLoginToServer();
|
|
|
}
|
|
|
|
|
|
+ public void reloadUserDataFromServer() {
|
|
|
+ userRepository.reloadUserDataFromServer();
|
|
|
+ }
|
|
|
+ public void verifyIdToken(User user, String idToken){
|
|
|
+ userRepository.verifyIdToken(user,idToken);
|
|
|
+ }
|
|
|
+ public void sendRegTokenToServer(String token){
|
|
|
+ userRepository.sendRegTokenToServer(token);
|
|
|
+ }
|
|
|
// 静默登录
|
|
|
private void silentSignIn() {
|
|
|
AccountAuthParams mAuthParam = new AccountAuthParamsHelper(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM).createParams();
|
|
|
@@ -79,7 +88,7 @@ public class SharedViewModel extends ViewModel {
|
|
|
public void onFailure(Exception e) {
|
|
|
// 如果静默登录失败
|
|
|
if (e instanceof ApiException) {
|
|
|
- UserDao.clearUser();
|
|
|
+ UserLocalRepository.clearUser();
|
|
|
ApiException apiException = (ApiException) e;
|
|
|
LogUtil.w(task, "Silent sign in error, status code: " + apiException.getStatusCode());
|
|
|
LogUtil.w(task, "Silent sign in error, " + apiException.getMessage());
|
|
|
@@ -145,42 +154,5 @@ public class SharedViewModel extends ViewModel {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- public void userLoginToServer() {
|
|
|
- Call<User> userCall = RetrofitClient.userService.login(userData.getValue());
|
|
|
- userCall.enqueue(new Callback<User>() {
|
|
|
- @Override
|
|
|
- public void onResponse(Call<User> call, Response<User> response) {
|
|
|
-// LogUtil.i("userLoginToServer", "get response: "+response.body());
|
|
|
- if(response.body() == null || response.body().getUid() == null)
|
|
|
- LogUtil.e("userLoginToServer", "response Null Error!");
|
|
|
- else
|
|
|
- updateUserData(response.body());
|
|
|
- }
|
|
|
|
|
|
- @Override
|
|
|
- public void onFailure(Call<User> call, Throwable t) {
|
|
|
- LogUtil.e("userLoginToServer", "Call failure: "+ t.getMessage() + " caused by: "+t.getCause());
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- // 从应用服务器重新拉取用户账号信息
|
|
|
- public void reloadUserDataFromServer() {
|
|
|
- Call<User> userCall = RetrofitClient.userService.getUser(uid.getValue());
|
|
|
- userCall.enqueue(new Callback<User>() {
|
|
|
- @Override
|
|
|
- public void onResponse(Call<User> call, Response<User> response) {
|
|
|
- LogUtil.i("reloadUserDataFromServer", "get response");
|
|
|
- if(response.body() == null || response.body().getUid() == null)
|
|
|
- LogUtil.e("reloadUserDataFromServer", "response Null Error!");
|
|
|
- else
|
|
|
- updateUserData(response.body());
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onFailure(Call<User> call, Throwable t) {
|
|
|
- LogUtil.e("reloadUserDataFromServer", "Call failure: "+ t.getMessage() + " caused by: "+t.getCause());
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
}
|