diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index edda3af..82a7f46 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,6 +48,19 @@
android:name="com.gamedog.vididin.router.RouterInitializer"
android:value="androidx.startup" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
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 21759eb..4f9eeb5 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
@@ -67,7 +67,7 @@ class WatchAdActivity : AppViewsActivity(), OnT
}
private fun stateCounter() {
- mCountDownTimer = object : CountDownTimer(5000, 1000) {
+ mCountDownTimer = object : CountDownTimer(3000, 1000) {
override fun onTick(millisUntilFinished: Long) {
val secondsRemaining = millisUntilFinished / 1000
binding.tvAdCounter.text = "${secondsRemaining}"
diff --git a/app/src/main/java/com/gamedog/vididin/main/MainActivity.kt b/app/src/main/java/com/gamedog/vididin/main/MainActivity.kt
index 9dbd1f0..ff98156 100644
--- a/app/src/main/java/com/gamedog/vididin/main/MainActivity.kt
+++ b/app/src/main/java/com/gamedog/vididin/main/MainActivity.kt
@@ -1,8 +1,9 @@
package com.gamedog.vididin.main
-import android.app.Activity
+
import android.content.Intent
+import android.content.IntentFilter
import com.ama.core.common.util.asSafe
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
@@ -17,7 +18,6 @@ import com.ama.core.architecture.appBase.AppViewsActivity
import com.ama.core.architecture.appBase.OnFragmentBackgroundListener
import com.ama.core.architecture.ext.toast
import com.ama.core.architecture.util.bindViewPager2
-import com.ama.core.architecture.util.eventbus.NotifyMan
import com.ama.core.architecture.util.setCommonNavigator
import com.ama.core.architecture.util.setDataOrAdapter
import com.gamedog.vididin.R
@@ -25,10 +25,9 @@ import com.gamedog.vididin.VidiConst
import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.adapter.MainTabsAdapter
import com.gamedog.vididin.adapter.MainViewPagerAdapter
-import com.gamedog.vididin.core.login.login.AccountManager
-import com.gamedog.vididin.features.watchad.WatchAdActivity
import com.gamedog.vididin.main.fragments.task.DailySignSuccessDialog
import com.gamedog.vididin.main.interfaces.OnTabStyleListener
+import com.gamedog.vididin.manager.DateChangeReceiver
import dagger.hilt.android.AndroidEntryPoint
import kotlin.getValue
import com.gamedog.vididin.databinding.ActivityMainBinding as ViewBinding
@@ -44,6 +43,8 @@ class MainActivity : AppViewsActivity(), OnTabS
override val mViewModel: ViewModel by viewModels()
private lateinit var navigatorAdapter: MainTabsAdapter
private val fragmentStateAdapter by lazy { MainViewPagerAdapter(this) }
+ private lateinit var mDateChangeReceiver: DateChangeReceiver
+
override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater)
@@ -80,6 +81,10 @@ class MainActivity : AppViewsActivity(), OnTabS
}
override fun ViewBinding.initListeners() {
+ mDateChangeReceiver = DateChangeReceiver()
+ val filter = IntentFilter(Intent.ACTION_DATE_CHANGED)
+ registerReceiver(mDateChangeReceiver, filter)
+
onBackPressedDispatcher.addCallback(this@MainActivity) {
if (mViewModel.canBack) {
finish()
@@ -132,6 +137,11 @@ class MainActivity : AppViewsActivity(), OnTabS
super.onResume()
}
+ override fun onDestroy() {
+ super.onDestroy()
+ unregisterReceiver(mDateChangeReceiver)
+ }
+
override fun onTabIsDarkFont(isDarkFont: Boolean) {
navigatorAdapter.setIsDarkFont(isDarkFont)
}
diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/HomeFragment.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/HomeFragment.kt
index c8e1729..e8ba10e 100644
--- a/app/src/main/java/com/gamedog/vididin/main/fragments/HomeFragment.kt
+++ b/app/src/main/java/com/gamedog/vididin/main/fragments/HomeFragment.kt
@@ -82,9 +82,12 @@ class HomeFragment : AppViewsFragment(), OnSwit
viewPager2.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
- setHomeTabStyle(mViewPagerAdapter.getFragmentByIndex(position))
- val curFragment: HomeItemFragment = mViewPagerAdapter.getFragmentByIndex(position) as HomeItemFragment
- curFragment.loadVideo()
+ val fragment = mViewPagerAdapter.getFragmentByIndex(position)
+ if (fragment != null) {
+ setHomeTabStyle(fragment)
+ val curFragment: HomeItemFragment = fragment as HomeItemFragment
+ curFragment.loadVideo()
+ }
// load more
if (mViewPagerAdapter.itemCount > 0 && position == mViewPagerAdapter.itemCount - 2) {
diff --git a/app/src/main/java/com/gamedog/vididin/manager/DateChangeReceiver.kt b/app/src/main/java/com/gamedog/vididin/manager/DateChangeReceiver.kt
new file mode 100644
index 0000000..627260d
--- /dev/null
+++ b/app/src/main/java/com/gamedog/vididin/manager/DateChangeReceiver.kt
@@ -0,0 +1,13 @@
+package com.gamedog.vididin.manager
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+
+class DateChangeReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context, intent: Intent) {
+ if (intent.action == Intent.ACTION_DATE_CHANGED) {
+ TaskManager.instance().onDateChanged()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt b/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt
index ac8e7e8..e381c14 100644
--- a/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt
+++ b/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt
@@ -8,6 +8,7 @@ import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.main.fragments.task.Task
import com.gamedog.vididin.main.fragments.task.TaskBean
+import com.gamedog.vididin.manager.helpers.BaseTaskHelper
import com.gamedog.vididin.manager.helpers.DailyBoxHelper
import com.gamedog.vididin.manager.helpers.DailySignTaskHelper
import com.gamedog.vididin.manager.helpers.DailyWatchAdTaskHelper
@@ -55,6 +56,8 @@ class TaskManager private constructor() {
private val mutex = Mutex()
private val mGson = GsonBuilder().create()
private var mTaskConfig: TaskBean? = null
+
+
private val mDailySignTaskHelper by lazy { DailySignTaskHelper() }
private val mDailyWatchVideoTaskHelper by lazy { DailyWatchVideoTaskHelper() }
private val mDailyWatchAdTaskHelper by lazy { DailyWatchAdTaskHelper() }
@@ -129,6 +132,16 @@ class TaskManager private constructor() {
mNewbieFirstWithdrawHelper.initDatas(getNewbieFirstWithdrawTask()!!)
}
+ fun onDateChanged() {
+ mDailySignTaskHelper.onDateChanged()
+ mDailyWatchVideoTaskHelper.onDateChanged()
+ mDailyWatchAdTaskHelper.onDateChanged()
+ mDailyBoxHelper.onDateChanged()
+ mNewbieJoinDiscordHelper.onDateChanged()
+ mNewbieEnableNotifyHelper.onDateChanged()
+ mNewbieFirstWithdrawHelper.onDateChanged()
+ }
+
//------------------------- Tasks Getter ------------------------------
fun dailySignStatus(): DailySignTaskHelper {
@@ -197,11 +210,6 @@ class TaskManager private constructor() {
- //----------------------------- 每日签到 -----------------------------//
-
- fun getHomeWatchDurationRewardNum(): Int {
- return 28; // TODO - mTaskConfigBean.xxxx
- }
diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt
index 3ac5206..b2ea59a 100644
--- a/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt
+++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt
@@ -14,6 +14,7 @@ import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd
abstract class BaseDailyTaskHelper : BaseTaskHelper() {
abstract protected fun notifyEvents()
+ abstract protected fun generateTodayTask()
fun claimSubTaskReward(subTaskIndex: Int) : Boolean {
if (subTaskIndex >= 0 && subTaskIndex < mStateBean.getSubTaskRewardState().size) {
@@ -33,6 +34,12 @@ abstract class BaseDailyTaskHelper : BaseTaskHelper()
return false
}
+ override fun onDateChanged() {
+ super.onDateChanged()
+ generateTodayTask()
+ notifyEvents()
+ }
+
protected fun calculateNewState() {
val todayWatchedCount = mStateBean.getTodayWatchedCount()
@@ -49,10 +56,6 @@ abstract class BaseDailyTaskHelper : BaseTaskHelper()
}
}
- protected fun generateTodayTask() {
- mStateBean = TaskStateWatchAd(DateUtil.getCurTimeMs()) as T
- mStateBean.initSubTaskRewardList(mTaskConfig.reward_details)
- }
protected fun isTodayStatusBean(stateBean: TaskStateWatchAd): Boolean {
return DateUtil.isToday(stateBean.todayMs)
diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseTaskHelper.kt
index 5ef563f..7fb7bf4 100644
--- a/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseTaskHelper.kt
+++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseTaskHelper.kt
@@ -23,6 +23,9 @@ abstract class BaseTaskHelper {
}
}
+ open fun onDateChanged() {
+ // TODO - sub class override this methods if daily task
+ }
protected fun registerEvents(onEvents: ((NotifyMan.NotifyData<*>?)->Unit), vararg eventTypes: Int) {
diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchAdTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchAdTaskHelper.kt
index 5a4d987..5ef9a91 100644
--- a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchAdTaskHelper.kt
+++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchAdTaskHelper.kt
@@ -1,5 +1,6 @@
package com.gamedog.vididin.manager.helpers
+import com.ama.core.architecture.util.DateUtil
import com.ama.core.architecture.util.SpUtil
import com.ama.core.architecture.util.eventbus.NotifyMan
import com.gamedog.vididin.VididinEvents
@@ -22,13 +23,18 @@ class DailyWatchAdTaskHelper : BaseDailyTaskHelper() {
val spStateBean = SpUtil.instance().getObject(mSpKey)
if (spStateBean == null || !isTodayStatusBean(spStateBean)) {
generateTodayTask()
- saveState2Sp()
} else {
mStateBean = spStateBean
notifyEvents()
}
}
+ override fun generateTodayTask() {
+ mStateBean = TaskStateWatchAd(DateUtil.getCurTimeMs())
+ mStateBean.initSubTaskRewardList(mTaskConfig.reward_details)
+ saveState2Sp()
+ }
+
override fun notifyEvents() {
NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_AD_NUM_CHANGED, null)
}
diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchVideoTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchVideoTaskHelper.kt
index ce0d46d..b5b0a6c 100644
--- a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchVideoTaskHelper.kt
+++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchVideoTaskHelper.kt
@@ -1,9 +1,11 @@
package com.gamedog.vididin.manager.helpers
+import com.ama.core.architecture.util.DateUtil
import com.ama.core.architecture.util.SpUtil
import com.ama.core.architecture.util.eventbus.NotifyMan
import com.gamedog.vididin.VididinEvents
+import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd
import com.gamedog.vididin.manager.taskbeans.TaskStateWatchVideo
@@ -23,13 +25,18 @@ class DailyWatchVideoTaskHelper : BaseDailyTaskHelper() {
val spStateBean = SpUtil.instance().getObject(mSpKey)
if (spStateBean == null || !isTodayStatusBean(spStateBean)) {
generateTodayTask()
- saveState2Sp()
} else {
mStateBean = spStateBean
notifyEvents()
}
}
+ override fun generateTodayTask() {
+ mStateBean = TaskStateWatchVideo(DateUtil.getCurTimeMs())
+ mStateBean.initSubTaskRewardList(mTaskConfig.reward_details)
+ saveState2Sp()
+ }
+
override fun notifyEvents() {
NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED, null)
}