mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 14:27:57 +01:00 
			
		
		
		
	This commit is contained in:
		| @@ -112,11 +112,7 @@ class Myanimelist(private val context: Context, id: Int) : TrackService(id) { | ||||
|                 .toCompletable() | ||||
|     } | ||||
|  | ||||
|     // Attempt to login again if cookies have been cleared but credentials are still filled | ||||
|     fun ensureLoggedIn() { | ||||
|         if (isAuthorized) return | ||||
|         if (!isLogged) throw Exception("MAL Login Credentials not found") | ||||
|  | ||||
|     fun refreshLogin() { | ||||
|         val username = getUsername() | ||||
|         val password = getPassword() | ||||
|         logout() | ||||
| @@ -131,6 +127,14 @@ class Myanimelist(private val context: Context, id: Int) : TrackService(id) { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     // Attempt to login again if cookies have been cleared but credentials are still filled | ||||
|     fun ensureLoggedIn() { | ||||
|         if (isAuthorized) return | ||||
|         if (!isLogged) throw Exception("MAL Login Credentials not found") | ||||
|  | ||||
|         refreshLogin() | ||||
|     } | ||||
|  | ||||
|     override fun logout() { | ||||
|         super.logout() | ||||
|         preferences.trackToken(this).delete() | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| package eu.kanade.tachiyomi.data.track.myanimelist | ||||
|  | ||||
| import okhttp3.Interceptor | ||||
| import okhttp3.Request | ||||
| import okhttp3.RequestBody | ||||
| import okhttp3.Response | ||||
| import okio.Buffer | ||||
| @@ -11,18 +12,27 @@ class MyAnimeListInterceptor(private val myanimelist: Myanimelist): Interceptor | ||||
|     override fun intercept(chain: Interceptor.Chain): Response { | ||||
|         myanimelist.ensureLoggedIn() | ||||
|  | ||||
|         var request = chain.request() | ||||
|         request.body()?.let { | ||||
|         val request = chain.request() | ||||
|         var response = chain.proceed(updateRequest(request)) | ||||
|  | ||||
|         if (response.code() == 400){ | ||||
|             myanimelist.refreshLogin() | ||||
|             response = chain.proceed(updateRequest(request)) | ||||
|         } | ||||
|  | ||||
|         return response | ||||
|     } | ||||
|  | ||||
|     private fun updateRequest(request: Request): Request { | ||||
|         return request.body()?.let { | ||||
|             val contentType = it.contentType().toString() | ||||
|             val updatedBody = when { | ||||
|                 contentType.contains("x-www-form-urlencoded") -> updateFormBody(it) | ||||
|                 contentType.contains("json") -> updateJsonBody(it) | ||||
|                 else -> it | ||||
|             } | ||||
|             request = request.newBuilder().post(updatedBody).build() | ||||
|         } | ||||
|  | ||||
|         return chain.proceed(request) | ||||
|             request.newBuilder().post(updatedBody).build() | ||||
|         } ?: request | ||||
|     } | ||||
|  | ||||
|     private fun bodyToString(requestBody: RequestBody): String { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user