77
88package com.nextcloud.utils
99
10+ import android.annotation.SuppressLint
1011import android.content.Context
1112import android.graphics.Bitmap
1213import android.graphics.drawable.Drawable
@@ -72,6 +73,7 @@ object GlideHelper {
7273 private fun <T > RequestBuilder<T>.withLogging (methodName : String , identifier : String ): RequestBuilder <T > =
7374 listener(GlideLogger (methodName, identifier))
7475
76+ @SuppressLint(" CheckResult" )
7577 private fun createSvgRequestBuilder (
7678 context : Context ,
7779 uri : Uri ,
@@ -96,63 +98,8 @@ object GlideHelper {
9698 .centerCrop()
9799 }
98100
99- fun loadIntoImageView (
100- context : Context ,
101- client : NextcloudClient ,
102- url : String? ,
103- imageView : ImageView ,
104- @DrawableRes placeholderRes : Int ,
105- circleCrop : Boolean = false
106- ) {
107- val validatedUrl = validateAndGetURL(url) ? : return
108-
109- if (isSVG(validatedUrl)) {
110- val uri = validateAndGetURI(validatedUrl) ? : return
111- val requestBuilder = createSvgRequestBuilder(context, uri, placeholderRes)
112- .withLogging(" loadIntoImageView" , validatedUrl)
113- if (circleCrop) {
114- requestBuilder.circleCrop().into(imageView)
115- } else {
116- requestBuilder.into(imageView)
117- }
118- } else {
119- val requestBuilder = createUrlRequestBuilder(context, client, validatedUrl)
120- .placeholder(placeholderRes)
121- .error(placeholderRes)
122- .withLogging(" loadIntoImageView" , validatedUrl)
123- if (circleCrop) {
124- requestBuilder.circleCrop().into(imageView)
125- } else {
126- requestBuilder.into(imageView)
127- }
128- }
129- }
130-
131- @Suppress(" TooGenericExceptionCaught" , " ReturnCount" )
132- fun getDrawable (context : Context , client : NextcloudClient , urlString : String? ): Drawable ? {
133- val validatedUrl = validateAndGetURL(urlString) ? : return null
134-
135- return try {
136- if (isSVG(validatedUrl)) {
137- val uri = validateAndGetURI(validatedUrl) ? : return null
138- createSvgRequestBuilder(context, uri)
139- .withLogging(" getDrawable" , validatedUrl)
140- .submit()
141- .get()
142- } else {
143- createUrlRequestBuilder(context, client, validatedUrl)
144- .withLogging(" getDrawable" , validatedUrl)
145- .submit()
146- .get()
147- }
148- } catch (e: Exception ) {
149- Log_OC .e(TAG , " Error getting drawable: $e " )
150- null
151- }
152- }
153-
154101 @Suppress(" TooGenericExceptionCaught" )
155- fun downloadImageSynchronous (context : Context , url : String? ): Bitmap ? {
102+ fun getBitmap (context : Context , url : String? ): Bitmap ? {
156103 val validatedUrl = validateAndGetURL(url) ? : return null
157104
158105 return try {
@@ -188,31 +135,55 @@ object GlideHelper {
188135 })
189136 }
190137
191- @Suppress(" UNCHECKED_CAST" , " TooGenericExceptionCaught" )
138+ @Suppress(" UNCHECKED_CAST" , " TooGenericExceptionCaught" , " ReturnCount" )
139+ private fun <T > createRequestBuilder (context : Context , client : NextcloudClient , url : String? ): RequestBuilder <T >? {
140+ val validatedUrl = validateAndGetURL(url) ? : return null
141+
142+ return try {
143+ val isSVG = isSVG(validatedUrl)
144+
145+ return if (isSVG) {
146+ val uri = validateAndGetURI(validatedUrl) ? : return null
147+ createSvgRequestBuilder(context, uri)
148+ } else {
149+ createUrlRequestBuilder(context, client, validatedUrl)
150+ }
151+ .withLogging(" createRequestBuilder" , validatedUrl) as RequestBuilder <T >?
152+ } catch (e: Exception ) {
153+ Log_OC .e(TAG , " Error createRequestBuilder: $e " )
154+ null
155+ }
156+ }
157+
158+ @SuppressLint(" CheckResult" )
159+ fun loadIntoImageView (
160+ context : Context ,
161+ client : NextcloudClient ,
162+ url : String? ,
163+ imageView : ImageView ,
164+ @DrawableRes placeholder : Int ,
165+ circleCrop : Boolean = false
166+ ) {
167+ createRequestBuilder<Drawable >(context, client, url)
168+ ?.placeholder(placeholder)
169+ ?.error(placeholder)
170+ ?.apply { if (circleCrop) circleCrop() }
171+ ?.into(imageView)
172+ }
173+
174+ fun getDrawable (context : Context , client : NextcloudClient , urlString : String? ): Drawable ? =
175+ createRequestBuilder<Drawable >(context, client, urlString)?.submit()?.get()
176+
192177 fun <T > loadIntoTarget (
193178 context : Context ,
194179 client : NextcloudClient ,
195180 url : String ,
196181 target : Target <T >,
197182 @DrawableRes placeholder : Int
198183 ) {
199- try {
200- val validatedUrl = validateAndGetURL(url) ? : return
201-
202- if (isSVG(validatedUrl)) {
203- val uri = validateAndGetURI(validatedUrl) ? : return
204- val requestBuilder = createSvgRequestBuilder(context, uri, placeholder)
205- .withLogging(" loadIntoTarget" , validatedUrl) as RequestBuilder <T >
206- requestBuilder.into(target)
207- } else {
208- val requestBuilder = createUrlRequestBuilder(context, client, validatedUrl)
209- .placeholder(placeholder)
210- .error(placeholder)
211- .withLogging(" loadIntoTarget" , validatedUrl) as RequestBuilder <T >
212- requestBuilder.into(target)
213- }
214- } catch (e: Exception ) {
215- Log_OC .e(TAG , " Failed to load into target: $e " )
216- }
184+ createRequestBuilder<T >(context, client, url)
185+ ?.placeholder(placeholder)
186+ ?.error(placeholder)
187+ ?.into(target)
217188 }
218189}
0 commit comments