日期变化监听
This commit is contained in:
parent
460270212d
commit
ca1f3662b0
|
|
@ -48,6 +48,19 @@
|
||||||
android:name="com.gamedog.vididin.router.RouterInitializer"
|
android:name="com.gamedog.vididin.router.RouterInitializer"
|
||||||
android:value="androidx.startup" />
|
android:value="androidx.startup" />
|
||||||
</provider>
|
</provider>
|
||||||
|
|
||||||
|
|
||||||
|
<receiver
|
||||||
|
android:name=".manager.DateChangeReceiver"
|
||||||
|
android:enabled="true"
|
||||||
|
android:exported="true">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.DATE_CHANGED" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
@ -67,7 +67,7 @@ class WatchAdActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnT
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun stateCounter() {
|
private fun stateCounter() {
|
||||||
mCountDownTimer = object : CountDownTimer(5000, 1000) {
|
mCountDownTimer = object : CountDownTimer(3000, 1000) {
|
||||||
override fun onTick(millisUntilFinished: Long) {
|
override fun onTick(millisUntilFinished: Long) {
|
||||||
val secondsRemaining = millisUntilFinished / 1000
|
val secondsRemaining = millisUntilFinished / 1000
|
||||||
binding.tvAdCounter.text = "${secondsRemaining}"
|
binding.tvAdCounter.text = "${secondsRemaining}"
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
package com.gamedog.vididin.main
|
package com.gamedog.vididin.main
|
||||||
|
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.content.IntentFilter
|
||||||
import com.ama.core.common.util.asSafe
|
import com.ama.core.common.util.asSafe
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.WindowInsetsCompat
|
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.appBase.OnFragmentBackgroundListener
|
||||||
import com.ama.core.architecture.ext.toast
|
import com.ama.core.architecture.ext.toast
|
||||||
import com.ama.core.architecture.util.bindViewPager2
|
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.setCommonNavigator
|
||||||
import com.ama.core.architecture.util.setDataOrAdapter
|
import com.ama.core.architecture.util.setDataOrAdapter
|
||||||
import com.gamedog.vididin.R
|
import com.gamedog.vididin.R
|
||||||
|
|
@ -25,10 +25,9 @@ import com.gamedog.vididin.VidiConst
|
||||||
import com.gamedog.vididin.VididinEvents
|
import com.gamedog.vididin.VididinEvents
|
||||||
import com.gamedog.vididin.adapter.MainTabsAdapter
|
import com.gamedog.vididin.adapter.MainTabsAdapter
|
||||||
import com.gamedog.vididin.adapter.MainViewPagerAdapter
|
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.fragments.task.DailySignSuccessDialog
|
||||||
import com.gamedog.vididin.main.interfaces.OnTabStyleListener
|
import com.gamedog.vididin.main.interfaces.OnTabStyleListener
|
||||||
|
import com.gamedog.vididin.manager.DateChangeReceiver
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import kotlin.getValue
|
import kotlin.getValue
|
||||||
import com.gamedog.vididin.databinding.ActivityMainBinding as ViewBinding
|
import com.gamedog.vididin.databinding.ActivityMainBinding as ViewBinding
|
||||||
|
|
@ -44,6 +43,8 @@ class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabS
|
||||||
override val mViewModel: ViewModel by viewModels()
|
override val mViewModel: ViewModel by viewModels()
|
||||||
private lateinit var navigatorAdapter: MainTabsAdapter
|
private lateinit var navigatorAdapter: MainTabsAdapter
|
||||||
private val fragmentStateAdapter by lazy { MainViewPagerAdapter(this) }
|
private val fragmentStateAdapter by lazy { MainViewPagerAdapter(this) }
|
||||||
|
private lateinit var mDateChangeReceiver: DateChangeReceiver
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater)
|
override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater)
|
||||||
|
|
@ -80,6 +81,10 @@ class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabS
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun ViewBinding.initListeners() {
|
override fun ViewBinding.initListeners() {
|
||||||
|
mDateChangeReceiver = DateChangeReceiver()
|
||||||
|
val filter = IntentFilter(Intent.ACTION_DATE_CHANGED)
|
||||||
|
registerReceiver(mDateChangeReceiver, filter)
|
||||||
|
|
||||||
onBackPressedDispatcher.addCallback(this@MainActivity) {
|
onBackPressedDispatcher.addCallback(this@MainActivity) {
|
||||||
if (mViewModel.canBack) {
|
if (mViewModel.canBack) {
|
||||||
finish()
|
finish()
|
||||||
|
|
@ -132,6 +137,11 @@ class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabS
|
||||||
super.onResume()
|
super.onResume()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onDestroy() {
|
||||||
|
super.onDestroy()
|
||||||
|
unregisterReceiver(mDateChangeReceiver)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onTabIsDarkFont(isDarkFont: Boolean) {
|
override fun onTabIsDarkFont(isDarkFont: Boolean) {
|
||||||
navigatorAdapter.setIsDarkFont(isDarkFont)
|
navigatorAdapter.setIsDarkFont(isDarkFont)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -82,9 +82,12 @@ class HomeFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnSwit
|
||||||
viewPager2.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
|
viewPager2.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
|
||||||
override fun onPageSelected(position: Int) {
|
override fun onPageSelected(position: Int) {
|
||||||
super.onPageSelected(position)
|
super.onPageSelected(position)
|
||||||
setHomeTabStyle(mViewPagerAdapter.getFragmentByIndex(position))
|
val fragment = mViewPagerAdapter.getFragmentByIndex(position)
|
||||||
val curFragment: HomeItemFragment = mViewPagerAdapter.getFragmentByIndex(position) as HomeItemFragment
|
if (fragment != null) {
|
||||||
curFragment.loadVideo()
|
setHomeTabStyle(fragment)
|
||||||
|
val curFragment: HomeItemFragment = fragment as HomeItemFragment
|
||||||
|
curFragment.loadVideo()
|
||||||
|
}
|
||||||
|
|
||||||
// load more
|
// load more
|
||||||
if (mViewPagerAdapter.itemCount > 0 && position == mViewPagerAdapter.itemCount - 2) {
|
if (mViewPagerAdapter.itemCount > 0 && position == mViewPagerAdapter.itemCount - 2) {
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -8,6 +8,7 @@ import com.gamedog.vididin.VididinEvents
|
||||||
import com.gamedog.vididin.core.login.login.AccountManager
|
import com.gamedog.vididin.core.login.login.AccountManager
|
||||||
import com.gamedog.vididin.main.fragments.task.Task
|
import com.gamedog.vididin.main.fragments.task.Task
|
||||||
import com.gamedog.vididin.main.fragments.task.TaskBean
|
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.DailyBoxHelper
|
||||||
import com.gamedog.vididin.manager.helpers.DailySignTaskHelper
|
import com.gamedog.vididin.manager.helpers.DailySignTaskHelper
|
||||||
import com.gamedog.vididin.manager.helpers.DailyWatchAdTaskHelper
|
import com.gamedog.vididin.manager.helpers.DailyWatchAdTaskHelper
|
||||||
|
|
@ -55,6 +56,8 @@ class TaskManager private constructor() {
|
||||||
private val mutex = Mutex()
|
private val mutex = Mutex()
|
||||||
private val mGson = GsonBuilder().create()
|
private val mGson = GsonBuilder().create()
|
||||||
private var mTaskConfig: TaskBean? = null
|
private var mTaskConfig: TaskBean? = null
|
||||||
|
|
||||||
|
|
||||||
private val mDailySignTaskHelper by lazy { DailySignTaskHelper() }
|
private val mDailySignTaskHelper by lazy { DailySignTaskHelper() }
|
||||||
private val mDailyWatchVideoTaskHelper by lazy { DailyWatchVideoTaskHelper() }
|
private val mDailyWatchVideoTaskHelper by lazy { DailyWatchVideoTaskHelper() }
|
||||||
private val mDailyWatchAdTaskHelper by lazy { DailyWatchAdTaskHelper() }
|
private val mDailyWatchAdTaskHelper by lazy { DailyWatchAdTaskHelper() }
|
||||||
|
|
@ -129,6 +132,16 @@ class TaskManager private constructor() {
|
||||||
mNewbieFirstWithdrawHelper.initDatas(getNewbieFirstWithdrawTask()!!)
|
mNewbieFirstWithdrawHelper.initDatas(getNewbieFirstWithdrawTask()!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun onDateChanged() {
|
||||||
|
mDailySignTaskHelper.onDateChanged()
|
||||||
|
mDailyWatchVideoTaskHelper.onDateChanged()
|
||||||
|
mDailyWatchAdTaskHelper.onDateChanged()
|
||||||
|
mDailyBoxHelper.onDateChanged()
|
||||||
|
mNewbieJoinDiscordHelper.onDateChanged()
|
||||||
|
mNewbieEnableNotifyHelper.onDateChanged()
|
||||||
|
mNewbieFirstWithdrawHelper.onDateChanged()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//------------------------- Tasks Getter ------------------------------
|
//------------------------- Tasks Getter ------------------------------
|
||||||
fun dailySignStatus(): DailySignTaskHelper {
|
fun dailySignStatus(): DailySignTaskHelper {
|
||||||
|
|
@ -197,11 +210,6 @@ class TaskManager private constructor() {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------- 每日签到 -----------------------------//
|
|
||||||
|
|
||||||
fun getHomeWatchDurationRewardNum(): Int {
|
|
||||||
return 28; // TODO - mTaskConfigBean.xxxx
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd
|
||||||
abstract class BaseDailyTaskHelper<T : BaseDailyTaskState> : BaseTaskHelper<T>() {
|
abstract class BaseDailyTaskHelper<T : BaseDailyTaskState> : BaseTaskHelper<T>() {
|
||||||
|
|
||||||
abstract protected fun notifyEvents()
|
abstract protected fun notifyEvents()
|
||||||
|
abstract protected fun generateTodayTask()
|
||||||
|
|
||||||
fun claimSubTaskReward(subTaskIndex: Int) : Boolean {
|
fun claimSubTaskReward(subTaskIndex: Int) : Boolean {
|
||||||
if (subTaskIndex >= 0 && subTaskIndex < mStateBean.getSubTaskRewardState().size) {
|
if (subTaskIndex >= 0 && subTaskIndex < mStateBean.getSubTaskRewardState().size) {
|
||||||
|
|
@ -33,6 +34,12 @@ abstract class BaseDailyTaskHelper<T : BaseDailyTaskState> : BaseTaskHelper<T>()
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onDateChanged() {
|
||||||
|
super.onDateChanged()
|
||||||
|
generateTodayTask()
|
||||||
|
notifyEvents()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected fun calculateNewState() {
|
protected fun calculateNewState() {
|
||||||
val todayWatchedCount = mStateBean.getTodayWatchedCount()
|
val todayWatchedCount = mStateBean.getTodayWatchedCount()
|
||||||
|
|
@ -49,10 +56,6 @@ abstract class BaseDailyTaskHelper<T : BaseDailyTaskState> : BaseTaskHelper<T>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun generateTodayTask() {
|
|
||||||
mStateBean = TaskStateWatchAd(DateUtil.getCurTimeMs()) as T
|
|
||||||
mStateBean.initSubTaskRewardList(mTaskConfig.reward_details)
|
|
||||||
}
|
|
||||||
|
|
||||||
protected fun isTodayStatusBean(stateBean: TaskStateWatchAd): Boolean {
|
protected fun isTodayStatusBean(stateBean: TaskStateWatchAd): Boolean {
|
||||||
return DateUtil.isToday(stateBean.todayMs)
|
return DateUtil.isToday(stateBean.todayMs)
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,9 @@ abstract class BaseTaskHelper<T: Any> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun onDateChanged() {
|
||||||
|
// TODO - sub class override this methods if daily task
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected fun registerEvents(onEvents: ((NotifyMan.NotifyData<*>?)->Unit), vararg eventTypes: Int) {
|
protected fun registerEvents(onEvents: ((NotifyMan.NotifyData<*>?)->Unit), vararg eventTypes: Int) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.gamedog.vididin.manager.helpers
|
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.SpUtil
|
||||||
import com.ama.core.architecture.util.eventbus.NotifyMan
|
import com.ama.core.architecture.util.eventbus.NotifyMan
|
||||||
import com.gamedog.vididin.VididinEvents
|
import com.gamedog.vididin.VididinEvents
|
||||||
|
|
@ -22,13 +23,18 @@ class DailyWatchAdTaskHelper : BaseDailyTaskHelper<TaskStateWatchAd>() {
|
||||||
val spStateBean = SpUtil.instance().getObject<TaskStateWatchAd>(mSpKey)
|
val spStateBean = SpUtil.instance().getObject<TaskStateWatchAd>(mSpKey)
|
||||||
if (spStateBean == null || !isTodayStatusBean(spStateBean)) {
|
if (spStateBean == null || !isTodayStatusBean(spStateBean)) {
|
||||||
generateTodayTask()
|
generateTodayTask()
|
||||||
saveState2Sp()
|
|
||||||
} else {
|
} else {
|
||||||
mStateBean = spStateBean
|
mStateBean = spStateBean
|
||||||
notifyEvents()
|
notifyEvents()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun generateTodayTask() {
|
||||||
|
mStateBean = TaskStateWatchAd(DateUtil.getCurTimeMs())
|
||||||
|
mStateBean.initSubTaskRewardList(mTaskConfig.reward_details)
|
||||||
|
saveState2Sp()
|
||||||
|
}
|
||||||
|
|
||||||
override fun notifyEvents() {
|
override fun notifyEvents() {
|
||||||
NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_AD_NUM_CHANGED, null)
|
NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_AD_NUM_CHANGED, null)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
package com.gamedog.vididin.manager.helpers
|
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.SpUtil
|
||||||
import com.ama.core.architecture.util.eventbus.NotifyMan
|
import com.ama.core.architecture.util.eventbus.NotifyMan
|
||||||
import com.gamedog.vididin.VididinEvents
|
import com.gamedog.vididin.VididinEvents
|
||||||
|
import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd
|
||||||
import com.gamedog.vididin.manager.taskbeans.TaskStateWatchVideo
|
import com.gamedog.vididin.manager.taskbeans.TaskStateWatchVideo
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -23,13 +25,18 @@ class DailyWatchVideoTaskHelper : BaseDailyTaskHelper<TaskStateWatchVideo>() {
|
||||||
val spStateBean = SpUtil.instance().getObject<TaskStateWatchVideo>(mSpKey)
|
val spStateBean = SpUtil.instance().getObject<TaskStateWatchVideo>(mSpKey)
|
||||||
if (spStateBean == null || !isTodayStatusBean(spStateBean)) {
|
if (spStateBean == null || !isTodayStatusBean(spStateBean)) {
|
||||||
generateTodayTask()
|
generateTodayTask()
|
||||||
saveState2Sp()
|
|
||||||
} else {
|
} else {
|
||||||
mStateBean = spStateBean
|
mStateBean = spStateBean
|
||||||
notifyEvents()
|
notifyEvents()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun generateTodayTask() {
|
||||||
|
mStateBean = TaskStateWatchVideo(DateUtil.getCurTimeMs())
|
||||||
|
mStateBean.initSubTaskRewardList(mTaskConfig.reward_details)
|
||||||
|
saveState2Sp()
|
||||||
|
}
|
||||||
|
|
||||||
override fun notifyEvents() {
|
override fun notifyEvents() {
|
||||||
NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED, null)
|
NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED, null)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue