Skip to content

Commit d02f1bd

Browse files
committed
refactor: Don't use context receiver
Deprecated on Kotlin 2.x, scheduled for removal in v2.1.x, will be replaced with context parameters REF: Kotlin/KEEP#259 (comment) REF: https://youtrack.jetbrains.com/issue/KT-67119/Migration-warning-from-context-receivers-to-context-parameters REF: Kotlin/KEEP#367
1 parent 1b92ae2 commit d02f1bd

File tree

17 files changed

+266
-348
lines changed

17 files changed

+266
-348
lines changed

app/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,6 @@ tasks {
278278
// See https://kotlinlang.org/docs/reference/experimental.html#experimental-status-of-experimental-api(-markers)
279279
withType<KotlinCompile> {
280280
compilerOptions.freeCompilerArgs.addAll(
281-
"-Xcontext-receivers",
282281
// "-opt-in=kotlin.Experimental",
283282
"-opt-in=kotlin.RequiresOptIn",
284283
"-opt-in=kotlin.ExperimentalStdlibApi",

app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,13 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
4949
put("completedAt", createDate(track.finished_reading_date))
5050
}
5151
}
52-
with(json) {
53-
authClient.newCall(POST(API_URL, body = payload.toString().toRequestBody(jsonMime)))
54-
.awaitSuccess()
55-
.parseAs<ALAddMangaResult>()
56-
.let {
57-
track.library_id = it.data.entry.id
58-
track
59-
}
60-
}
52+
authClient.newCall(POST(API_URL, body = payload.toString().toRequestBody(jsonMime)))
53+
.awaitSuccess()
54+
.parseAs<ALAddMangaResult>()
55+
.let {
56+
track.library_id = it.data.entry.id
57+
track
58+
}
6159
}
6260
}
6361

@@ -74,11 +72,9 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
7472
put("completedAt", createDate(track.finished_reading_date))
7573
}
7674
}
77-
with(json) {
78-
authClient.newCall(POST(API_URL, body = payload.toString().toRequestBody(jsonMime)))
79-
.awaitSuccess()
80-
track
81-
}
75+
authClient.newCall(POST(API_URL, body = payload.toString().toRequestBody(jsonMime)))
76+
.awaitSuccess()
77+
track
8278
}
8379
}
8480

@@ -90,13 +86,11 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
9086
put("query", search)
9187
}
9288
}
93-
with(json) {
94-
authClient.newCall(POST(API_URL, body = payload.toString().toRequestBody(jsonMime)))
95-
.awaitSuccess()
96-
.parseAs<ALSearchResult>()
97-
.data.page.media
98-
.map { it.toALManga().toTrack() }
99-
}
89+
authClient.newCall(POST(API_URL, body = payload.toString().toRequestBody(jsonMime)))
90+
.awaitSuccess()
91+
.parseAs<ALSearchResult>()
92+
.data.page.media
93+
.map { it.toALManga().toTrack() }
10094
}
10195
}
10296

@@ -109,15 +103,13 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
109103
put("manga_id", track.media_id)
110104
}
111105
}
112-
with(json) {
113-
authClient.newCall(POST(API_URL, body = payload.toString().toRequestBody(jsonMime)))
114-
.awaitSuccess()
115-
.parseAs<ALUserListMangaQueryResult>()
116-
.data.page.mediaList
117-
.map { it.toALUserManga() }
118-
.firstOrNull()
119-
?.toTrack()
120-
}
106+
authClient.newCall(POST(API_URL, body = payload.toString().toRequestBody(jsonMime)))
107+
.awaitSuccess()
108+
.parseAs<ALUserListMangaQueryResult>()
109+
.data.page.mediaList
110+
.map { it.toALUserManga() }
111+
.firstOrNull()
112+
?.toTrack()
121113
}
122114
}
123115

app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt

Lines changed: 28 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -75,29 +75,25 @@ class BangumiApi(
7575
.appendQueryParameter("responseGroup", "large")
7676
.appendQueryParameter("max_results", "20")
7777
.build()
78-
with(json) {
79-
authClient.newCall(GET(url.toString()))
80-
.awaitSuccess()
81-
.parseAs<BGMSearchResult>()
82-
.let { result ->
83-
if (result.code == 404) emptyList<TrackSearch>()
84-
85-
result.list
86-
?.map { it.toTrackSearch(trackId) }
87-
.orEmpty()
88-
}
89-
}
78+
authClient.newCall(GET(url.toString()))
79+
.awaitSuccess()
80+
.parseAs<BGMSearchResult>()
81+
.let { result ->
82+
if (result.code == 404) emptyList<TrackSearch>()
83+
84+
result.list
85+
?.map { it.toTrackSearch(trackId) }
86+
.orEmpty()
87+
}
9088
}
9189
}
9290

