日期变化监听
This commit is contained in:
parent
460270212d
commit
ca1f3662b0
|
|
@ -48,6 +48,19 @@
|
|||
android:name="com.gamedog.vididin.router.RouterInitializer"
|
||||
android:value="androidx.startup" />
|
||||
</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>
|
||||
|
||||
</manifest>
|
||||
|
|
@ -67,7 +67,7 @@ class WatchAdActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), 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}"
|
||||
|
|
|
|||
|
|
@ -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<ViewBinding, UiState, ViewModel>(), 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<ViewBinding, UiState, ViewModel>(), 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<ViewBinding, UiState, ViewModel>(), OnTabS
|
|||
super.onResume()
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
unregisterReceiver(mDateChangeReceiver)
|
||||
}
|
||||
|
||||
override fun onTabIsDarkFont(isDarkFont: Boolean) {
|
||||
navigatorAdapter.setIsDarkFont(isDarkFont)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,9 +82,12 @@ class HomeFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), 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
|
||||
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) {
|
||||
|
|
|
|||
|
|
@ -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.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
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd
|
|||
abstract class BaseDailyTaskHelper<T : BaseDailyTaskState> : BaseTaskHelper<T>() {
|
||||
|
||||
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<T : BaseDailyTaskState> : BaseTaskHelper<T>()
|
|||
return false
|
||||
}
|
||||
|
||||
override fun onDateChanged() {
|
||||
super.onDateChanged()
|
||||
generateTodayTask()
|
||||
notifyEvents()
|
||||
}
|
||||
|
||||
|
||||
protected fun calculateNewState() {
|
||||
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 {
|
||||
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) {
|
||||
|
|
|
|||
|
|
@ -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<TaskStateWatchAd>() {
|
|||
val spStateBean = SpUtil.instance().getObject<TaskStateWatchAd>(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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<TaskStateWatchVideo>() {
|
|||
val spStateBean = SpUtil.instance().getObject<TaskStateWatchVideo>(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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue