Skip to content

Commit

Permalink
fix local follows when logged in
Browse files Browse the repository at this point in the history
  • Loading branch information
crackededed committed Jan 18, 2025
1 parent 28914d0 commit c320769
Show file tree
Hide file tree
Showing 10 changed files with 36 additions and 46 deletions.
3 changes: 2 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ android {
minSdk = 16
targetSdk = 35
versionCode = 121
versionName = "2.40.5"
versionName = "2.41.0"
}

buildTypes {
Expand Down Expand Up @@ -74,6 +74,7 @@ android {
"androidx.navigation:navigation-fragment:2.7.7",
"androidx.navigation:navigation-ui:2.7.7",
"androidx.paging:paging-runtime:3.3.0-alpha02",
"androidx.recyclerview:recyclerview:1.4.0-alpha01",
"androidx.viewpager2:viewpager2:1.1.0-beta02",
"androidx.webkit:webkit:1.9.0-alpha01",
"androidx.work:work-runtime:2.9.1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -480,9 +480,8 @@ class ChannelPagerFragment : BaseNetworkFragment(), Scrollable, FragmentHost, In
viewModel.isFollowingChannel(
TwitchApiHelper.getHelixHeaders(requireContext()),
TwitchApiHelper.getGQLHeaders(requireContext(), true),
requireContext().tokenPrefs().getString(C.USER_ID, null),
requireContext().tokenPrefs().getString(C.USERNAME, null),
requireContext().prefs().getString(C.UI_FOLLOW_BUTTON, "0")?.toIntOrNull() ?: 0,
requireContext().tokenPrefs().getString(C.USER_ID, null),
args.channelId,
args.channelLogin
)
Expand Down Expand Up @@ -695,9 +694,8 @@ class ChannelPagerFragment : BaseNetworkFragment(), Scrollable, FragmentHost, In
viewModel.isFollowingChannel(
TwitchApiHelper.getHelixHeaders(requireContext()),
TwitchApiHelper.getGQLHeaders(requireContext(), true),
requireContext().tokenPrefs().getString(C.USER_ID, null),
requireContext().tokenPrefs().getString(C.USERNAME, null),
requireContext().prefs().getString(C.UI_FOLLOW_BUTTON, "0")?.toIntOrNull() ?: 0,
requireContext().tokenPrefs().getString(C.USER_ID, null),
args.channelId,
args.channelLogin
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,22 +164,21 @@ class ChannelPagerViewModel @Inject constructor(
}
}

fun isFollowingChannel(helixHeaders: Map<String, String>, gqlHeaders: Map<String, String>, accountId: String?, accountLogin: String?, setting: Int, channelId: String?, channelLogin: String?) {
fun isFollowingChannel(helixHeaders: Map<String, String>, gqlHeaders: Map<String, String>, setting: Int, userId: String?, channelId: String?, channelLogin: String?) {
if (_isFollowing.value == null) {
viewModelScope.launch {
try {
if (setting == 0 && !gqlHeaders[C.HEADER_TOKEN].isNullOrBlank() && (!accountLogin.isNullOrBlank() && !channelLogin.isNullOrBlank() && accountLogin != channelLogin) ||
(!helixHeaders[C.HEADER_CLIENT_ID].isNullOrBlank() && !helixHeaders[C.HEADER_TOKEN].isNullOrBlank() && !accountId.isNullOrBlank() && !channelId.isNullOrBlank() && accountId != channelId)) {
val response = repository.loadUserFollowing(helixHeaders, channelId, accountId, gqlHeaders, channelLogin)
_isFollowing.value = response.first
_notificationsEnabled.value = if (response.first && response.second != null) {
response.second
if (!channelId.isNullOrBlank()) {
if (setting == 0 && !gqlHeaders[C.HEADER_TOKEN].isNullOrBlank() && userId != channelId) {
val response = repository.loadUserFollowing(helixHeaders, channelId, userId, gqlHeaders, channelLogin)
_isFollowing.value = response.first
_notificationsEnabled.value = if (response.first && response.second != null) {
response.second
} else {
notificationUsersRepository.getByUserId(channelId) != null
}
} else {
channelId?.let { notificationUsersRepository.getByUserId(it) != null }
}
} else {
channelId?.let {
_isFollowing.value = localFollowsChannel.getFollowByUserId(it) != null
_isFollowing.value = localFollowsChannel.getFollowByUserId(channelId) != null
_notificationsEnabled.value = notificationUsersRepository.getByUserId(channelId) != null
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,17 +41,16 @@ abstract class PlayerViewModel(
val isFollowing: StateFlow<Boolean?> = _isFollowing
val follow = MutableStateFlow<Pair<Boolean, String?>?>(null)

fun isFollowingChannel(helixHeaders: Map<String, String>, gqlHeaders: Map<String, String>, accountId: String?, accountLogin: String?, setting: Int, channelId: String?, channelLogin: String?) {
fun isFollowingChannel(helixHeaders: Map<String, String>, gqlHeaders: Map<String, String>, setting: Int, userId: String?, channelId: String?, channelLogin: String?) {
if (_isFollowing.value == null) {
viewModelScope.launch {
try {
if (setting == 0 && !gqlHeaders[C.HEADER_TOKEN].isNullOrBlank() && (!accountLogin.isNullOrBlank() && !channelLogin.isNullOrBlank() && accountLogin != channelLogin) ||
(!helixHeaders[C.HEADER_CLIENT_ID].isNullOrBlank() && !helixHeaders[C.HEADER_TOKEN].isNullOrBlank() && !accountId.isNullOrBlank() && !channelId.isNullOrBlank() && accountId != channelId)) {
val response = repository.loadUserFollowing(helixHeaders, channelId, accountId, gqlHeaders, channelLogin)
_isFollowing.value = response.first
} else {
channelId?.let {
_isFollowing.value = localFollowsChannel.getFollowByUserId(it) != null
if (!channelId.isNullOrBlank()) {
if (setting == 0 && !gqlHeaders[C.HEADER_TOKEN].isNullOrBlank() && userId != channelId) {
val response = repository.loadUserFollowing(helixHeaders, channelId, userId, gqlHeaders, channelLogin)
_isFollowing.value = response.first
} else {
_isFollowing.value = localFollowsChannel.getFollowByUserId(channelId) != null
}
}
} catch (e: Exception) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -296,9 +296,8 @@ class ClipPlayerFragment : BasePlayerFragment(), HasDownloadDialog {
viewModel.isFollowingChannel(
TwitchApiHelper.getHelixHeaders(requireContext()),
TwitchApiHelper.getGQLHeaders(requireContext(), true),
requireContext().tokenPrefs().getString(C.USER_ID, null),
requireContext().tokenPrefs().getString(C.USERNAME, null),
prefs.getString(C.UI_FOLLOW_BUTTON, "0")?.toIntOrNull() ?: 0,
requireContext().tokenPrefs().getString(C.USER_ID, null),
item.channelId,
item.channelLogin
)
Expand Down Expand Up @@ -397,9 +396,8 @@ class ClipPlayerFragment : BasePlayerFragment(), HasDownloadDialog {
viewModel.isFollowingChannel(
TwitchApiHelper.getHelixHeaders(requireContext()),
TwitchApiHelper.getGQLHeaders(requireContext(), true),
requireContext().tokenPrefs().getString(C.USER_ID, null),
requireContext().tokenPrefs().getString(C.USERNAME, null),
prefs.getString(C.UI_FOLLOW_BUTTON, "0")?.toIntOrNull() ?: 0,
requireContext().tokenPrefs().getString(C.USER_ID, null),
item.channelId,
item.channelLogin
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -314,9 +314,8 @@ class StreamPlayerFragment : BasePlayerFragment(), HasDownloadDialog {
viewModel.isFollowingChannel(
TwitchApiHelper.getHelixHeaders(requireContext()),
TwitchApiHelper.getGQLHeaders(requireContext(), true),
requireContext().tokenPrefs().getString(C.USER_ID, null),
requireContext().tokenPrefs().getString(C.USERNAME, null),
prefs.getString(C.UI_FOLLOW_BUTTON, "0")?.toIntOrNull() ?: 0,
requireContext().tokenPrefs().getString(C.USER_ID, null),
item.channelId,
item.channelLogin
)
Expand Down Expand Up @@ -729,9 +728,8 @@ class StreamPlayerFragment : BasePlayerFragment(), HasDownloadDialog {
viewModel.isFollowingChannel(
TwitchApiHelper.getHelixHeaders(requireContext()),
TwitchApiHelper.getGQLHeaders(requireContext(), true),
requireContext().tokenPrefs().getString(C.USER_ID, null),
requireContext().tokenPrefs().getString(C.USERNAME, null),
prefs.getString(C.UI_FOLLOW_BUTTON, "0")?.toIntOrNull() ?: 0,
requireContext().tokenPrefs().getString(C.USER_ID, null),
item.channelId,
item.channelLogin
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -309,9 +309,8 @@ class VideoPlayerFragment : BasePlayerFragment(), HasDownloadDialog, PlayerGames
viewModel.isFollowingChannel(
TwitchApiHelper.getHelixHeaders(requireContext()),
TwitchApiHelper.getGQLHeaders(requireContext(), true),
requireContext().tokenPrefs().getString(C.USER_ID, null),
requireContext().tokenPrefs().getString(C.USERNAME, null),
prefs.getString(C.UI_FOLLOW_BUTTON, "0")?.toIntOrNull() ?: 0,
requireContext().tokenPrefs().getString(C.USER_ID, null),
item.channelId,
item.channelLogin
)
Expand Down Expand Up @@ -491,9 +490,8 @@ class VideoPlayerFragment : BasePlayerFragment(), HasDownloadDialog, PlayerGames
viewModel.isFollowingChannel(
TwitchApiHelper.getHelixHeaders(requireContext()),
TwitchApiHelper.getGQLHeaders(requireContext(), true),
requireContext().tokenPrefs().getString(C.USER_ID, null),
requireContext().tokenPrefs().getString(C.USERNAME, null),
prefs.getString(C.UI_FOLLOW_BUTTON, "0")?.toIntOrNull() ?: 0,
requireContext().tokenPrefs().getString(C.USER_ID, null),
item.channelId,
item.channelLogin
)
Expand Down
12 changes: 6 additions & 6 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[versions]
activity = "1.9.3"
android-gradle-plugin = "8.7.3"
activity = "1.10.0"
android-gradle-plugin = "8.8.0"
apollo = "4.1.0"
appcompat = "1.7.0"
coil = "3.0.4"
Expand All @@ -14,7 +14,7 @@ draglistview = "1.7.3"
fragment = "1.8.5"
glide = "4.16.0"
glide-webpdecoder = "2.6.4.16.0"
hilt = "2.54"
hilt = "2.55"
hilt-extension-compiler = "1.2.0"
hilt-work = "1.2.0"
kotlin = "2.1.0"
Expand All @@ -24,13 +24,13 @@ material = "1.12.0"
media3 = "1.5.1"
navigation = "2.8.5"
okhttp = "5.0.0-alpha.14"
okio = "3.9.1"
okio = "3.10.2"
paging = "3.3.5"
preference = "1.2.1"
recyclerview = "1.3.2"
recyclerview = "1.4.0"
retrofit = "2.11.0"
room = "2.6.1"
serialization = "1.7.3"
serialization = "1.8.0"
swiperefreshlayout = "1.1.0"
viewpager2 = "1.1.0"
webkit = "1.12.1"
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
3 changes: 1 addition & 2 deletions gradlew
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,7 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
Expand Down

0 comments on commit c320769

Please sign in to comment.