diff --git a/app/src/main/java/com/gamedog/vididin/VididinEvents.kt b/app/src/main/java/com/gamedog/vididin/VididinEvents.kt index 217f32c..b93c4f8 100644 --- a/app/src/main/java/com/gamedog/vididin/VididinEvents.kt +++ b/app/src/main/java/com/gamedog/vididin/VididinEvents.kt @@ -10,4 +10,8 @@ object VididinEvents { const val Event_HOME_WATCH_Time_TICK = 700 const val Event_Finish_One_Video = 701 + const val Event_Toady_Watched_Total = 702 + + + } \ No newline at end of file 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 9968f66..0c37d9a 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 @@ -1,11 +1,14 @@ package com.gamedog.vididin.manager.helpers +import com.ama.core.architecture.util.SpUtil import com.ama.core.architecture.util.eventbus.NotifyMan import com.gamedog.vididin.main.fragments.task.Task import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext -abstract class BaseTaskHelper { +abstract class BaseTaskHelper { + abstract val mSpKey: String + protected lateinit var mStateBean: T protected lateinit var mTaskConfig: Task private var mEventCallback: NotifyMan.ICallback? = null @@ -33,6 +36,11 @@ abstract class BaseTaskHelper { NotifyMan.instance().register(mEventCallback, *eventTypes) } + protected fun saveState2Sp() { + SpUtil.instance().putObject(mSpKey, mStateBean) + } + + fun release() { NotifyMan.instance().unregister(mEventCallback) } diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyBoxHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyBoxHelper.kt index 27e8c01..e8c85f4 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyBoxHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyBoxHelper.kt @@ -1,8 +1,11 @@ package com.gamedog.vididin.manager.helpers -class DailyBoxHelper: BaseTaskHelper() { +import com.ama.core.architecture.util.SpUtil +import com.gamedog.vididin.manager.taskbeans.TaskStateBox +class DailyBoxHelper: BaseTaskHelper() { + override val mSpKey = SpUtil.KEY_ACCOUNT override fun loadTaskFromSp() { diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailySignTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailySignTaskHelper.kt index 55be333..921b1f2 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailySignTaskHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailySignTaskHelper.kt @@ -9,35 +9,33 @@ import com.gamedog.vididin.manager.taskbeans.TaskDailySignBean import com.gamedog.vididin.manager.taskbeans.DailySignDayInfoBean -class DailySignTaskHelper : BaseTaskHelper() { +class DailySignTaskHelper : BaseTaskHelper() { private var mCurDayIndexDailySign: Int = 0 - private var mDailySignData: TaskDailySignBean = TaskDailySignBean() - - + override val mSpKey = SpUtil.KEY_TASK_BEAN override fun loadTaskFromSp() { - val taskStateBeanInSp = SpUtil.instance().getObject(SpUtil.KEY_TASK_BEAN) + val taskStateBeanInSp = SpUtil.instance().getObject(mSpKey) if (taskStateBeanInSp == null) { - SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData) + saveState2Sp() } else { - mDailySignData = taskStateBeanInSp + mStateBean = taskStateBeanInSp } } fun getCurDayIndexOfDailyCheckIn() : Int { var dayIndexOfPeriod = 0 - val periodStartMs = mDailySignData.startDurationMs + val periodStartMs = mStateBean.startDurationMs if (periodStartMs > 0) { dayIndexOfPeriod = DateUtil.getPassedDayNum(periodStartMs, DateUtil.getCurTimeMs()) if (dayIndexOfPeriod > 6) { - mDailySignData.startDurationMs = DateUtil.getCurTimeMs() - SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData) + mStateBean?.startDurationMs = DateUtil.getCurTimeMs() + saveState2Sp() } } else { - mDailySignData.startDurationMs = DateUtil.getCurTimeMs() - SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData) + mStateBean?.startDurationMs = DateUtil.getCurTimeMs() + saveState2Sp() } mCurDayIndexDailySign = dayIndexOfPeriod @@ -45,11 +43,11 @@ class DailySignTaskHelper : BaseTaskHelper() { } fun getDailySignStateBean(dayIndex: Int): DailySignDayInfoBean { - return mDailySignData.signStateList[dayIndex] + return mStateBean.signStateList[dayIndex] } fun executeDailySign(dayIndex: Int, isDoubleReward: Boolean, isByAd: Boolean) : Boolean { - val daySignState = mDailySignData.signStateList[dayIndex] + val daySignState = mStateBean.signStateList[dayIndex] if (!daySignState.hasSigned || (dayIndex == mCurDayIndexDailySign && !daySignState.hasWatchedAd)) { val dayReward = getRewardNumOfDailySign(dayIndex) @@ -57,7 +55,7 @@ class DailySignTaskHelper : BaseTaskHelper() { daySignState.hasRewardedNum += finalReward daySignState.hasSigned = true daySignState.hasWatchedAd = isByAd - saveDailySignInfo() + saveState2Sp() AccountManager.addGold(finalReward) notifySignStateChanged(Pair(dayIndex, daySignState)) return true @@ -69,12 +67,8 @@ class DailySignTaskHelper : BaseTaskHelper() { NotifyMan.instance().sendEvent(VididinEvents.Event_Sign_State_Changed, NotifyMan.NotifyData(dataPair)) } - private fun saveDailySignInfo() { - SpUtil.instance().putObject(SpUtil.KEY_DAILY_SIGN, mDailySignData) - } - fun generateTestDailySignTestBean() { - mDailySignData = TaskDailySignBean().apply { + mStateBean = TaskDailySignBean().apply { startDurationMs = DateUtil.getCurTimeMs() - 4 * DateUtil.MS_NUM_ONE_DAY signStateList.clear() signStateList.add(DailySignDayInfoBean(hasSigned = true, hasWatchedAd = true)) @@ -86,14 +80,14 @@ class DailySignTaskHelper : BaseTaskHelper() { signStateList.add(DailySignDayInfoBean(hasSigned = false, hasWatchedAd = false)) } - SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData) + saveState2Sp() AccountManager.saveBankAccount(null) } fun getForgotSignDays(): Int { var forgotSignDays = 0 val curDayIndex = getCurDayIndexOfDailyCheckIn() - mDailySignData.signStateList.forEachIndexed { index, item-> + mStateBean.signStateList.forEachIndexed { index, item-> if (!item.hasSigned && index < curDayIndex) { forgotSignDays++ } @@ -103,7 +97,7 @@ class DailySignTaskHelper : BaseTaskHelper() { fun getSignDaysTotal(): Int { var signDays = 0 - mDailySignData.signStateList.forEachIndexed { index, item-> + mStateBean.signStateList.forEachIndexed { index, item-> if (item.hasSigned) { signDays++ } @@ -113,7 +107,7 @@ class DailySignTaskHelper : BaseTaskHelper() { fun getForgotSignFirstDayIndex(): Int { val curDayIndex = getCurDayIndexOfDailyCheckIn() - mDailySignData.signStateList.forEachIndexed { index, item-> + mStateBean.signStateList.forEachIndexed { index, item-> if (!item.hasSigned && index < curDayIndex) { return index } @@ -123,7 +117,7 @@ class DailySignTaskHelper : BaseTaskHelper() { fun getDayStateList(): List { - return mDailySignData.signStateList + return mStateBean.signStateList } fun getRewardNumOfDailySign(dayIndex: Int) : Int { 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 958eedf..b2a47e2 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 @@ -2,15 +2,14 @@ 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.DailyStateWatchVideoBean +class DailyWatchVideoTaskHelper : BaseTaskHelper() { - -class DailyWatchVideoTaskHelper : BaseTaskHelper() { - - private var mStateBean: DailyStateWatchVideoBean? = null + override val mSpKey = SpUtil.KEY_DAILY_WATCH init { @@ -21,27 +20,34 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper() { } override fun loadTaskFromSp() { - mStateBean = SpUtil.instance().getObject(SpUtil.KEY_DAILY_WATCH) - - if (mStateBean == null || !isCurBeanInToday()) { + val spStateBean = SpUtil.instance().getObject(mSpKey) + if (spStateBean == null || !isCurBeanInToday(spStateBean)) { generateTodayTask() - SpUtil.instance().putObject(SpUtil.KEY_DAILY_WATCH, mStateBean) + saveState2Sp() + } else { + mStateBean = spStateBean + notifyEvents() } } + private fun notifyEvents() { + // TODO check read need info + NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Total, NotifyMan.NotifyData(11111L)) + } + private fun generateTodayTask() { - mStateBean?.clearDatas() + mStateBean.clearDatas() mStateBean = DailyStateWatchVideoBean(DateUtil.getCurTimeMs()) } - private fun isCurBeanInToday(): Boolean { - return mStateBean != null && DateUtil.isToday(mStateBean?.todayStartMs!!) + private fun isCurBeanInToday(stateBean: DailyStateWatchVideoBean): Boolean { + return DateUtil.isToday(stateBean.todayStartMs) } private fun handleVideoWatched(dataPair: Pair) { - mStateBean?.run { + mStateBean.run { addWatchedVideoInfo(dataPair) } diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieEnableNotifyHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieEnableNotifyHelper.kt index 102ce20..0c99221 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieEnableNotifyHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieEnableNotifyHelper.kt @@ -1,8 +1,11 @@ package com.gamedog.vididin.manager.helpers -class NewbieEnableNotifyHelper: BaseTaskHelper() { +import com.ama.core.architecture.util.SpUtil +import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieEnableNotify +class NewbieEnableNotifyHelper: BaseTaskHelper() { + override val mSpKey = SpUtil.KEY_NEWBIE_ENABLE_NOTIFY override fun loadTaskFromSp() { diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieFirstWithdrawHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieFirstWithdrawHelper.kt index 4bf137e..7f8708a 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieFirstWithdrawHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieFirstWithdrawHelper.kt @@ -1,8 +1,11 @@ package com.gamedog.vididin.manager.helpers -class NewbieFirstWithdrawHelper: BaseTaskHelper() { +import com.ama.core.architecture.util.SpUtil +import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieFirstWithDraw +class NewbieFirstWithdrawHelper: BaseTaskHelper() { + override val mSpKey = SpUtil.KEY_NEWBIE_FIRST_WITHDRAW override fun loadTaskFromSp() { diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieJoinDiscordHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieJoinDiscordHelper.kt index 75f6a43..99c965b 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieJoinDiscordHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/NewbieJoinDiscordHelper.kt @@ -1,8 +1,11 @@ package com.gamedog.vididin.manager.helpers -class NewbieJoinDiscordHelper: BaseTaskHelper() { +import com.ama.core.architecture.util.SpUtil +import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieJoinDiscord +class NewbieJoinDiscordHelper: BaseTaskHelper() { + override val mSpKey = SpUtil.KEY_NEWBIE_JOIN_DISCORD override fun loadTaskFromSp() { diff --git a/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt b/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt index 34ef5ec..0a4ce98 100644 --- a/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt +++ b/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt @@ -23,6 +23,12 @@ class SpUtil private constructor(spFileName: String) { // Various tasks const val KEY_DAILY_SIGN = "KEY_DAILY_SIGN" const val KEY_DAILY_WATCH = "KEY_DAILY_WATCH" + const val KEY_DAILY_BOX = "KEY_DAILY_BOX" + + const val KEY_NEWBIE_FIRST_WITHDRAW = "KEY_NEWBIE_FIRST_WITHDRAW" + const val KEY_NEWBIE_ENABLE_NOTIFY = "KEY_NEWBIE_ENABLE_NOTIFY" + const val KEY_NEWBIE_JOIN_DISCORD = "KEY_NEWBIE_JOIN_DISCORD" +