Исправлена работа лайков и ссылок на профиль исполнителя.

This commit is contained in:
2024-02-24 00:07:15 +03:00
parent b2b12c473c
commit 7b1138c428
5 changed files with 138 additions and 10 deletions

View File

@@ -1,7 +1,6 @@
package it.hamy.muza.ui.components
import android.util.Log
import android.widget.Toast
import android.os.CountDownTimer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
@@ -11,6 +10,7 @@ import com.yandex.mobile.ads.banner.BannerAdSize
import com.yandex.mobile.ads.banner.BannerAdView
import com.yandex.mobile.ads.common.AdRequest
import com.yandex.mobile.ads.common.AdRequestError
import com.yandex.mobile.ads.common.AdTheme
import com.yandex.mobile.ads.common.ImpressionData
@Composable
@@ -24,17 +24,35 @@ fun YandexAdsBanner(id: String) {
/**
* Размер блока рекламы
*/
setAdSize(BannerAdSize.inlineSize(context, 140, 60))
setAdSize(BannerAdSize.inlineSize(context, 110, 110))
/**
* Билдер запроса
*/
val adRequest = AdRequest.Builder().build()
val adRequest = AdRequest.Builder()
.setPreferredTheme(AdTheme.DARK)
.build()
val timer = object : CountDownTimer(4000, 1000) {
override fun onTick(millisUntilFinished: Long) {
// Здесь можно выполнить действия, которые нужно сделать каждую секунду
}
override fun onFinish() {
// Здесь вызывается метод loadAd(adRequest) после истечения таймера
loadAd(adRequest)
// Здесь можно повторить таймер, чтобы он всегда повторялся
//start()
}
}
/**
* Слушатель экшнов
*/
setBannerAdEventListener(object : BannerAdEventListener {
override fun onAdLoaded() {
// Запускаем таймер
timer.start()
}
override fun onAdFailedToLoad(p0: AdRequestError) {
@@ -52,7 +70,7 @@ fun YandexAdsBanner(id: String) {
}
override fun onReturnedToApplication() {
loadAd(adRequest)
}
override fun onImpression(p0: ImpressionData?) {

View File

@@ -0,0 +1,90 @@
package it.hamy.muza.ui.components
import android.os.CountDownTimer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.viewinterop.AndroidView
import com.yandex.mobile.ads.banner.BannerAdEventListener
import com.yandex.mobile.ads.banner.BannerAdSize
import com.yandex.mobile.ads.banner.BannerAdView
import com.yandex.mobile.ads.common.AdRequest
import com.yandex.mobile.ads.common.AdRequestError
import com.yandex.mobile.ads.common.AdTheme
import com.yandex.mobile.ads.common.ImpressionData
@Composable
fun YandexAdsBannerQuickPicksCenter(id: String) {
AndroidView(modifier = Modifier.fillMaxSize(), factory = { context ->
BannerAdView(context).apply {
/**
* ID блока рекламы
*/
setAdUnitId(id)
/**
* Размер блока рекламы
*/
setAdSize(BannerAdSize.inlineSize(context, 260, 60))
/**
* Билдер запроса
*/
val adRequest = AdRequest.Builder()
.setPreferredTheme(AdTheme.DARK)
.build()
val timer = object : CountDownTimer(4000, 1000) {
override fun onTick(millisUntilFinished: Long) {
// Здесь можно выполнить действия, которые нужно сделать каждую секунду
}
override fun onFinish() {
// Здесь вызывается метод loadAd(adRequest) после истечения таймера
loadAd(adRequest)
// Здесь можно повторить таймер, чтобы он всегда повторялся
//start()
}
}
/**
* Слушатель экшнов
*/
setBannerAdEventListener(object : BannerAdEventListener {
override fun onAdLoaded() {
// Запускаем таймер
timer.start()
}
override fun onAdFailedToLoad(p0: AdRequestError) {
/**
* Тут дебажим ошибки
*/
loadAd(adRequest)
}
override fun onAdClicked() {
}
override fun onLeftApplication() {
}
override fun onReturnedToApplication() {
loadAd(adRequest)
}
override fun onImpression(p0: ImpressionData?) {
}
})
/**
* Запуск баннера
*/
loadAd(adRequest)
}
})
}

View File

@@ -23,8 +23,6 @@ import androidx.compose.foundation.lazy.grid.GridItemSpan
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.foundation.lazy.grid.items
import androidx.compose.foundation.lazy.grid.rememberLazyGridState
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
@@ -174,6 +172,10 @@ fun HomePlaylists(
}
}
item(key = "favorites") {
PlaylistItem(
icon = R.drawable.heart,
@@ -213,18 +215,23 @@ fun HomePlaylists(
.animateItemPlacement()
)
}
item {
Box(
modifier = Modifier
.fillMaxSize()
.padding(start = 14.dp, end = 10.dp, top = 30.dp)
.padding(start = 14.dp, end = 10.dp, top = 20.dp)
.align(Alignment.CenterHorizontally),
contentAlignment = Alignment.Center,
) {
YandexAdsBanner(id = "R-M-5961316-1")
}
}
}
}
FloatingActionsContainerWithScrollToTop(
lazyGridState = lazyGridState,

View File

@@ -7,6 +7,7 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.gestures.snapping.rememberSnapFlingBehavior
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
@@ -35,6 +36,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
@@ -51,6 +53,7 @@ import it.hamy.muza.models.Song
import it.hamy.muza.query
import it.hamy.muza.ui.components.LocalMenuState
import it.hamy.muza.ui.components.ShimmerHost
import it.hamy.muza.ui.components.YandexAdsBannerQuickPicksCenter
import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
import it.hamy.muza.ui.components.themed.Header
import it.hamy.muza.ui.components.themed.NonQueuedMediaItemMenu
@@ -246,6 +249,16 @@ fun QuickPicks(
}
}
Box(
modifier = Modifier
.fillMaxSize()
.padding(start = 0.dp, end = 0.dp, top = 15.dp)
.align(Alignment.CenterHorizontally),
contentAlignment = Alignment.Center,
) {
YandexAdsBannerQuickPicksCenter(id = "R-M-5961316-5")
}
related.albums?.let { albums ->
BasicText(
text = "Похожие альбомы",

View File

@@ -85,7 +85,7 @@ fun Controls(
var artistsInfo: List<Info>? by remember { mutableStateOf(null) }
LaunchedEffect(Unit) {
LaunchedEffect(Unit, mediaId) {
withContext(Dispatchers.IO) {
if (artistsInfo == null) artistsInfo = Database.songArtistInfo(mediaId)