mirror of
				https://github.com/KokaKiwi/BarInsta
				synced 2025-10-31 03:25:34 +00:00 
			
		
		
		
	migrate ProfileFetcher
This commit is contained in:
		
							parent
							
								
									6a6a59a334
								
							
						
					
					
						commit
						e9239c31b0
					
				| @ -1,101 +0,0 @@ | ||||
| package awais.instagrabber.asyncs; | ||||
| 
 | ||||
| import android.os.AsyncTask; | ||||
| import android.util.Log; | ||||
| 
 | ||||
| import androidx.annotation.Nullable; | ||||
| 
 | ||||
| import awais.instagrabber.interfaces.FetchListener; | ||||
| import awais.instagrabber.repositories.responses.FriendshipStatus; | ||||
| import awais.instagrabber.repositories.responses.User; | ||||
| import awais.instagrabber.webservices.GraphQLService; | ||||
| import awais.instagrabber.webservices.ServiceCallback; | ||||
| import awais.instagrabber.webservices.UserService; | ||||
| 
 | ||||
| public final class ProfileFetcher extends AsyncTask<Void, Void, Void> { | ||||
|     private static final String TAG = ProfileFetcher.class.getSimpleName(); | ||||
|     private final UserService userService; | ||||
|     private final GraphQLService graphQLService; | ||||
| 
 | ||||
|     private final FetchListener<User> fetchListener; | ||||
|     private final long myId; | ||||
|     private final boolean isLoggedIn; | ||||
|     private final String userName; | ||||
| 
 | ||||
|     public ProfileFetcher(final String userName, | ||||
|                           final long myId, | ||||
|                           final boolean isLoggedIn, | ||||
|                           final FetchListener<User> fetchListener) { | ||||
|         this.userName = userName; | ||||
|         this.myId = myId; | ||||
|         this.isLoggedIn = isLoggedIn; | ||||
|         this.fetchListener = fetchListener; | ||||
|         userService = isLoggedIn ? UserService.getInstance() : null; | ||||
|         graphQLService = isLoggedIn ? null : GraphQLService.getInstance(); | ||||
|     } | ||||
| 
 | ||||
|     @Nullable | ||||
|     @Override | ||||
|     protected Void doInBackground(final Void... voids) { | ||||
|         if (isLoggedIn && userName != null) { | ||||
|             userService.getUsernameInfo(userName, new ServiceCallback<User>() { | ||||
|                 @Override | ||||
|                 public void onSuccess(final User user) { | ||||
|                     userService.getUserFriendship(user.getPk(), new ServiceCallback<FriendshipStatus>() { | ||||
|                         @Override | ||||
|                         public void onSuccess(final FriendshipStatus status) { | ||||
|                             user.setFriendshipStatus(status); | ||||
|                             fetchListener.onResult(user); | ||||
|                         } | ||||
| 
 | ||||
|                         @Override | ||||
|                         public void onFailure(final Throwable t) { | ||||
|                             Log.e(TAG, "Error", t); | ||||
|                             fetchListener.onFailure(t); | ||||
|                         } | ||||
|                     }); | ||||
|                 } | ||||
| 
 | ||||
|                 @Override | ||||
|                 public void onFailure(final Throwable t) { | ||||
|                     Log.e(TAG, "Error", t); | ||||
|                     fetchListener.onFailure(t); | ||||
|                 } | ||||
|             }); | ||||
|         } | ||||
|         else if (isLoggedIn) { | ||||
|             userService.getUserInfo(myId, new ServiceCallback<User>() { | ||||
|                 @Override | ||||
|                 public void onSuccess(final User user) { | ||||
|                     fetchListener.onResult(user); | ||||
|                 } | ||||
| 
 | ||||
|                 @Override | ||||
|                 public void onFailure(final Throwable t) { | ||||
|                     Log.e(TAG, "Error", t); | ||||
|                     fetchListener.onFailure(t); | ||||
|                 } | ||||
|             }); | ||||
|         } | ||||
|         else { | ||||
|             graphQLService.fetchUser(userName, new ServiceCallback<User>() { | ||||
|                 @Override | ||||
|                 public void onSuccess(final User user) { | ||||
|                     fetchListener.onResult(user); | ||||
|                 } | ||||
| 
 | ||||
|                 @Override | ||||
|                 public void onFailure(final Throwable t) { | ||||
|                     Log.e(TAG, "Error", t); | ||||
|                     fetchListener.onFailure(t); | ||||
|                 } | ||||
|             }); | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     protected void onPreExecute() { | ||||
|         if (fetchListener != null) fetchListener.doBefore(); | ||||
|     } | ||||
| } | ||||
| @ -4,7 +4,6 @@ import android.content.Context; | ||||
| import android.content.DialogInterface; | ||||
| import android.content.pm.PackageManager; | ||||
| import android.graphics.Typeface; | ||||
| import android.os.AsyncTask; | ||||
| import android.os.Bundle; | ||||
| import android.os.Handler; | ||||
| import android.os.Looper; | ||||
| @ -57,7 +56,6 @@ import awais.instagrabber.activities.MainActivity; | ||||
| import awais.instagrabber.adapters.FeedAdapterV2; | ||||
| import awais.instagrabber.adapters.HighlightsAdapter; | ||||
| import awais.instagrabber.asyncs.CreateThreadAction; | ||||
| import awais.instagrabber.asyncs.ProfileFetcher; | ||||
| import awais.instagrabber.asyncs.ProfilePostFetchService; | ||||
| import awais.instagrabber.customviews.PrimaryActionModeCallback; | ||||
| import awais.instagrabber.customviews.PrimaryActionModeCallback.CallbacksHelper; | ||||
| @ -73,7 +71,6 @@ import awais.instagrabber.db.repositories.RepositoryCallback; | ||||
| import awais.instagrabber.dialogs.PostsLayoutPreferencesDialogFragment; | ||||
| import awais.instagrabber.dialogs.ProfilePicDialogFragment; | ||||
| import awais.instagrabber.fragments.PostViewV2Fragment; | ||||
| import awais.instagrabber.interfaces.FetchListener; | ||||
| import awais.instagrabber.managers.DirectMessagesManager; | ||||
| import awais.instagrabber.managers.InboxManager; | ||||
| import awais.instagrabber.models.HighlightModel; | ||||
| @ -93,11 +90,14 @@ import awais.instagrabber.utils.CookieUtils; | ||||
| import awais.instagrabber.utils.DownloadUtils; | ||||
| import awais.instagrabber.utils.TextUtils; | ||||
| import awais.instagrabber.utils.Utils; | ||||
| import awais.instagrabber.viewmodels.AppStateViewModel; | ||||
| import awais.instagrabber.viewmodels.HighlightsViewModel; | ||||
| import awais.instagrabber.webservices.FriendshipService; | ||||
| import awais.instagrabber.webservices.GraphQLService; | ||||
| import awais.instagrabber.webservices.MediaService; | ||||
| import awais.instagrabber.webservices.ServiceCallback; | ||||
| import awais.instagrabber.webservices.StoriesService; | ||||
| import awais.instagrabber.webservices.UserService; | ||||
| 
 | ||||
| import static androidx.core.content.PermissionChecker.checkSelfPermission; | ||||
| import static awais.instagrabber.fragments.HashTagFragment.ARG_HASHTAG; | ||||
| @ -120,6 +120,8 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe | ||||
|     private FriendshipService friendshipService; | ||||
|     private StoriesService storiesService; | ||||
|     private MediaService mediaService; | ||||
|     private UserService userService; | ||||
|     private GraphQLService graphQLService; | ||||
|     private boolean shouldRefresh = true; | ||||
|     private boolean hasStories = false; | ||||
|     private HighlightsAdapter highlightsAdapter; | ||||
| @ -304,6 +306,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe | ||||
|     private LayoutProfileDetailsBinding profileDetailsBinding; | ||||
|     private AccountRepository accountRepository; | ||||
|     private FavoriteRepository favoriteRepository; | ||||
|     private AppStateViewModel appStateViewModel; | ||||
| 
 | ||||
|     @Override | ||||
|     public void onCreate(@Nullable final Bundle savedInstanceState) { | ||||
| @ -317,8 +320,11 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe | ||||
|         friendshipService = isLoggedIn ? FriendshipService.getInstance(deviceUuid, csrfToken, myId) : null; | ||||
|         storiesService = isLoggedIn ? StoriesService.getInstance(null, 0L, null) : null; | ||||
|         mediaService = isLoggedIn ? MediaService.getInstance(null, null, 0) : null; | ||||
|         userService = isLoggedIn ? UserService.getInstance() : null; | ||||
|         graphQLService = isLoggedIn ? null : GraphQLService.getInstance(); | ||||
|         accountRepository = AccountRepository.getInstance(AccountDataSource.getInstance(getContext())); | ||||
|         favoriteRepository = FavoriteRepository.getInstance(FavoriteDataSource.getInstance(getContext())); | ||||
|         appStateViewModel = new ViewModelProvider(fragmentActivity).get(AppStateViewModel.class); | ||||
|         setHasOptionsMenu(true); | ||||
|     } | ||||
| 
 | ||||
| @ -601,31 +607,66 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe | ||||
|         if (usernameTemp.startsWith("@")) { | ||||
|             usernameTemp = usernameTemp.substring(1); | ||||
|         } | ||||
|         new ProfileFetcher(TextUtils.isEmpty(username) ? null : usernameTemp, myId, isLoggedIn, new FetchListener<User>() { | ||||
|             @Override | ||||
|             public void onResult(final User user) { | ||||
|                 if (getContext() == null) return; | ||||
|                 if (TextUtils.isEmpty(username)) { | ||||
|                     username = user.getUsername(); | ||||
|                     setUsernameDelayed(); | ||||
|         if (TextUtils.isEmpty(usernameTemp)) { | ||||
|             profileModel = appStateViewModel.getCurrentUser(); | ||||
|             username = profileModel.getUsername(); | ||||
|             setUsernameDelayed(); | ||||
|             setProfileDetails(); | ||||
|         } | ||||
|         else if (isLoggedIn) { | ||||
|             userService.getUsernameInfo(usernameTemp, new ServiceCallback<User>() { | ||||
|                 @Override | ||||
|                 public void onSuccess(final User user) { | ||||
|                     userService.getUserFriendship(user.getPk(), new ServiceCallback<FriendshipStatus>() { | ||||
|                         @Override | ||||
|                         public void onSuccess(final FriendshipStatus status) { | ||||
|                             user.setFriendshipStatus(status); | ||||
|                             profileModel = user; | ||||
|                             setProfileDetails(); | ||||
|                         } | ||||
| 
 | ||||
|                         @Override | ||||
|                         public void onFailure(final Throwable t) { | ||||
|                             Log.e(TAG, "Error fetching profile relationship", t); | ||||
|                             final Context context = getContext(); | ||||
|                             try { | ||||
|                                 if (t == null) Toast.makeText(context, R.string.error_loading_profile_loggedin, Toast.LENGTH_LONG).show(); | ||||
|                                 else Toast.makeText(context, t.getMessage(), Toast.LENGTH_SHORT).show(); | ||||
|                             } catch (final Throwable ignored) {} | ||||
|                         } | ||||
|                     }); | ||||
|                 } | ||||
|                 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, | ||||
|                                                   isLoggedIn ? R.string.error_loading_profile_loggedin : 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_loggedin, Toast.LENGTH_LONG).show(); | ||||
|                         else Toast.makeText(context, t.getMessage(), Toast.LENGTH_SHORT).show(); | ||||
|                     } catch (final Throwable ignored) {} | ||||
|                 } | ||||
|             }); | ||||
|         } | ||||
|         else { | ||||
|             graphQLService.fetchUser(usernameTemp, new ServiceCallback<User>() { | ||||
|                 @Override | ||||
|                 public void onSuccess(final User user) { | ||||
|                     profileModel = user; | ||||
|                     setProfileDetails(); | ||||
|                 } | ||||
| 
 | ||||
|         }).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); | ||||
|                 @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() { | ||||
|  | ||||
| @ -1,21 +1,18 @@ | ||||
| package awais.instagrabber.viewmodels; | ||||
| 
 | ||||
| import android.app.Application; | ||||
| import android.os.AsyncTask; | ||||
| 
 | ||||
| import androidx.annotation.NonNull; | ||||
| import androidx.lifecycle.AndroidViewModel; | ||||
| 
 | ||||
| import awais.instagrabber.asyncs.ProfileFetcher; | ||||
| import awais.instagrabber.db.datasources.AccountDataSource; | ||||
| import awais.instagrabber.db.entities.Account; | ||||
| import awais.instagrabber.db.repositories.AccountRepository; | ||||
| import awais.instagrabber.db.repositories.RepositoryCallback; | ||||
| import awais.instagrabber.interfaces.FetchListener; | ||||
| import awais.instagrabber.repositories.responses.User; | ||||
| import awais.instagrabber.utils.Constants; | ||||
| import awais.instagrabber.utils.CookieUtils; | ||||
| import awais.instagrabber.utils.TextUtils; | ||||
| import awais.instagrabber.webservices.ServiceCallback; | ||||
| import awais.instagrabber.webservices.UserService; | ||||
| 
 | ||||
| import static awais.instagrabber.utils.Utils.settingsHelper; | ||||
| 
 | ||||
| @ -27,6 +24,7 @@ public class AppStateViewModel extends AndroidViewModel { | ||||
| 
 | ||||
|     private User currentUser; | ||||
|     private AccountRepository accountRepository; | ||||
|     private UserService userService; | ||||
| 
 | ||||
|     public AppStateViewModel(@NonNull final Application application) { | ||||
|         super(application); | ||||
| @ -34,6 +32,7 @@ public class AppStateViewModel extends AndroidViewModel { | ||||
|         cookie = settingsHelper.getString(Constants.COOKIE); | ||||
|         isLoggedIn = !TextUtils.isEmpty(cookie) && CookieUtils.getUserIdFromCookie(cookie) > 0; | ||||
|         if (!isLoggedIn) return; | ||||
|         userService = UserService.getInstance(); | ||||
|         accountRepository = AccountRepository.getInstance(AccountDataSource.getInstance(application)); | ||||
|         fetchProfileDetails(); | ||||
|     } | ||||
| @ -44,6 +43,14 @@ public class AppStateViewModel extends AndroidViewModel { | ||||
| 
 | ||||
|     private void fetchProfileDetails() { | ||||
|         final long uid = CookieUtils.getUserIdFromCookie(cookie); | ||||
|         new ProfileFetcher(null, uid, true, user -> this.currentUser = user).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); | ||||
|         userService.getUserInfo(uid, new ServiceCallback<User>() { | ||||
|             @Override | ||||
|             public void onSuccess(final User user) { | ||||
|                 currentUser = user; | ||||
|             } | ||||
| 
 | ||||
|             @Override | ||||
|             public void onFailure(final Throwable t) {} | ||||
|         }); | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user