9391
suspend fun findLibManga(track: Track): Track? {
9492
return withIOContext {
95-
with(json) {
96-
authClient.newCall(GET("$API_URL/subject/${track.media_id}"))
97-
.awaitSuccess()
98-
.parseAs<BGMSearchItem>()
99-
.toTrackSearch(trackId)
100-
}
93+
authClient.newCall(GET("$API_URL/subject/${track.media_id}"))
94+
.awaitSuccess()
95+
.parseAs<BGMSearchItem>()
96+
.toTrackSearch(trackId)
10197
}
10298
}
10399

@@ -111,29 +107,25 @@ class BangumiApi(
111107
.build()
112108

113109
// TODO: get user readed chapter here
114-
with(json) {
115-
authClient.newCall(requestUserRead)
116-
.awaitSuccess()
117-
.parseAs<BGMCollectionResponse>()
118-
.let {
119-
if (it.code == 400) return@let null
120-
121-
track.status = it.status?.id?.toInt() ?: Bangumi.DEFAULT_STATUS
122-
track.last_chapter_read = it.epStatus!!.toFloat()
123-
track.score = it.rating!!.toFloat()
124-
track
125-
}
126-
}
110+
authClient.newCall(requestUserRead)
111+
.awaitSuccess()
112+
.parseAs<BGMCollectionResponse>()
113+
.let {
114+
if (it.code == 400) return@let null
115+
116+
track.status = it.status?.id?.toInt() ?: Bangumi.DEFAULT_STATUS
117+
track.last_chapter_read = it.epStatus!!.toFloat()
118+
track.score = it.rating!!.toFloat()
119+
track
120+
}
127121
}
128122
}
129123

130124
suspend fun accessToken(code: String): BGMOAuth {
131125
return withIOContext {
132-
with(json) {
133-
client.newCall(accessTokenRequest(code))
134-
.awaitSuccess()
135-
.parseAs()
136-
}
126+
client.newCall(accessTokenRequest(code))
127+
.awaitSuccess()
128+
.parseAs()
137129
}
138130
}
139131

app/src/main/java/eu/kanade/tachiyomi/data/track/kavita/KavitaApi.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class KavitaApi(private val client: OkHttpClient, interceptor: KavitaInterceptor
4444
try {
4545
client.newCall(request).execute().use {
4646
when (it.code) {
47-
200 -> return with(json) { it.parseAs<AuthenticationDto>().token }
47+
200 -> return it.parseAs<AuthenticationDto>().token
4848
401 -> {
4949
Logger.w { "Unauthorized / api key not valid: Cleaned api URL: $apiUrl, Api key is empty: ${apiKey.isEmpty()}" }
5050
throw IOException("Unauthorized / api key not valid")
@@ -89,11 +89,10 @@ class KavitaApi(private val client: OkHttpClient, interceptor: KavitaInterceptor
8989
private fun getTotalChapters(url: String): Long {
9090
val requestUrl = getApiVolumesUrl(url)
9191
try {
92-
val listVolumeDto = with(json) {
92+
val listVolumeDto =
9393
authClient.newCall(GET(requestUrl))
9494
.execute()
9595
.parseAs<List<VolumeDto>>()
96-
}
9796
var volumeNumber = 0L
9897
var maxChapterNumber = 0L
9998
for (volume in listVolumeDto) {
@@ -117,9 +116,7 @@ class KavitaApi(private val client: OkHttpClient, interceptor: KavitaInterceptor
117116
try {
118117
authClient.newCall(GET(requestUrl)).execute().use {
119118
if (it.code == 200) {
120-
return with(json) {
121-
it.parseAs<ChapterDto>().number!!.replace(",", ".").toFloat()
122-
}
119+
return it.parseAs<ChapterDto>().number!!.replace(",", ".").toFloat()
123120
}
124121
if (it.code == 204) {
125122
return 0F
@@ -134,11 +131,10 @@ class KavitaApi(private val client: OkHttpClient, interceptor: KavitaInterceptor
134131

135132
suspend fun getTrackSearch(url: String): TrackSearch = withIOContext {
136133
try {
137-
val serieDto: SeriesDto = with(json) {
134+
val serieDto: SeriesDto =
138135
authClient.newCall(GET(url))
139136
.awaitSuccess()
140137
.parseAs()
141-
}
142138

143139
val track = serieDto.toTrack()
144140
track.apply {

app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt

Lines changed: 48 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -131,14 +131,12 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
131131

132132
suspend fun search(query: String): List<TrackSearch> {
133133
return withIOContext {
134-
with(json) {
135-
authClient.newCall(GET(ALGOLIA_KEY_URL))
136-
.awaitSuccess()
137-
.parseAs<KitsuSearchResult>()
138-
.let {
139-
algoliaSearch(it.media.key, query)
140-
}
141-
}
134+
authClient.newCall(GET(ALGOLIA_KEY_URL))
135+
.awaitSuccess()
136+
.parseAs<KitsuSearchResult>()
137+
.let {
138+
algoliaSearch(it.media.key, query)
139+
}
142140
}
143141
}
144142

@@ -147,25 +145,23 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
147145
val jsonObject = buildJsonObject {
148146
put("params", "query=$query$ALGOLIA_FILTER")
149147
}
150-
with(json) {
151-
client.newCall(
152-
POST(
153-
ALGOLIA_URL,
154-
headers = headersOf(
155-
"X-Algolia-Application-Id",
156-
ALGOLIA_APP_ID,
157-
"X-Algolia-API-Key",
158-
key,
159-
),
160-
body = jsonObject.toString().toRequestBody(jsonMime),
148+
client.newCall(
149+
POST(
150+
ALGOLIA_URL,
151+
headers = headersOf(
152+
"X-Algolia-Application-Id",
153+
ALGOLIA_APP_ID,
154+
"X-Algolia-API-Key",
155+
key,
161156
),
162-
)
163-
.awaitSuccess()
164-
.parseAs<KitsuAlgoliaSearchResult>()
165-
.hits
166-
.filter { it.subtype != "novel" }
167-
.map { it.toTrack() }
168-
}
157+
body = jsonObject.toString().toRequestBody(jsonMime),
158+
),
159+
)
160+
.awaitSuccess()
161+
.parseAs<KitsuAlgoliaSearchResult>()
162+
.hits
163+
.filter { it.subtype != "novel" }
164+
.map { it.toTrack() }
169165
}
170166
}
171167

@@ -175,18 +171,16 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
175171
.encodedQuery("filter[manga_id]=${track.media_id}&filter[user_id]=$userId")
176172
.appendQueryParameter("include", "manga")
177173
.build()
178-
with(json) {
179-
authClient.newCall(GET(url.toString()))
180-
.awaitSuccess()
181-
.parseAs<KitsuListSearchResult>()
182-
.let {
183-
if (it.data.isNotEmpty() && it.included.isNotEmpty()) {
184-
it.firstToTrack()
185-
} else {
186-
null
187-
}
174+
authClient.newCall(GET(url.toString()))
175+
.awaitSuccess()
176+
.parseAs<KitsuListSearchResult>()
177+
.let {
178+
if (it.data.isNotEmpty() && it.included.isNotEmpty()) {
179+
it.firstToTrack()
180+
} else {
181+
null
188182
}
189-
}
183+
}
190184
}
191185
}
192186

@@ -196,18 +190,16 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
196190
.encodedQuery("filter[id]=${track.media_id}")
197191
.appendQueryParameter("include", "manga")
198192
.build()
199-
with(json) {
200-
authClient.newCall(GET(url.toString()))
201-
.awaitSuccess()
202-
.parseAs<KitsuListSearchResult>()
203-
.let {
204-
if (it.data.isNotEmpty() && it.included.isNotEmpty()) {
205-
it.firstToTrack()
206-
} else {
207-
throw Exception("Could not find manga")
208-
}
193+
authClient.newCall(GET(url.toString()))
194+
.awaitSuccess()
195+
.parseAs<KitsuListSearchResult>()
196+
.let {
197+
if (it.data.isNotEmpty() && it.included.isNotEmpty()) {
198+
it.firstToTrack()
199+
} else {
200+
throw Exception("Could not find manga")
209201
}
210-
}
202+
}
211203
}
212204
}
213205

@@ -220,11 +212,9 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
220212
.add("client_id", CLIENT_ID)
221213
.add("client_secret", CLIENT_SECRET)
222214
.build()
223-
with(json) {
224-
client.newCall(POST(LOGIN_URL, body = formBody))
225-
.awaitSuccess()
226-
.parseAs()
227-
}
215+
client.newCall(POST(LOGIN_URL, body = formBody))
216+
.awaitSuccess()
217+
.parseAs()
228218
}
229219
}
230220

@@ -233,13 +223,11 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
233223
val url = "${BASE_URL}users".toUri().buildUpon()
234224
.encodedQuery("filter[self]=true")
235225
.build()
236-
with(json) {
237-
authClient.newCall(GET(url.toString()))
238-
.awaitSuccess()
239-
.parseAs<KitsuCurrentUserResult>()
240-
.data[0]
241-
.id
242-
}
226+
authClient.newCall(GET(url.toString()))
227+
.awaitSuccess()
228+
.parseAs<KitsuCurrentUserResult>()
229+
.data[0]
230+
.id
243231
}
244232
}
245233

0 commit comments

Comments
 (0)