diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c0bc81e..7f084c4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -35,6 +35,7 @@
+
diff --git a/app/src/main/java/com/gamedog/vididin/features/watchad/WatchAdActivity.kt b/app/src/main/java/com/gamedog/vididin/features/watchad/WatchAdActivity.kt
index 7a5ed8d..2b1922f 100644
--- a/app/src/main/java/com/gamedog/vididin/features/watchad/WatchAdActivity.kt
+++ b/app/src/main/java/com/gamedog/vididin/features/watchad/WatchAdActivity.kt
@@ -2,12 +2,20 @@ package com.gamedog.vididin.features.watchad
import android.app.Activity
import android.content.Intent
+import android.os.Bundle
+import android.os.CountDownTimer
+import android.os.PersistableBundle
import android.view.LayoutInflater
+import androidx.activity.addCallback
import androidx.activity.viewModels
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
import com.ama.core.architecture.appBase.AppViewsActivity
+import com.ama.core.architecture.ext.toast
+import com.ama.core.architecture.util.AndroidUtil
+import com.ama.core.architecture.util.eventbus.NotifyMan
+import com.gamedog.vididin.R
import com.gamedog.vididin.main.interfaces.OnTabStyleListener
import dagger.hilt.android.AndroidEntryPoint
import kotlin.getValue
@@ -22,6 +30,10 @@ class WatchAdActivity : AppViewsActivity(), OnT
override val mViewModel: ViewModel by viewModels()
override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater)
+
+ private lateinit var mCountDownTimer: CountDownTimer
+ private var mTaskUUID: Int = 0
+
override fun ViewBinding.initViews() {
with(binding) {
@@ -31,15 +43,49 @@ class WatchAdActivity : AppViewsActivity(), OnT
override fun ViewBinding.initWindowInsets() {
ViewCompat.setOnApplyWindowInsetsListener(contentRoot) { v, insets ->
- val systemBars =
- insets.getInsets(WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout())
+ val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout())
v.updatePadding(top = systemBars.top)
insets
}
}
override fun ViewBinding.initListeners() {
- //TODO("Not yet implemented")
+ onBackPressedDispatcher.addCallback(this@WatchAdActivity) {
+ AndroidUtil.showToast("Can't exit while watching video")
+ }
+
+ stateCounter()
+ }
+
+
+ private fun notifyAdWatchFinish() {
+ NotifyMan.instance().sendEvent(mTaskUUID, null)
+ }
+
+ private fun stateCounter() {
+ mCountDownTimer = object : CountDownTimer(5000, 1000) {
+ override fun onTick(millisUntilFinished: Long) {
+ val secondsRemaining = millisUntilFinished / 1000
+ binding.tvAdCounter.text = "${secondsRemaining}"
+ }
+
+ override fun onFinish() {
+ notifyAdWatchFinish()
+ finish()
+ }
+ }
+ mCountDownTimer.start()
+ }
+
+ override fun readIntent(intent: Intent) {
+ super.readIntent(intent)
+ mTaskUUID = intent.getIntExtra(KEY_TASKID, 0)
+ }
+
+
+ override fun onDestroy() {
+ super.onDestroy()
+ mCountDownTimer.cancel()
}
override fun ViewBinding.initObservers() {
@@ -56,8 +102,12 @@ class WatchAdActivity : AppViewsActivity(), OnT
companion object {
- internal fun startActivity(activity: Activity) {
- activity.startActivity(Intent(activity.applicationContext, WatchAdActivity::class.java))
+ private val KEY_TASKID = "KEY_TASKID"
+
+ internal fun startActivity(activity: Activity, taskUUID: Int) {
+ val intent = Intent(activity.applicationContext, WatchAdActivity::class.java)
+ intent.putExtra(KEY_TASKID, taskUUID)
+ activity.startActivity(intent)
}
}
diff --git a/app/src/main/java/com/gamedog/vididin/main/WatchVideoDialog.kt b/app/src/main/java/com/gamedog/vididin/main/WatchVideoDialog.kt
index c9c77e8..5225550 100644
--- a/app/src/main/java/com/gamedog/vididin/main/WatchVideoDialog.kt
+++ b/app/src/main/java/com/gamedog/vididin/main/WatchVideoDialog.kt
@@ -1,15 +1,14 @@
package com.gamedog.vididin.main
import android.app.Activity
-import android.content.Context
+import com.ama.core.architecture.util.AndroidUtil
import com.ama.core.architecture.util.setOnClickBatch
import com.ama.core.architecture.widget.BindingDialog
import com.gamedog.vididin.databinding.DialogWatchVideoBinding
-import com.gamedog.vididin.main.fragments.task.RewardDetail
+import com.gamedog.vididin.router.Router
class WatchVideoDialog(context: Activity) : BindingDialog(context, DialogWatchVideoBinding::inflate) {
- private lateinit var mDataList: List
init {
build()
@@ -30,7 +29,6 @@ class WatchVideoDialog(context: Activity) : BindingDialog {
gotoWatchVideo()
- dismiss()
}
}
}
@@ -38,7 +36,13 @@ class WatchVideoDialog(context: Activity) : BindingDialog
-
+ android:layout_height="match_parent">
-
+
+
+
+
+
+
diff --git a/core/architecture/src/main/java/com/ama/core/architecture/base/views/BaseViewsActivity.kt b/core/architecture/src/main/java/com/ama/core/architecture/base/views/BaseViewsActivity.kt
index e85275d..bedfb28 100644
--- a/core/architecture/src/main/java/com/ama/core/architecture/base/views/BaseViewsActivity.kt
+++ b/core/architecture/src/main/java/com/ama/core/architecture/base/views/BaseViewsActivity.kt
@@ -1,5 +1,6 @@
package com.ama.core.architecture.base.views
+import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.activity.enableEdgeToEdge
@@ -55,6 +56,7 @@ abstract class BaseViewsActivity {
fun Binding.initObservers()
fun Binding.onUiStateCollect(uiState: UiState)
+
+ fun readIntent(intent: Intent)
}
interface ViewBindingFragment {
diff --git a/core/architecture/src/main/java/com/ama/core/architecture/util/AndroidUtil.kt b/core/architecture/src/main/java/com/ama/core/architecture/util/AndroidUtil.kt
index fca2108..0c6c652 100644
--- a/core/architecture/src/main/java/com/ama/core/architecture/util/AndroidUtil.kt
+++ b/core/architecture/src/main/java/com/ama/core/architecture/util/AndroidUtil.kt
@@ -1,16 +1,26 @@
package com.ama.core.architecture.util
-import android.app.Activity
-import android.content.Intent
+import android.widget.Toast
import com.ama.core.architecture.BaseApp
+import kotlin.random.Random
class AndroidUtil private constructor() {
companion object {
+ fun genRandomInt(rangeBegin: Int, rangeEnd: Int): Int {
+ return Random.nextInt(rangeBegin, rangeEnd)
+ }
+ fun showToast(strRes: Int) {
+ Toast.makeText(BaseApp.appContext(), strRes, Toast.LENGTH_SHORT).show()
+ }
+
+ fun showToast(str: String) {
+ Toast.makeText(BaseApp.appContext(), str, Toast.LENGTH_SHORT).show()
+ }
}
diff --git a/core/architecture/src/main/java/com/ama/core/architecture/widget/BindingDialog.kt b/core/architecture/src/main/java/com/ama/core/architecture/widget/BindingDialog.kt
index 60a41c1..52ebe3d 100644
--- a/core/architecture/src/main/java/com/ama/core/architecture/widget/BindingDialog.kt
+++ b/core/architecture/src/main/java/com/ama/core/architecture/widget/BindingDialog.kt
@@ -28,6 +28,7 @@ import androidx.lifecycle.LifecycleOwner
import androidx.viewbinding.ViewBinding
import com.ama.core.architecture.R
import com.ama.core.architecture.util.ScreenUtils
+import com.ama.core.architecture.util.eventbus.NotifyMan
import com.ama.core.common.util.dp
@@ -48,6 +49,20 @@ open class BindingDialog(protected val mActivity: Activity,
lateinit var mBinding: VB
var currEvent: Lifecycle.Event? = null
+ private var mEventCallback: NotifyMan.ICallback? = null
+
+ protected fun registerEvents(onEvents: ((NotifyMan.NotifyData<*>?)->Unit), vararg eventTypes: Int) {
+ if (mEventCallback == null) {
+ mEventCallback = object : NotifyMan.ICallback(true) {
+ override fun onEvent(data: NotifyMan.NotifyData<*>?) {
+ onEvents.invoke(data)
+ }
+ }
+ }
+
+ NotifyMan.instance().register(mEventCallback, *eventTypes)
+ }
+
companion object {
fun getRoundRectDrawable(radius: Int, color: Int): ShapeDrawable {
@@ -78,6 +93,9 @@ open class BindingDialog(protected val mActivity: Activity,
super.onCreate(savedInstanceState)
mBinding = inflate(layoutInflater)
setContentView(mBinding.root)
+ setOnDismissListener {
+ NotifyMan.instance().unregister(mEventCallback)
+ }
init()
}
@@ -88,6 +106,7 @@ open class BindingDialog(protected val mActivity: Activity,
}
}
+
fun init() {
if (mActivity is ComponentActivity) {
mActivity.lifecycle.addObserver(this)