mirror of
https://github.com/KokaKiwi/BarInsta
synced 2024-11-16 19:57:31 +00:00
Fix crash when fetching self profile info is slow
This commit is contained in:
parent
cbb7b8654a
commit
666a36ff20
@ -12,7 +12,6 @@ import android.text.style.RelativeSizeSpan;
|
||||
import android.text.style.StyleSpan;
|
||||
import android.util.Log;
|
||||
import android.view.ActionMode;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
@ -604,12 +603,16 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
||||
usernameTemp = usernameTemp.substring(1);
|
||||
}
|
||||
if (TextUtils.isEmpty(usernameTemp)) {
|
||||
profileModel = appStateViewModel.getCurrentUser();
|
||||
username = profileModel.getUsername();
|
||||
setUsernameDelayed();
|
||||
setProfileDetails();
|
||||
appStateViewModel.getCurrentUserLiveData().observe(getViewLifecycleOwner(), user -> {
|
||||
if (user == null) return;
|
||||
profileModel = user;
|
||||
username = profileModel.getUsername();
|
||||
setUsernameDelayed();
|
||||
setProfileDetails();
|
||||
});
|
||||
return;
|
||||
}
|
||||
else if (isLoggedIn) {
|
||||
if (isLoggedIn) {
|
||||
userService.getUsernameInfo(usernameTemp, new ServiceCallback<User>() {
|
||||
@Override
|
||||
public void onSuccess(final User user) {
|
||||
@ -643,26 +646,25 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
||||
} catch (final Throwable ignored) {}
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
else {
|
||||
graphQLService.fetchUser(usernameTemp, new ServiceCallback<User>() {
|
||||
@Override
|
||||
public void onSuccess(final User user) {
|
||||
profileModel = user;
|
||||
setProfileDetails();
|
||||
}
|
||||
graphQLService.fetchUser(usernameTemp, new ServiceCallback<User>() {
|
||||
@Override
|
||||
public void onSuccess(final User user) {
|
||||
profileModel = user;
|
||||
setProfileDetails();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(final Throwable t) {
|
||||
Log.e(TAG, "Error fetching profile", t);
|
||||
final Context context = getContext();
|
||||
try {
|
||||
if (t == null) Toast.makeText(context, R.string.error_loading_profile, Toast.LENGTH_LONG).show();
|
||||
else Toast.makeText(context, t.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
} catch (final Throwable ignored) {}
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public void onFailure(final Throwable t) {
|
||||
Log.e(TAG, "Error fetching profile", t);
|
||||
final Context context = getContext();
|
||||
try {
|
||||
if (t == null) Toast.makeText(context, R.string.error_loading_profile, Toast.LENGTH_LONG).show();
|
||||
else Toast.makeText(context, t.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
} catch (final Throwable ignored) {}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void setProfileDetails() {
|
||||
@ -987,6 +989,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
||||
}
|
||||
|
||||
private void updateAccountInfo() {
|
||||
if (profileModel == null) return;
|
||||
accountRepository.insertOrUpdateAccount(
|
||||
profileModel.getPk(),
|
||||
profileModel.getUsername(),
|
||||
|
@ -1,9 +1,12 @@
|
||||
package awais.instagrabber.viewmodels;
|
||||
|
||||
import android.app.Application;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import awais.instagrabber.db.datasources.AccountDataSource;
|
||||
import awais.instagrabber.db.repositories.AccountRepository;
|
||||
@ -21,8 +24,8 @@ public class AppStateViewModel extends AndroidViewModel {
|
||||
|
||||
private final String cookie;
|
||||
private final boolean isLoggedIn;
|
||||
private final MutableLiveData<User> currentUser = new MutableLiveData<>();
|
||||
|
||||
private User currentUser;
|
||||
private AccountRepository accountRepository;
|
||||
private UserService userService;
|
||||
|
||||
@ -38,6 +41,10 @@ public class AppStateViewModel extends AndroidViewModel {
|
||||
}
|
||||
|
||||
public User getCurrentUser() {
|
||||
return currentUser.getValue();
|
||||
}
|
||||
|
||||
public LiveData<User> getCurrentUserLiveData() {
|
||||
return currentUser;
|
||||
}
|
||||
|
||||
@ -46,11 +53,13 @@ public class AppStateViewModel extends AndroidViewModel {
|
||||
userService.getUserInfo(uid, new ServiceCallback<User>() {
|
||||
@Override
|
||||
public void onSuccess(final User user) {
|
||||
currentUser = user;
|
||||
currentUser.postValue(user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(final Throwable t) {}
|
||||
public void onFailure(final Throwable t) {
|
||||
Log.e(TAG, "onFailure: ", t);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user