Skip to content

Commit 78bb059

Browse files
committed
Refactoring
1 parent bb80676 commit 78bb059

File tree

17 files changed

+258
-156
lines changed

17 files changed

+258
-156
lines changed

app/build.gradle

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ android {
99
buildToolsVersion "30.0.3"
1010
defaultConfig {
1111
applicationId "com.gapps.videonoapi"
12-
minSdkVersion 19
12+
minSdkVersion 21
1313
targetSdkVersion 31
1414
versionCode 1
1515
versionName "1.0"
@@ -26,8 +26,8 @@ android {
2626

2727
dependencies {
2828
implementation fileTree(dir: 'libs', include: ['*.jar'])
29-
implementation 'androidx.appcompat:appcompat:1.4.1'
30-
implementation 'androidx.core:core-ktx:1.7.0'
29+
implementation 'androidx.appcompat:appcompat:1.4.2'
30+
implementation 'androidx.core:core-ktx:1.8.0'
3131

3232
implementation 'com.squareup.okhttp3:okhttp:4.9.3'
3333
implementation 'com.squareup.okhttp3:logging-interceptor:4.9.3'
@@ -36,6 +36,7 @@ dependencies {
3636
implementation(project(':embedded_video_lib'))
3737

3838
implementation 'androidx.recyclerview:recyclerview:1.2.1'
39-
implementation 'com.squareup.picasso:picasso:2.71828'
39+
implementation("io.coil-kt:coil:2.1.0")
40+
implementation("io.coil-kt:coil-gif:2.1.0")
4041
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
4142
}

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
android:roundIcon="@mipmap/ic_launcher_round"
1313
android:supportsRtl="true"
1414
android:theme="@style/AppTheme"
15+
android:name=".app.App"
1516
android:usesCleartextTraffic="true"
1617
tools:targetApi="m">
1718
<activity
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.gapps.videonoapi.app
2+
3+
import android.app.Application
4+
import android.os.Build.VERSION.SDK_INT
5+
import coil.Coil
6+
import coil.ImageLoader
7+
import coil.decode.GifDecoder
8+
import coil.decode.ImageDecoderDecoder
9+
10+
class App : Application() {
11+
override fun onCreate() {
12+
super.onCreate()
13+
iniCoil()
14+
}
15+
16+
private fun iniCoil() {
17+
val imageLoader = ImageLoader.Builder(this)
18+
.components {
19+
if (SDK_INT >= 28) {
20+
add(ImageDecoderDecoder.Factory())
21+
} else {
22+
add(GifDecoder.Factory())
23+
}
24+
}
25+
.build()
26+
27+
Coil.setImageLoader(imageLoader)
28+
}
29+
}

app/src/main/java/com/gapps/videonoapi/ui/main/MainActivity.kt

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
package com.gapps.videonoapi.ui.main
22

3-
import android.content.*
3+
import android.content.Intent
44
import android.os.Bundle
55
import androidx.recyclerview.widget.LinearLayoutManager
66
import com.gapps.library.api.VideoService
77
import com.gapps.library.api.models.video.VideoPreviewModel
88
import com.gapps.library.utils.isVideoUrl
99
import com.gapps.videonoapi.R
10-
import com.gapps.videonoapi.ui.text.TextActivity
11-
import com.gapps.videonoapi.ui.main.adapters.VideoAdapter
12-
import com.gapps.videonoapi.video_utils.abraira.UltimediaVideoInfoModel
1310
import com.gapps.videonoapi.ui.base.BaseActivity
14-
import com.gapps.videonoapi.utils.recycler_view.MarginItemDecoration
15-
import com.gapps.videonoapi.utils.scroll.ScrollListener
11+
import com.gapps.videonoapi.ui.main.adapters.VideoAdapter
12+
import com.gapps.videonoapi.ui.text.TextActivity
1613
import com.gapps.videonoapi.utils.extensions.alphaSmooth
1714
import com.gapps.videonoapi.utils.extensions.convertDpToPx
15+
import com.gapps.videonoapi.utils.recycler_view.MarginItemDecoration
16+
import com.gapps.videonoapi.utils.scroll.ScrollListener
17+
import com.gapps.videonoapi.video_utils.ultimedia.UltimediaVideoInfoModel
1818
import com.gapps.videonoapi.video_utils.youtube.MyYoutubeVideoInfoModel
1919
import kotlinx.android.synthetic.main.activity_main.*
2020
import okhttp3.OkHttpClient
@@ -67,8 +67,8 @@ class MainActivity : BaseActivity() {
6767
videoService = VideoService.build {
6868
with(this@MainActivity)
6969
httpClient(okHttpClient)
70-
enableCache(true)
71-
enableLog(false)
70+
enableCache(false)
71+
enableLog(true)
7272
withCustomVideoInfoModels(UltimediaVideoInfoModel(), MyYoutubeVideoInfoModel())
7373
}
7474
}
@@ -77,11 +77,16 @@ class MainActivity : BaseActivity() {
7777
videos_list.apply {
7878
layoutManager = LinearLayoutManager(this@MainActivity)
7979
val videoAdapter =
80-
VideoAdapter(this@MainActivity, videoService, object : VideoAdapter.Listener {
81-
override fun onItemClick(item: VideoPreviewModel) {
82-
showVideo(item)
80+
VideoAdapter(
81+
context = this@MainActivity,
82+
videoService = videoService,
83+
listener = object : VideoAdapter.Listener {
84+
override fun onItemClick(item: VideoPreviewModel) {
85+
showVideo(item)
86+
}
8387
}
84-
})
88+
)
89+
8590
adapter = videoAdapter.apply {
8691
swapData(getValidUrls())
8792
}
@@ -90,7 +95,7 @@ class MainActivity : BaseActivity() {
9095
buttons_container.alphaSmooth(if (it) .1f else 1f)
9196
})
9297

93-
addItemDecoration(MarginItemDecoration(videoAdapter, top = false, bottom = true))
98+
// addItemDecoration(MarginItemDecoration(videoAdapter, top = false, bottom = true))
9499
}
95100

96101
text_test.setOnClickListener {

app/src/main/java/com/gapps/videonoapi/ui/main/adapters/VideoAdapter.kt

Lines changed: 47 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,17 @@ import android.view.LayoutInflater
77
import android.view.View
88
import android.view.ViewGroup
99
import android.widget.ImageView
10+
import androidx.core.view.isVisible
1011
import androidx.recyclerview.widget.RecyclerView
12+
import coil.load
1113
import com.gapps.library.api.VideoService
1214
import com.gapps.library.api.models.video.VideoPreviewModel
13-
import com.gapps.library.utils.getWidth
1415
import com.gapps.videonoapi.R
15-
import com.gapps.videonoapi.utils.extensions.*
16-
import com.gapps.videonoapi.utils.picasso.FitThumbnailTransformation
16+
import com.gapps.videonoapi.utils.extensions.collapse
17+
import com.gapps.videonoapi.utils.extensions.convertDpToPx
18+
import com.gapps.videonoapi.utils.extensions.expand
19+
import com.gapps.videonoapi.utils.extensions.toggleArrow
1720
import com.gapps.videonoapi.utils.recycler_view.MarginItemDecoration
18-
import com.squareup.picasso.Picasso
1921
import kotlinx.android.synthetic.main.item_video.view.*
2022

2123

@@ -80,27 +82,33 @@ class VideoAdapter(
8082

8183
video_link.text = item
8284

83-
progress.visibleOrGone(isNeedToLoadData)
84-
icon_drop_down.visibleOrGone(isNeedToLoadData.not())
85-
video_preview_container.visibleOrGone(isVideoDataVisible)
86-
text_preview.visibleOrGone(loadedDataItem?.videoTitle != null)
85+
progress.isVisible = isNeedToLoadData
86+
icon_drop_down.isVisible = isNeedToLoadData.not()
87+
video_preview_container.isVisible = isVideoDataVisible
88+
text_preview.isVisible = loadedDataItem?.videoTitle != null
8789

8890
icon_drop_down.toggleArrow(isVideoDataVisible, 0)
8991

9092
if (loadedDataItem == null) {
91-
videoService.loadVideoPreview(item,
92-
{ video ->
93-
loadedData.put(adapterPosition, video)
93+
videoService.loadVideoPreview(
94+
url = item,
95+
onSuccess = { video ->
96+
loadedData.put(bindingAdapterPosition, video)
9497
loadedDataItem = video
9598

9699
initVideoView(video)
97100
},
98-
{ url, error ->
99-
Log.e("MainActivity", "$error \n $url")
101+
onError = { url, errorMessage ->
102+
Log.e("MainActivity", "$errorMessage \n $url")
100103

101-
val video = VideoPreviewModel.error(url, error)
104+
val video = VideoPreviewModel.Builder()
105+
.setUrl(url)
106+
.setVideoTitle("Not found")
107+
.setErrorMessage(errorMessage)
108+
.setThumbnailUrl("https://c.tenor.com/IHdlTRsmcS4AAAAM/404.gif")
109+
.build()
102110

103-
loadedData.put(adapterPosition, video)
111+
loadedData.put(bindingAdapterPosition, video)
104112
loadedDataItem = video
105113

106114
initVideoView(video)
@@ -113,45 +121,44 @@ class VideoAdapter(
113121
loadedDataItem ?: return@setOnClickListener
114122

115123
val isExpanded = toggleLayoutExpand(
116-
(dataExpanded[adapterPosition] ?: false).not(),
124+
(dataExpanded[bindingAdapterPosition] ?: false).not(),
117125
icon_drop_down,
118126
video_preview_container
119127
)
120128

121-
dataExpanded.put(adapterPosition, isExpanded)
122-
}
123-
124-
video_preview_container.setOnClickListener {
125-
val model = loadedDataItem ?: return@setOnClickListener
126-
127-
listener.onItemClick(model)
129+
dataExpanded.put(bindingAdapterPosition, isExpanded)
128130
}
129131
}
130132

131133
private fun initVideoView(video: VideoPreviewModel?) = with(itemView) {
132134
video ?: return
133135

134-
progress.gone()
135-
icon_drop_down.visible()
136-
text_preview.visibleOrGone(video.videoTitle.isNullOrBlank().not())
137-
138-
Picasso.get()
139-
.load(video.thumbnailUrl)
140-
.error(R.drawable.image_shop_1)
141-
.transform(
142-
FitThumbnailTransformation(
143-
context.getWidth(
144-
context.resources.getDimensionPixelSize(
145-
com.gapps.library.R.dimen.vna_bv_dialog_width
146-
)
147-
)
148-
)
149-
)
150-
.into(image_preview)
136+
val isError = video.errorMessage.isNullOrBlank().not()
137+
138+
progress.isVisible = false
139+
icon_drop_down.isVisible = true
140+
text_preview.isVisible = video.videoTitle.isNullOrBlank().not()
141+
142+
image_preview.load(video.thumbnailUrl) {
143+
placeholder(R.drawable.image_shop_1)
144+
error(R.drawable.image_shop_1)
145+
}
151146

152147
text_preview.text = video.videoTitle
153148

149+
image_play.isVisible = isError.not()
150+
154151
setVideoHostingLogo(video_host_logo, video.videoHosting)
152+
153+
if (isError) {
154+
video_preview_container.setOnClickListener(null)
155+
} else {
156+
video_preview_container.setOnClickListener {
157+
val model = loadedDataItem ?: return@setOnClickListener
158+
159+
listener.onItemClick(model)
160+
}
161+
}
155162
}
156163

157164
private fun toggleLayoutExpand(show: Boolean, arrowView: View, layout: View): Boolean {

app/src/main/java/com/gapps/videonoapi/ui/text/TextActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import com.gapps.library.api.VideoService
1212
import com.gapps.library.utils.patterns.PatternVideoLinksBuilder
1313
import com.gapps.library.utils.findVideos
1414
import com.gapps.videonoapi.R
15-
import com.gapps.videonoapi.video_utils.abraira.UltimediaVideoInfoModel
15+
import com.gapps.videonoapi.video_utils.ultimedia.UltimediaVideoInfoModel
1616
import com.gapps.videonoapi.ui.base.BaseActivity
1717
import kotlinx.android.synthetic.main.activity_text.*
1818
import okhttp3.OkHttpClient

app/src/main/java/com/gapps/videonoapi/utils/extensions/Context.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.gapps.videonoapi.utils.extensions
33
import android.content.Context
44
import android.util.TypedValue
55

6-
76
fun Context.convertDpToPx(dp: Float): Float {
87
return TypedValue.applyDimension(
98
TypedValue.COMPLEX_UNIT_DIP,

app/src/main/java/com/gapps/videonoapi/utils/picasso/FitThumbnailTransformation.kt

Lines changed: 0 additions & 24 deletions
This file was deleted.

app/src/main/java/com/gapps/videonoapi/video_utils/abraira/UltimediaVideoInfoModel.kt renamed to app/src/main/java/com/gapps/videonoapi/video_utils/ultimedia/UltimediaVideoInfoModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package com.gapps.videonoapi.video_utils.abraira
1+
package com.gapps.videonoapi.video_utils.ultimedia
22

33
import com.gapps.library.api.FORMAT
44
import com.gapps.library.api.FORMAT_JSON
55
import com.gapps.library.api.URL
66
import com.gapps.library.api.models.api.base.VideoInfoModel
7-
import com.gapps.videonoapi.video_utils.abraira.response.UltimediaResponse
7+
import com.gapps.videonoapi.video_utils.ultimedia.response.UltimediaResponse
88

99
class UltimediaVideoInfoModel : VideoInfoModel<UltimediaResponse>() {
1010
override val baseUrl: String

app/src/main/java/com/gapps/videonoapi/video_utils/abraira/response/UltimediaResponse.kt renamed to app/src/main/java/com/gapps/videonoapi/video_utils/ultimedia/response/UltimediaResponse.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.gapps.videonoapi.video_utils.abraira.response
1+
package com.gapps.videonoapi.video_utils.ultimedia.response
22

33

44
import com.gapps.library.api.models.video.VideoPreviewModel

0 commit comments

Comments
 (0)