Skip to content

Commit cd1b1d5

Browse files
some profile viewmodel refactoring
1 parent 7522b5f commit cd1b1d5

File tree

2 files changed

+17
-36
lines changed

2 files changed

+17
-36
lines changed

app/src/main/java/awais/instagrabber/fragments/main/ProfileFragment.kt

-8
Original file line numberDiff line numberDiff line change
@@ -304,15 +304,7 @@ class ProfileFragment : Fragment(), OnRefreshListener, ConfirmDialogFragmentCall
304304
viewModel = ViewModelProvider(
305305
this,
306306
ProfileFragmentViewModelFactory(
307-
csrfToken,
308-
deviceUuid,
309-
UserRepository.getInstance(),
310-
FriendshipRepository.getInstance(),
311-
StoriesRepository.getInstance(),
312-
MediaRepository.getInstance(),
313-
GraphQLRepository.getInstance(),
314307
FavoriteRepository.getInstance(requireContext()),
315-
DirectMessagesRepository.getInstance(),
316308
if (isLoggedIn) DirectMessagesManager else null,
317309
this,
318310
arguments

app/src/main/java/awais/instagrabber/viewmodels/ProfileFragmentViewModel.kt

+17-28
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@ import awais.instagrabber.repositories.responses.User
1616
import awais.instagrabber.repositories.responses.UserProfileContextLink
1717
import awais.instagrabber.repositories.responses.directmessages.RankedRecipient
1818
import awais.instagrabber.repositories.responses.stories.Story
19+
import awais.instagrabber.utils.Constants
1920
import awais.instagrabber.utils.ControlledRunner
2021
import awais.instagrabber.utils.Event
22+
import awais.instagrabber.utils.getCsrfTokenFromCookie
2123
import awais.instagrabber.utils.SingleRunner
24+
import awais.instagrabber.utils.Utils
2225
import awais.instagrabber.utils.extensions.TAG
2326
import awais.instagrabber.utils.extensions.isReallyPrivate
2427
import awais.instagrabber.viewmodels.ProfileFragmentViewModel.ProfileAction.*
@@ -31,18 +34,20 @@ import java.time.LocalDateTime
3134

3235
class ProfileFragmentViewModel(
3336
private val state: SavedStateHandle,
34-
private val csrfToken: String?,
35-
private val deviceUuid: String?,
36-
private val userRepository: UserRepository,
37-
private val friendshipRepository: FriendshipRepository,
38-
private val storiesRepository: StoriesRepository,
39-
private val mediaRepository: MediaRepository,
40-
private val graphQLRepository: GraphQLRepository,
41-
private val favoriteRepository: FavoriteRepository,
42-
private val directMessagesRepository: DirectMessagesRepository,
37+
private val favoriteRepository: FavoriteRepository?,
4338
private val messageManager: DirectMessagesManager?,
4439
ioDispatcher: CoroutineDispatcher,
4540
) : ViewModel() {
41+
private val cookie: String = Utils.settingsHelper.getString(Constants.COOKIE)
42+
private val csrfToken: String? = getCsrfTokenFromCookie(cookie)
43+
private val deviceUuid: String = Utils.settingsHelper.getString(Constants.DEVICE_UUID)
44+
private val userRepository: UserRepository by lazy { UserRepository.getInstance() }
45+
private val friendshipRepository: FriendshipRepository by lazy { FriendshipRepository.getInstance() }
46+
private val storiesRepository: StoriesRepository by lazy { StoriesRepository.getInstance() }
47+
private val mediaRepository: MediaRepository by lazy { MediaRepository.getInstance() }
48+
private val graphQLRepository: GraphQLRepository by lazy { GraphQLRepository.getInstance() }
49+
private val directMessagesRepository: DirectMessagesRepository by lazy { DirectMessagesRepository.getInstance() }
50+
4651
private val _currentUser = MutableLiveData<Resource<User?>>(Resource.loading(null))
4752
private val _isFavorite = MutableLiveData(false)
4853
private val profileAction = MutableLiveData(INIT)
@@ -238,7 +243,7 @@ class ProfileFragmentViewModel(
238243

239244
private suspend fun checkAndUpdateFavorite(fetchedUser: User) {
240245
try {
241-
val favorite = favoriteRepository.getFavorite(fetchedUser.username, FavoriteType.USER)
246+
val favorite = favoriteRepository!!.getFavorite(fetchedUser.username, FavoriteType.USER)
242247
if (favorite == null) {
243248
_isFavorite.postValue(false)
244249
return
@@ -286,7 +291,7 @@ class ProfileFragmentViewModel(
286291
viewModelScope.launch(Dispatchers.IO) {
287292
toggleFavoriteControlledRunner.afterPrevious {
288293
try {
289-
val favorite = favoriteRepository.getFavorite(username, FavoriteType.USER)
294+
val favorite = favoriteRepository!!.getFavorite(username, FavoriteType.USER)
290295
if (favorite == null) {
291296
// insert
292297
favoriteRepository.insertOrUpdateFavorite(
@@ -592,15 +597,7 @@ class ProfileFragmentViewModel(
592597

593598
@Suppress("UNCHECKED_CAST")
594599
class ProfileFragmentViewModelFactory(
595-
private val csrfToken: String?,
596-
private val deviceUuid: String?,
597-
private val userRepository: UserRepository,
598-
private val friendshipRepository: FriendshipRepository,
599-
private val storiesRepository: StoriesRepository,
600-
private val mediaRepository: MediaRepository,
601-
private val graphQLRepository: GraphQLRepository,
602-
private val favoriteRepository: FavoriteRepository,
603-
private val directMessagesRepository: DirectMessagesRepository,
600+
private val favoriteRepository: FavoriteRepository?,
604601
private val messageManager: DirectMessagesManager?,
605602
owner: SavedStateRegistryOwner,
606603
defaultArgs: Bundle? = null,
@@ -612,15 +609,7 @@ class ProfileFragmentViewModelFactory(
612609
): T {
613610
return ProfileFragmentViewModel(
614611
handle,
615-
csrfToken,
616-
deviceUuid,
617-
userRepository,
618-
friendshipRepository,
619-
storiesRepository,
620-
mediaRepository,
621-
graphQLRepository,
622612
favoriteRepository,
623-
directMessagesRepository,
624613
messageManager,
625614
Dispatchers.IO,
626615
) as T

0 commit comments

Comments
 (0)