Added Res. & Image Load Crash Fix

This commit is contained in:
shabinder 2021-02-10 11:09:38 +05:30
parent f9120a1fb4
commit 9d892507c6
29 changed files with 90 additions and 79 deletions

View File

@ -1,3 +1,5 @@
@file:Suppress("FunctionName")
package com.shabinder.common.ui package com.shabinder.common.ui
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
@ -34,6 +36,9 @@ actual fun DownloadImageArrow(modifier: Modifier){
@Composable @Composable
actual fun DownloadAllImage() = vectorResource(R.drawable.ic_download_arrow) actual fun DownloadAllImage() = vectorResource(R.drawable.ic_download_arrow)
@Composable
actual fun ShareImage() = vectorResource(R.drawable.ic_share_open)
@Composable @Composable
actual fun PlaceHolderImage() = vectorResource(R.drawable.music) actual fun PlaceHolderImage() = vectorResource(R.drawable.music)

View File

@ -3,6 +3,9 @@ package com.shabinder.common.ui
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState import androidx.compose.runtime.MutableState
import com.shabinder.common.database.appContext import com.shabinder.common.database.appContext
import kotlinx.coroutines.Dispatchers
actual val dispatcherIO = Dispatchers.IO
@Composable @Composable
actual fun Toast( actual fun Toast(

View File

@ -21,6 +21,7 @@ import com.shabinder.common.ui.*
import com.shabinder.common.ui.SpotiFlyerTypography import com.shabinder.common.ui.SpotiFlyerTypography
import com.shabinder.common.ui.colorAccent import com.shabinder.common.ui.colorAccent
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@Composable @Composable
@ -67,7 +68,7 @@ fun TrackCard(
Row(verticalAlignment = Alignment.CenterVertically,modifier = Modifier.fillMaxWidth().padding(horizontal = 8.dp)) { Row(verticalAlignment = Alignment.CenterVertically,modifier = Modifier.fillMaxWidth().padding(horizontal = 8.dp)) {
var pic by mutableStateOf<ImageBitmap?>(null) var pic by mutableStateOf<ImageBitmap?>(null)
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()
scope.launch { scope.launch(Dispatchers.Unconfined) {
pic = loadImage(track.albumArtURL) pic = loadImage(track.albumArtURL)
} }
ImageLoad( ImageLoad(
@ -127,7 +128,7 @@ fun CoverImage(
horizontalAlignment = Alignment.CenterHorizontally horizontalAlignment = Alignment.CenterHorizontally
) { ) {
var pic by mutableStateOf<ImageBitmap?>(null) var pic by mutableStateOf<ImageBitmap?>(null)
scope.launch { scope.launch(Dispatchers.Unconfined) {
pic = loadImage(coverURL) pic = loadImage(coverURL)
} }
ImageLoad( ImageLoad(

View File

@ -348,7 +348,7 @@ fun DownloadRecordItem(
} }
} }
Image( Image(
imageVector = Icons.Rounded.Share, imageVector = ShareImage(),
"Research", "Research",
modifier = Modifier.clickable(onClick = { modifier = Modifier.clickable(onClick = {
//if(!isOnline(ctx)) showDialog("Check Your Internet Connection") else //if(!isOnline(ctx)) showDialog("Check Your Internet Connection") else

View File

@ -14,7 +14,6 @@ import com.shabinder.common.main.SpotiFlyerMain
import com.shabinder.common.root.SpotiFlyerRoot import com.shabinder.common.root.SpotiFlyerRoot
import com.shabinder.common.root.SpotiFlyerRoot.Child import com.shabinder.common.root.SpotiFlyerRoot.Child
import com.shabinder.common.root.SpotiFlyerRoot.Dependencies import com.shabinder.common.root.SpotiFlyerRoot.Dependencies
import com.shabinder.common.ui.showPopUpMessage
import com.shabinder.common.utils.Consumer import com.shabinder.common.utils.Consumer
internal class SpotiFlyerRootImpl( internal class SpotiFlyerRootImpl(
@ -57,12 +56,10 @@ internal class SpotiFlyerRootImpl(
} }
) )
private fun onMainOutput(output: SpotiFlyerMain.Output){ private fun onMainOutput(output: SpotiFlyerMain.Output) =
showPopUpMessage("Button Pressed")
when (output) { when (output) {
is SpotiFlyerMain.Output.Search -> router.push(Configuration.List(link = output.link)) is SpotiFlyerMain.Output.Search -> router.push(Configuration.List(link = output.link))
} }
}
private fun onListOutput(output: SpotiFlyerList.Output): Unit = private fun onListOutput(output: SpotiFlyerList.Output): Unit =
when (output) { when (output) {

View File

@ -1,3 +1,7 @@
package com.shabinder.common.ui package com.shabinder.common.ui
expect fun showPopUpMessage(text: String) import kotlinx.coroutines.CoroutineDispatcher
expect fun showPopUpMessage(text: String)
expect val dispatcherIO: CoroutineDispatcher

View File

@ -1,3 +1,4 @@
@file:Suppress("FunctionName")
package com.shabinder.common.ui package com.shabinder.common.ui
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
@ -17,6 +18,9 @@ expect fun DownloadImageTick()
@Composable @Composable
expect fun DownloadAllImage():ImageVector expect fun DownloadAllImage():ImageVector
@Composable
expect fun ShareImage():ImageVector
@Composable @Composable
expect fun PlaceHolderImage():ImageVector expect fun PlaceHolderImage():ImageVector

View File

@ -1,11 +0,0 @@
package com.shabinder.common.ui
import androidx.compose.foundation.Image
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.res.vectorXmlResource
import com.shabinder.common.di.Picture
import java.awt.image.BufferedImage
import java.io.ByteArrayOutputStream
import javax.imageio.ImageIO

View File

@ -0,0 +1,64 @@
@file:Suppress("FunctionName")
package com.shabinder.common.ui
import androidx.compose.foundation.Image
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.vectorXmlResource
@Composable
actual fun DownloadImageTick(){
Image(
vectorXmlResource("drawable/ic_tick.xml"),
"Downloaded"
)
}
@Composable
actual fun DownloadImageError(){
Image(
vectorXmlResource("drawable/ic_error.xml"),
"Can't Download"
)
}
@Composable
actual fun DownloadImageArrow(modifier: Modifier){
Image(
vectorXmlResource("drawable/ic_arrow.xml"),
"Download",
modifier
)
}
@Composable
actual fun DownloadAllImage():ImageVector = vectorXmlResource("drawable/ic_download_arrow.xml")
@Composable
actual fun ShareImage():ImageVector = vectorXmlResource("drawable/ic_share_open.xml")
@Composable
actual fun PlaceHolderImage():ImageVector = vectorXmlResource("drawable/music.xml")
@Composable
actual fun SpotiFlyerLogo():ImageVector = vectorXmlResource("drawable/ic_spotiflyer_logo.xml")
@Composable
actual fun HeartIcon():ImageVector = vectorXmlResource("drawable/ic_heart.xml")
@Composable
actual fun SpotifyLogo():ImageVector = vectorXmlResource("drawable/ic_spotify_logo.xml")
@Composable
actual fun YoutubeLogo():ImageVector = vectorXmlResource("drawable/ic_youtube.xml")
@Composable
actual fun GaanaLogo():ImageVector = vectorXmlResource("drawable/ic_gaana.xml")
@Composable
actual fun YoutubeMusicLogo():ImageVector = vectorXmlResource("drawable/ic_youtube_music_logo.xml")
@Composable
actual fun GithubLogo():ImageVector = vectorXmlResource("drawable/ic_github.xml")

View File

@ -15,10 +15,13 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
actual val dispatcherIO = Dispatchers.IO
private val message: MutableState<String> = mutableStateOf("") private val message: MutableState<String> = mutableStateOf("")
private val state: MutableState<Boolean> = mutableStateOf(false) private val state: MutableState<Boolean> = mutableStateOf(false)

View File

@ -1,60 +0,0 @@
package com.shabinder.common.ui
import androidx.compose.foundation.Image
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.vectorXmlResource
@Composable
actual fun DownloadImageTick(){
Image(
vectorXmlResource("common/compose-ui/src/main/res/drawable/ic_tick.xml"),
"Downloaded"
)
}
@Composable
actual fun DownloadImageError(){
Image(
vectorXmlResource("common/compose-ui/src/main/res/drawable/ic_error.xml"),
"Can't Download"
)
}
@Composable
actual fun DownloadImageArrow(modifier: Modifier){
Image(
vectorXmlResource("common/compose-ui/src/main/res/drawable/ic_arrow.xml"),
"Download",
modifier
)
}
@Composable
actual fun DownloadAllImage():ImageVector = vectorXmlResource("common/compose-ui/src/main/res/drawable/ic_download_arrow.xml")
@Composable
actual fun PlaceHolderImage():ImageVector = vectorXmlResource("common/compose-ui/src/main/res/drawable/music.xml")
@Composable
actual fun SpotiFlyerLogo():ImageVector = vectorXmlResource("common/compose-ui/src/main/res/drawable/ic_spotiflyer_logo.xml")
@Composable
actual fun HeartIcon():ImageVector = vectorXmlResource("common/compose-ui/src/main/res/drawable/ic_heart.xml")
@Composable
actual fun SpotifyLogo():ImageVector = vectorXmlResource("common/compose-ui/src/main/res/drawable/ic_spotify_logo.xml")
@Composable
actual fun YoutubeLogo():ImageVector = vectorXmlResource("common/compose-ui/src/main/res/drawable/ic_youtube.xml")
@Composable
actual fun GaanaLogo():ImageVector = vectorXmlResource("common/compose-ui/src/main/res/drawable/ic_gaana.xml")
@Composable
actual fun YoutubeMusicLogo():ImageVector = vectorXmlResource("common/compose-ui/src/main/res/drawable/ic_youtube_music_logo.xml")
@Composable
actual fun GithubLogo():ImageVector = vectorXmlResource("common/compose-ui/src/main/res/drawable/ic_github.xml")

View File

@ -7,6 +7,7 @@ import com.shabinder.common.models.TrackDetails
import io.ktor.client.request.* import io.ktor.client.request.*
import io.ktor.client.statement.* import io.ktor.client.statement.*
import io.ktor.http.* import io.ktor.http.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flow
import kotlin.math.roundToInt import kotlin.math.roundToInt