Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions ads/onexbet/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
28 changes: 28 additions & 0 deletions ads/onexbet/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
compileSdkVersion versions.compileSdk

defaultConfig {
minSdkVersion versions.minSdk
targetSdkVersion versions.targetSdk
}

buildTypes {
debug {
minifyEnabled true
}
release {
minifyEnabled false
}
}
}

dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

implementation deps.glide.glide
implementation project(path: ':utils:ui')
}
3 changes: 3 additions & 0 deletions ads/onexbet/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.frolo.ads.onexbet">
</manifest>
44 changes: 44 additions & 0 deletions ads/onexbet/src/main/java/com/frolo/ads/onexbet/OneXBetAdView.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.frolo.ads.onexbet

import android.content.Context
import android.graphics.Color
import android.util.AttributeSet
import android.view.Gravity
import android.view.View
import android.widget.FrameLayout
import android.widget.ImageView
import androidx.core.content.ContextCompat
import com.bumptech.glide.Glide
import com.frolo.ui.Screen

class OneXBetAdView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {

init {
setBackgroundColor(Color.BLACK)
foregroundGravity = Gravity.CENTER
addView(createImageView(), LayoutParams.MATCH_PARENT,
Screen.dp(context, PREFERRED_HEIGHT_IN_DP))
}

private fun createImageView(): View {
return ImageView(context).also { imageView ->
imageView.setBackgroundColor(ContextCompat.getColor(context, R.color.onexbet_background))
Glide.with(imageView)
.load(R.drawable.onexbet_logo)
.fitCenter()
.into(imageView)
}
}

// override fun getSuggestedMinimumHeight(): Int {
// return Screen.dp(context, PREFERRED_HEIGHT_IN_DP)
// }

companion object {
private const val PREFERRED_HEIGHT_IN_DP = 80
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions ads/onexbet/src/main/res/values/colors.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<resources>
<color name="onexbet_background">#002B72</color>
</resources>
1 change: 1 addition & 0 deletions apps/frolomuse/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ dependencies {
// Ads
// implementation project(path: ':ads:admob')
// implementation 'com.facebook.android:audience-network-sdk:6.13.7'
implementation project(path: ':ads:onexbet')

// Features
implementation project(path: ':feature:onboarding')
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.frolo.muse.interactor.ads

import com.frolo.muse.firebase.FirebaseRemoteConfigCache
import io.reactivex.Single
import javax.inject.Inject


class LibraryAdsUseCase @Inject constructor() {
fun isOneXBetAdsEnabled(): Single<Boolean> {
return FirebaseRemoteConfigCache.getBool("one_xbet_ads_enabled")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.fragment.app.Fragment
import androidx.lifecycle.LifecycleOwner
Expand Down Expand Up @@ -195,13 +196,9 @@ class LibraryFragment: BaseFragment(),
}

private fun observeViewModel(owner: LifecycleOwner) = with(viewModel) {
// bannerConfig.observe(owner) { config ->
// if (config != null) {
// ad_view_container.loadBanner(config.placementId)
// } else {
// ad_view_container.clearBanner()
// }
// }
showOneXBetAds.observe(owner) { enabled ->
onexbet_ad_view.isVisible = enabled
}
}

override fun scrollToTop() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,48 +3,29 @@ package com.frolo.muse.ui.main.library
import android.app.Application
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.frolo.arch.support.distinctUntilChanged
import com.frolo.logger.api.Logger
import com.frolo.muse.interactor.ads.FacebookBannerUseCase
import com.frolo.muse.interactor.ads.LibraryAdsUseCase
import com.frolo.muse.logger.EventLogger
import com.frolo.muse.rx.SchedulerProvider
import com.frolo.muse.ui.base.BaseAndroidViewModel
import javax.inject.Inject


class LibraryViewModel @Inject constructor(
application: Application,
eventLogger: EventLogger,
private val facebookBannerUseCase: FacebookBannerUseCase,
private val bannerUseCase: LibraryAdsUseCase,
private val schedulerProvider: SchedulerProvider
): BaseAndroidViewModel(application, eventLogger) {

private val _bannerConfig by lazy {
MutableLiveData<BannerConfig>(null).apply(::loadAdConfigAsync)
}
val bannerConfig: LiveData<BannerConfig> by lazy { _bannerConfig.distinctUntilChanged() }

private fun loadAdConfigAsync(liveData: MutableLiveData<BannerConfig>) {
val startTime = System.currentTimeMillis()
facebookBannerUseCase.getFacebookBannerState()
.observeOn(schedulerProvider.main())
.subscribeFor { bannerState ->
val elapsedTime = System.currentTimeMillis() - startTime
Logger.d(LOG_TAG, "Loaded Ad config in $elapsedTime millis")
liveData.value = when (bannerState) {
is FacebookBannerUseCase.BannerState.Enabled ->
BannerConfig(placementId = bannerState.placementId)
FacebookBannerUseCase.BannerState.Disabled -> null
}
}
private val _showOneXBetAds by lazy {
MutableLiveData<Boolean>(false).apply {
bannerUseCase.isOneXBetAdsEnabled()
.observeOn(schedulerProvider.main())
.subscribeFor { value = it }
}
}

data class BannerConfig(
val placementId: String
)
val showOneXBetAds: LiveData<Boolean> get() = _showOneXBetAds

companion object {
private const val LOG_TAG = "LibraryViewModel"
}

}
6 changes: 6 additions & 0 deletions apps/frolomuse/src/main/res/layout/fragment_library.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@
android:layout_height="@dimen/app_thin_divider_size"
android:background="?dividerTint"
app:layout_scrollFlags="scroll|enterAlways"/>

<com.frolo.ads.onexbet.OneXBetAdView
android:id="@+id/onexbet_ad_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"/>
</com.google.android.material.appbar.AppBarLayout>

<com.frolo.muse.views.viewpager.SafeViewPager
Expand Down
1 change: 1 addition & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ include ':feature:visualizer'

// Advertising
include ':ads:admob'
include ':ads:onexbet'

// Core
include ':core'
Expand Down