Browse Source

try-catch for anonymous user parsing

renovate/org.jetbrains.kotlinx-kotlinx-coroutines-test-1.x
Austin Huang 4 years ago
parent
commit
b135276fa2
No known key found for this signature in database GPG Key ID: 84C23AA04587A91F
  1. 2
      app/src/main/java/awais/instagrabber/viewmodels/ProfileFragmentViewModel.kt
  2. 14
      app/src/main/java/awais/instagrabber/webservices/GraphQLRepository.kt

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

@ -222,7 +222,7 @@ class ProfileFragmentViewModel(
private suspend fun fetchUser( private suspend fun fetchUser(
currentUser: User?, currentUser: User?,
stateUsername: String, stateUsername: String,
): User {
): User? {
if (currentUser != null) { if (currentUser != null) {
// logged in // logged in
val tempUser = userRepository.getUsernameInfo(stateUsername) val tempUser = userRepository.getUsernameInfo(stateUsername)

14
app/src/main/java/awais/instagrabber/webservices/GraphQLRepository.kt

@ -178,12 +178,15 @@ open class GraphQLRepository(private val service: GraphQLService) {
// TODO convert string response to a response class // TODO convert string response to a response class
open suspend fun fetchUser( open suspend fun fetchUser(
username: String, username: String,
): User {
): User? {
val response = service.getUser(username) val response = service.getUser(username)
val body = JSONObject(response
try {
val body = JSONObject(
response
.split("<script type=\"text/javascript\">window._sharedData = ").get(1) .split("<script type=\"text/javascript\">window._sharedData = ").get(1)
.split("</script>").get(0) .split("</script>").get(0)
.trim().replace(Regex("\\};$"), "}"))
.trim().replace(Regex("\\};$"), "}")
)
val userJson = body val userJson = body
.getJSONObject("entry_data") .getJSONObject("entry_data")
.getJSONArray("ProfilePage") .getJSONArray("ProfilePage")
@ -224,6 +227,11 @@ open class GraphQLRepository(private val service: GraphQLService) {
externalUrl = url, externalUrl = url,
) )
} }
catch (e: Exception) {
Log.e(TAG, "fetchUser failed", e)
return null
}
}
// TODO convert string response to a response class // TODO convert string response to a response class
suspend fun fetchPost( suspend fun fetchPost(

Loading…
Cancel
Save