@@ -16,9 +16,12 @@ import awais.instagrabber.repositories.responses.User
16
16
import awais.instagrabber.repositories.responses.UserProfileContextLink
17
17
import awais.instagrabber.repositories.responses.directmessages.RankedRecipient
18
18
import awais.instagrabber.repositories.responses.stories.Story
19
+ import awais.instagrabber.utils.Constants
19
20
import awais.instagrabber.utils.ControlledRunner
20
21
import awais.instagrabber.utils.Event
22
+ import awais.instagrabber.utils.getCsrfTokenFromCookie
21
23
import awais.instagrabber.utils.SingleRunner
24
+ import awais.instagrabber.utils.Utils
22
25
import awais.instagrabber.utils.extensions.TAG
23
26
import awais.instagrabber.utils.extensions.isReallyPrivate
24
27
import awais.instagrabber.viewmodels.ProfileFragmentViewModel.ProfileAction.*
@@ -31,18 +34,20 @@ import java.time.LocalDateTime
31
34
32
35
class ProfileFragmentViewModel (
33
36
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 ? ,
43
38
private val messageManager : DirectMessagesManager ? ,
44
39
ioDispatcher : CoroutineDispatcher ,
45
40
) : 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
+
46
51
private val _currentUser = MutableLiveData <Resource <User ?>>(Resource .loading(null ))
47
52
private val _isFavorite = MutableLiveData (false )
48
53
private val profileAction = MutableLiveData (INIT )
@@ -238,7 +243,7 @@ class ProfileFragmentViewModel(
238
243
239
244
private suspend fun checkAndUpdateFavorite (fetchedUser : User ) {
240
245
try {
241
- val favorite = favoriteRepository.getFavorite(fetchedUser.username, FavoriteType .USER )
246
+ val favorite = favoriteRepository!! .getFavorite(fetchedUser.username, FavoriteType .USER )
242
247
if (favorite == null ) {
243
248
_isFavorite .postValue(false )
244
249
return
@@ -286,7 +291,7 @@ class ProfileFragmentViewModel(
286
291
viewModelScope.launch(Dispatchers .IO ) {
287
292
toggleFavoriteControlledRunner.afterPrevious {
288
293
try {
289
- val favorite = favoriteRepository.getFavorite(username, FavoriteType .USER )
294
+ val favorite = favoriteRepository!! .getFavorite(username, FavoriteType .USER )
290
295
if (favorite == null ) {
291
296
// insert
292
297
favoriteRepository.insertOrUpdateFavorite(
@@ -592,15 +597,7 @@ class ProfileFragmentViewModel(
592
597
593
598
@Suppress(" UNCHECKED_CAST" )
594
599
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 ? ,
604
601
private val messageManager : DirectMessagesManager ? ,
605
602
owner : SavedStateRegistryOwner ,
606
603
defaultArgs : Bundle ? = null ,
@@ -612,15 +609,7 @@ class ProfileFragmentViewModelFactory(
612
609
): T {
613
610
return ProfileFragmentViewModel (
614
611
handle,
615
- csrfToken,
616
- deviceUuid,
617
- userRepository,
618
- friendshipRepository,
619
- storiesRepository,
620
- mediaRepository,
621
- graphQLRepository,
622
612
favoriteRepository,
623
- directMessagesRepository,
624
613
messageManager,
625
614
Dispatchers .IO ,
626
615
) as T
0 commit comments