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) }