@@ -148,13 +148,16 @@ object ThumbnailsRequester : KoinComponent {
148148 }
149149
150150 private fun buildThumbnailImageLoader (account : Account ): ImageLoader {
151- val openCloudClient = clientManager.getClientForCoilThumbnails(account.name)
152151 val interceptor = CoilRequestHeaderInterceptor (clientManager, account.name)
153152 return ImageLoader (appContext).newBuilder()
154- .okHttpClient(
155- openCloudClient.okHttpClient.newBuilder()
153+ .okHttpClient {
154+ // Lazy: deferred to first image request (off main thread).
155+ // getClientForCoilThumbnails calls blockingGetAuthToken which
156+ // must not run on the main thread.
157+ clientManager.getClientForCoilThumbnails(account.name)
158+ .okHttpClient.newBuilder()
156159 .addInterceptor(interceptor).build()
157- )
160+ }
158161 .apply { if (preferencesProvider.getBoolean(" enable_logging" , false )) logger(DebugLogger ()) }
159162 .memoryCache { sharedMemoryCache }
160163 .diskCache { sharedDiskCache }
@@ -163,15 +166,15 @@ object ThumbnailsRequester : KoinComponent {
163166 }
164167
165168 private fun buildAvatarImageLoader (account : Account ): ImageLoader {
166- val openCloudClient = clientManager.getClientForCoilThumbnails(account.name)
167169 val interceptor = CoilRequestHeaderInterceptor (clientManager, account.name)
168170 return ImageLoader (appContext).newBuilder()
169- .okHttpClient(
170- openCloudClient.okHttpClient.newBuilder()
171+ .okHttpClient {
172+ clientManager.getClientForCoilThumbnails(account.name)
173+ .okHttpClient.newBuilder()
171174 .addInterceptor(interceptor)
172175 .cache(avatarHttpCache)
173176 .build()
174- )
177+ }
175178 .apply { if (preferencesProvider.getBoolean(" enable_logging" , false )) logger(DebugLogger ()) }
176179 .memoryCache { sharedMemoryCache }
177180 // No Coil disk cache — OkHttp's HTTP cache handles persistence
@@ -187,7 +190,18 @@ object ThumbnailsRequester : KoinComponent {
187190 ) : Interceptor {
188191
189192 override fun intercept (chain : Interceptor .Chain ): Response {
190- val openCloudClient = clientManager.getClientForCoilThumbnails(accountName)
193+ val openCloudClient = try {
194+ clientManager.getClientForCoilThumbnails(accountName)
195+ } catch (e: Exception ) {
196+ Timber .d(e, " Account $accountName not found, skipping thumbnail request" )
197+ return Response .Builder ()
198+ .request(chain.request())
199+ .protocol(okhttp3.Protocol .HTTP_1_1 )
200+ .code(401 )
201+ .message(" Account not found" )
202+ .body(okhttp3.ResponseBody .create(null , " " ))
203+ .build()
204+ }
191205 val credentials = openCloudClient.credentials
192206 ? : return Response .Builder ()
193207 .request(chain.request())
0 commit comments