pref: 移除无用代码
This commit is contained in:
parent
a9c6d70af5
commit
5caa0d4c5d
|
|
@ -126,9 +126,6 @@ dependencies {
|
||||||
|
|
||||||
implementation "androidx.navigation:navigation-compose:2.5.3"
|
implementation "androidx.navigation:navigation-compose:2.5.3"
|
||||||
|
|
||||||
def work_version = "2.7.1"
|
|
||||||
implementation "androidx.work:work-runtime-ktx:$work_version"
|
|
||||||
|
|
||||||
api "com.squareup.wire:wire-runtime:$wire_version"
|
api "com.squareup.wire:wire-runtime:$wire_version"
|
||||||
|
|
||||||
def hilt_androidx_version = "1.0.0"
|
def hilt_androidx_version = "1.0.0"
|
||||||
|
|
@ -260,7 +257,7 @@ dependencies {
|
||||||
transitive = true
|
transitive = true
|
||||||
}
|
}
|
||||||
|
|
||||||
def appCenterSdkVersion = '4.4.5'
|
def appCenterSdkVersion = '5.0.0'
|
||||||
implementation "com.microsoft.appcenter:appcenter-analytics:${appCenterSdkVersion}"
|
implementation "com.microsoft.appcenter:appcenter-analytics:${appCenterSdkVersion}"
|
||||||
implementation "com.microsoft.appcenter:appcenter-crashes:${appCenterSdkVersion}"
|
implementation "com.microsoft.appcenter:appcenter-crashes:${appCenterSdkVersion}"
|
||||||
implementation "com.microsoft.appcenter:appcenter-distribute:${appCenterSdkVersion}"
|
implementation "com.microsoft.appcenter:appcenter-distribute:${appCenterSdkVersion}"
|
||||||
|
|
|
||||||
|
|
@ -1,136 +0,0 @@
|
||||||
package com.huanchengfly.tieba.post.adapters
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.util.Log
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import androidx.work.Data
|
|
||||||
import androidx.work.hasKeyWithValueOfType
|
|
||||||
import com.alibaba.android.vlayout.DelegateAdapter
|
|
||||||
import com.alibaba.android.vlayout.LayoutHelper
|
|
||||||
import com.alibaba.android.vlayout.layout.SingleLayoutHelper
|
|
||||||
import com.huanchengfly.tieba.post.R
|
|
||||||
import com.huanchengfly.tieba.post.components.MyViewHolder
|
|
||||||
import com.huanchengfly.tieba.post.components.workers.OKSignWork.Companion.DATA_ACCOUNT_NICKNAME
|
|
||||||
import com.huanchengfly.tieba.post.components.workers.OKSignWork.Companion.DATA_CURRENT_POSITION
|
|
||||||
import com.huanchengfly.tieba.post.components.workers.OKSignWork.Companion.DATA_ERROR
|
|
||||||
import com.huanchengfly.tieba.post.components.workers.OKSignWork.Companion.DATA_ERROR_CODE
|
|
||||||
import com.huanchengfly.tieba.post.components.workers.OKSignWork.Companion.DATA_ERROR_MESSAGE
|
|
||||||
import com.huanchengfly.tieba.post.components.workers.OKSignWork.Companion.DATA_STARTED
|
|
||||||
import com.huanchengfly.tieba.post.components.workers.OKSignWork.Companion.DATA_SUCCESS
|
|
||||||
import com.huanchengfly.tieba.post.components.workers.OKSignWork.Companion.DATA_TIMESTAMP
|
|
||||||
import com.huanchengfly.tieba.post.components.workers.OKSignWork.Companion.DATA_TOTAL_COUNT
|
|
||||||
import com.huanchengfly.tieba.post.ui.widgets.CircleProgressView
|
|
||||||
import com.huanchengfly.tieba.post.utils.DateTimeUtils
|
|
||||||
|
|
||||||
class OKSignProgressAdapter(
|
|
||||||
val context: Context,
|
|
||||||
var data: Data? = null,
|
|
||||||
) : DelegateAdapter.Adapter<MyViewHolder>() {
|
|
||||||
var closed = false
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
notifyDataSetChanged()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
|
|
||||||
return MyViewHolder(context, R.layout.item_oksign_progress, parent)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getItemCount(): Int = 1
|
|
||||||
|
|
||||||
override fun onCreateLayoutHelper(): LayoutHelper = SingleLayoutHelper()
|
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
|
|
||||||
Log.i("OKSignProgressAdapter", "${holder.itemView}")
|
|
||||||
data.let {
|
|
||||||
if (it == null || !it.hasKeyWithValueOfType<Boolean>(DATA_SUCCESS) || closed) {
|
|
||||||
holder.setVisibility(R.id.oksign_progress, false)
|
|
||||||
return@let
|
|
||||||
}
|
|
||||||
holder.setOnClickListener(R.id.oksign_progress_close_btn) {
|
|
||||||
closed = true
|
|
||||||
}
|
|
||||||
holder.setVisibility(R.id.oksign_progress, true)
|
|
||||||
val success = it.getBoolean(DATA_SUCCESS, false)
|
|
||||||
val started = it.getBoolean(DATA_STARTED, true)
|
|
||||||
val error = it.getBoolean(DATA_ERROR, false)
|
|
||||||
val currentPosition = it.getInt(DATA_CURRENT_POSITION, 0)
|
|
||||||
val totalCount = it.getInt(DATA_TOTAL_COUNT, 0)
|
|
||||||
val accountNickname = it.getString(DATA_ACCOUNT_NICKNAME)
|
|
||||||
val timestamp = it.getLong(DATA_TIMESTAMP, System.currentTimeMillis())
|
|
||||||
if (success) {
|
|
||||||
holder.setVisibility(R.id.oksign_progress_close_btn, true)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_progress, false)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_progress_indeterminate, false)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_icon, true)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_content, true)
|
|
||||||
holder.setImageResource(R.id.oksign_progress_icon, R.drawable.ic_round_check)
|
|
||||||
holder.setText(
|
|
||||||
R.id.oksign_progress_title,
|
|
||||||
context.getString(
|
|
||||||
R.string.title_oksign_finish_time,
|
|
||||||
DateTimeUtils.getRelativeTimeString(context, timestamp)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
holder.setText(
|
|
||||||
R.id.oksign_progress_content,
|
|
||||||
if (totalCount > 0) context.getString(
|
|
||||||
R.string.text_oksign_done,
|
|
||||||
totalCount
|
|
||||||
) else context.getString(R.string.text_oksign_no_signable)
|
|
||||||
)
|
|
||||||
} else if (error) {
|
|
||||||
val errorCode = it.getInt(DATA_ERROR_CODE, 0)
|
|
||||||
val errorMessage = it.getString(DATA_ERROR_MESSAGE)
|
|
||||||
holder.setText(
|
|
||||||
R.id.oksign_progress_title,
|
|
||||||
context.getString(R.string.title_oksign_fail)
|
|
||||||
)
|
|
||||||
holder.setText(R.id.oksign_progress_content, errorMessage)
|
|
||||||
if (totalCount > 0) {
|
|
||||||
holder.setVisibility(R.id.oksign_progress_close_btn, false)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_progress, true)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_progress_indeterminate, false)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_icon, false)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_content, true)
|
|
||||||
holder.getView<CircleProgressView>(R.id.oksign_progress_progress).progress =
|
|
||||||
currentPosition * 100 / totalCount
|
|
||||||
} else {
|
|
||||||
holder.setVisibility(R.id.oksign_progress_close_btn, true)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_progress, false)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_progress_indeterminate, false)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_icon, true)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_content, false)
|
|
||||||
holder.setImageResource(R.id.oksign_progress_icon, R.drawable.ic_round_clear_24)
|
|
||||||
}
|
|
||||||
} else if (started && totalCount > 0) {
|
|
||||||
holder.setVisibility(R.id.oksign_progress_close_btn, false)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_progress, true)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_progress_indeterminate, false)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_icon, false)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_content, false)
|
|
||||||
holder.getView<CircleProgressView>(R.id.oksign_progress_progress).progress =
|
|
||||||
currentPosition * 100 / totalCount
|
|
||||||
holder.setText(
|
|
||||||
R.id.oksign_progress_title,
|
|
||||||
context.getString(
|
|
||||||
R.string.title_signing_progress,
|
|
||||||
accountNickname,
|
|
||||||
currentPosition,
|
|
||||||
totalCount
|
|
||||||
)
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
holder.setVisibility(R.id.oksign_progress_close_btn, false)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_progress, false)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_progress_indeterminate, true)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_icon, false)
|
|
||||||
holder.setVisibility(R.id.oksign_progress_content, false)
|
|
||||||
holder.setText(
|
|
||||||
R.id.oksign_progress_title,
|
|
||||||
context.getString(R.string.title_loading_data)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,253 +0,0 @@
|
||||||
package com.huanchengfly.tieba.post.components.workers
|
|
||||||
|
|
||||||
import android.Manifest
|
|
||||||
import android.app.PendingIntent
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
|
||||||
import android.content.pm.PackageManager
|
|
||||||
import android.widget.Toast
|
|
||||||
import androidx.core.app.ActivityCompat
|
|
||||||
import androidx.core.app.NotificationChannelCompat
|
|
||||||
import androidx.core.app.NotificationCompat
|
|
||||||
import androidx.core.app.NotificationManagerCompat
|
|
||||||
import androidx.work.CoroutineWorker
|
|
||||||
import androidx.work.Data
|
|
||||||
import androidx.work.ForegroundInfo
|
|
||||||
import androidx.work.WorkerParameters
|
|
||||||
import com.huanchengfly.tieba.post.R
|
|
||||||
import com.huanchengfly.tieba.post.activities.MainActivity
|
|
||||||
import com.huanchengfly.tieba.post.api.models.SignResultBean
|
|
||||||
import com.huanchengfly.tieba.post.models.SignDataBean
|
|
||||||
import com.huanchengfly.tieba.post.models.database.Account
|
|
||||||
import com.huanchengfly.tieba.post.pendingIntentFlagImmutable
|
|
||||||
import com.huanchengfly.tieba.post.ui.common.theme.utils.ThemeUtils
|
|
||||||
import com.huanchengfly.tieba.post.utils.AccountUtil
|
|
||||||
import com.huanchengfly.tieba.post.utils.ProgressListener
|
|
||||||
import com.huanchengfly.tieba.post.utils.SingleAccountSigner
|
|
||||||
import com.huanchengfly.tieba.post.utils.addFlag
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import kotlinx.coroutines.runBlocking
|
|
||||||
import kotlinx.coroutines.withContext
|
|
||||||
|
|
||||||
class OKSignWork(
|
|
||||||
private val context: Context,
|
|
||||||
workerParams: WorkerParameters
|
|
||||||
) :
|
|
||||||
CoroutineWorker(context, workerParams), ProgressListener {
|
|
||||||
private var currentAccount: Account? = null
|
|
||||||
|
|
||||||
private val notificationManager: NotificationManagerCompat by lazy {
|
|
||||||
NotificationManagerCompat.from(
|
|
||||||
context
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun doWork(): Result {
|
|
||||||
return withContext(Dispatchers.IO) {
|
|
||||||
val account = AccountUtil.getLoginInfo().also { currentAccount = it }
|
|
||||||
?: return@withContext Result.failure()
|
|
||||||
updateNotification(
|
|
||||||
context.getString(R.string.title_loading_data),
|
|
||||||
context.getString(R.string.text_please_wait)
|
|
||||||
)
|
|
||||||
setProgressAsync(buildData(false, 0, 0, started = false))
|
|
||||||
runBlocking {
|
|
||||||
val success =
|
|
||||||
SingleAccountSigner(context = context, account = account).setProgressListener(
|
|
||||||
this@OKSignWork
|
|
||||||
).start()
|
|
||||||
if (success) {
|
|
||||||
Result.success()
|
|
||||||
} else {
|
|
||||||
Result.failure()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun getForegroundInfo(): ForegroundInfo {
|
|
||||||
return ForegroundInfo(
|
|
||||||
9,
|
|
||||||
buildNotification(
|
|
||||||
context.getString(R.string.title_oksign),
|
|
||||||
context.getString(R.string.tip_oksign_running)
|
|
||||||
).build()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun createNotificationChannel() {
|
|
||||||
notificationManager.createNotificationChannel(
|
|
||||||
NotificationChannelCompat.Builder(
|
|
||||||
NOTIFICATION_CHANNEL_ID,
|
|
||||||
NotificationManagerCompat.IMPORTANCE_LOW
|
|
||||||
)
|
|
||||||
.setName(context.getString(R.string.title_oksign))
|
|
||||||
.setLightsEnabled(false)
|
|
||||||
.setShowBadge(false)
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun buildNotification(title: String, text: String?): NotificationCompat.Builder {
|
|
||||||
createNotificationChannel()
|
|
||||||
return NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID)
|
|
||||||
.setContentText(text)
|
|
||||||
.setContentTitle(title)
|
|
||||||
.setSubText(context.getString(R.string.title_oksign))
|
|
||||||
.setSmallIcon(R.drawable.ic_oksign)
|
|
||||||
.setAutoCancel(true)
|
|
||||||
.setStyle(NotificationCompat.BigTextStyle())
|
|
||||||
.setColor(ThemeUtils.getColorByAttr(context, R.attr.colorPrimary))
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun updateNotification(title: String, text: String, intent: Intent) {
|
|
||||||
if (ActivityCompat.checkSelfPermission(
|
|
||||||
context,
|
|
||||||
Manifest.permission.POST_NOTIFICATIONS
|
|
||||||
) != PackageManager.PERMISSION_GRANTED
|
|
||||||
) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
notificationManager.notify(
|
|
||||||
1,
|
|
||||||
buildNotification(title, text)
|
|
||||||
.setContentIntent(
|
|
||||||
PendingIntent.getActivity(
|
|
||||||
context,
|
|
||||||
0,
|
|
||||||
intent,
|
|
||||||
pendingIntentFlagImmutable()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun updateNotification(title: String, text: String?) {
|
|
||||||
if (ActivityCompat.checkSelfPermission(
|
|
||||||
context,
|
|
||||||
Manifest.permission.POST_NOTIFICATIONS
|
|
||||||
) != PackageManager.PERMISSION_GRANTED
|
|
||||||
) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
val notification = buildNotification(title, text)
|
|
||||||
.build()
|
|
||||||
notification.flags = notification.flags.addFlag(NotificationCompat.FLAG_ONGOING_EVENT)
|
|
||||||
notificationManager.notify(1, notification)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun buildData(
|
|
||||||
success: Boolean,
|
|
||||||
current: Int,
|
|
||||||
total: Int,
|
|
||||||
errorCode: Int? = null,
|
|
||||||
errorMessage: String? = null,
|
|
||||||
started: Boolean = true,
|
|
||||||
): Data {
|
|
||||||
return Data.Builder()
|
|
||||||
.putBoolean(DATA_STARTED, started)
|
|
||||||
.putBoolean(DATA_SUCCESS, success)
|
|
||||||
.putBoolean(DATA_ERROR, errorCode != null)
|
|
||||||
.apply {
|
|
||||||
if (errorCode != null) {
|
|
||||||
putInt(DATA_ERROR_CODE, errorCode)
|
|
||||||
putString(DATA_ERROR_MESSAGE, errorMessage)
|
|
||||||
}
|
|
||||||
currentAccount?.let {
|
|
||||||
putInt(DATA_ACCOUNT_ID, it.id)
|
|
||||||
putString(DATA_ACCOUNT_NICKNAME, it.nameShow ?: it.name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.putInt(DATA_CURRENT_POSITION, current)
|
|
||||||
.putInt(DATA_TOTAL_COUNT, total)
|
|
||||||
.putLong(DATA_TIMESTAMP, System.currentTimeMillis())
|
|
||||||
.build()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onStart(total: Int) {
|
|
||||||
setProgressAsync(buildData(false, 0, total))
|
|
||||||
updateNotification(context.getString(R.string.title_start_sign), null)
|
|
||||||
if (total > 0) Toast.makeText(
|
|
||||||
context,
|
|
||||||
R.string.toast_oksign_start,
|
|
||||||
Toast.LENGTH_SHORT
|
|
||||||
).show()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onProgressStart(signDataBean: SignDataBean, current: Int, total: Int) {
|
|
||||||
setProgressAsync(buildData(false, current, total))
|
|
||||||
updateNotification(
|
|
||||||
context.getString(
|
|
||||||
R.string.title_signing_progress,
|
|
||||||
signDataBean.userName,
|
|
||||||
current,
|
|
||||||
total
|
|
||||||
),
|
|
||||||
context.getString(
|
|
||||||
R.string.title_forum_name,
|
|
||||||
signDataBean.forumName
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onProgressFinish(
|
|
||||||
signDataBean: SignDataBean,
|
|
||||||
signResultBean: SignResultBean,
|
|
||||||
current: Int,
|
|
||||||
total: Int
|
|
||||||
) {
|
|
||||||
setProgressAsync(buildData(false, current + 1, total))
|
|
||||||
updateNotification(
|
|
||||||
context.getString(
|
|
||||||
R.string.title_signing_progress,
|
|
||||||
signDataBean.userName,
|
|
||||||
current + 1,
|
|
||||||
total
|
|
||||||
),
|
|
||||||
if (signResultBean.userInfo?.signBonusPoint != null)
|
|
||||||
context.getString(
|
|
||||||
R.string.text_singing_progress_exp,
|
|
||||||
signDataBean.forumName,
|
|
||||||
signResultBean.userInfo.signBonusPoint
|
|
||||||
)
|
|
||||||
else
|
|
||||||
context.getString(R.string.text_singing_progress, signDataBean.forumName)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onFinish(success: Boolean, signedCount: Int, total: Int) {
|
|
||||||
setProgressAsync(buildData(true, total, total))
|
|
||||||
updateNotification(
|
|
||||||
context.getString(R.string.title_oksign_finish),
|
|
||||||
if (total > 0) context.getString(
|
|
||||||
R.string.text_oksign_done,
|
|
||||||
signedCount
|
|
||||||
) else context.getString(R.string.text_oksign_no_signable),
|
|
||||||
Intent(context, MainActivity::class.java)
|
|
||||||
)
|
|
||||||
context.sendBroadcast(Intent(ACTION_SIGN_SUCCESS_ALL))
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onFailure(current: Int, total: Int, errorCode: Int, errorMsg: String) {
|
|
||||||
setProgressAsync(buildData(false, current, total, errorCode, errorMsg))
|
|
||||||
updateNotification(context.getString(R.string.title_oksign_fail), errorMsg)
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
const val DATA_ACCOUNT_ID = "account_id"
|
|
||||||
const val DATA_ACCOUNT_NICKNAME = "account_nickname"
|
|
||||||
const val DATA_SUCCESS = "success"
|
|
||||||
const val DATA_STARTED = "started"
|
|
||||||
const val DATA_ERROR = "error"
|
|
||||||
const val DATA_ERROR_CODE = "error_code"
|
|
||||||
const val DATA_ERROR_MESSAGE = "error_message"
|
|
||||||
const val DATA_CURRENT_POSITION = "current_position"
|
|
||||||
const val DATA_TOTAL_COUNT = "total_count"
|
|
||||||
const val DATA_TIMESTAMP = "timestamp"
|
|
||||||
|
|
||||||
const val NOTIFICATION_CHANNEL_ID = "1"
|
|
||||||
const val ACTION_SIGN_SUCCESS_ALL =
|
|
||||||
"com.huanchengfly.tieba.post.service.action.SIGN_SUCCESS_ALL"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -10,9 +10,6 @@ import android.widget.Toast
|
||||||
import androidx.appcompat.widget.Toolbar
|
import androidx.appcompat.widget.Toolbar
|
||||||
import androidx.constraintlayout.motion.widget.MotionLayout
|
import androidx.constraintlayout.motion.widget.MotionLayout
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import androidx.work.Data
|
|
||||||
import androidx.work.WorkManager
|
|
||||||
import androidx.work.hasKeyWithValueOfType
|
|
||||||
import butterknife.BindView
|
import butterknife.BindView
|
||||||
import com.alibaba.android.vlayout.DelegateAdapter
|
import com.alibaba.android.vlayout.DelegateAdapter
|
||||||
import com.alibaba.android.vlayout.VirtualLayoutManager
|
import com.alibaba.android.vlayout.VirtualLayoutManager
|
||||||
|
|
@ -22,7 +19,6 @@ import com.huanchengfly.tieba.post.activities.ForumActivity
|
||||||
import com.huanchengfly.tieba.post.activities.NewSearchActivity
|
import com.huanchengfly.tieba.post.activities.NewSearchActivity
|
||||||
import com.huanchengfly.tieba.post.adapters.HeaderDelegateAdapter
|
import com.huanchengfly.tieba.post.adapters.HeaderDelegateAdapter
|
||||||
import com.huanchengfly.tieba.post.adapters.MainForumListAdapter
|
import com.huanchengfly.tieba.post.adapters.MainForumListAdapter
|
||||||
import com.huanchengfly.tieba.post.adapters.OKSignProgressAdapter
|
|
||||||
import com.huanchengfly.tieba.post.adapters.base.OnItemClickListener
|
import com.huanchengfly.tieba.post.adapters.base.OnItemClickListener
|
||||||
import com.huanchengfly.tieba.post.adapters.base.OnItemLongClickListener
|
import com.huanchengfly.tieba.post.adapters.base.OnItemLongClickListener
|
||||||
import com.huanchengfly.tieba.post.api.Error
|
import com.huanchengfly.tieba.post.api.Error
|
||||||
|
|
@ -33,8 +29,6 @@ import com.huanchengfly.tieba.post.api.models.ForumRecommend
|
||||||
import com.huanchengfly.tieba.post.api.retrofit.exception.TiebaException
|
import com.huanchengfly.tieba.post.api.retrofit.exception.TiebaException
|
||||||
import com.huanchengfly.tieba.post.api.retrofit.exception.TiebaLocalException
|
import com.huanchengfly.tieba.post.api.retrofit.exception.TiebaLocalException
|
||||||
import com.huanchengfly.tieba.post.components.MyViewHolder
|
import com.huanchengfly.tieba.post.components.MyViewHolder
|
||||||
import com.huanchengfly.tieba.post.components.workers.OKSignWork.Companion.DATA_SUCCESS
|
|
||||||
import com.huanchengfly.tieba.post.components.workers.OKSignWork.Companion.DATA_TIMESTAMP
|
|
||||||
import com.huanchengfly.tieba.post.interfaces.Refreshable
|
import com.huanchengfly.tieba.post.interfaces.Refreshable
|
||||||
import com.huanchengfly.tieba.post.models.database.TopForum
|
import com.huanchengfly.tieba.post.models.database.TopForum
|
||||||
import com.huanchengfly.tieba.post.utils.*
|
import com.huanchengfly.tieba.post.utils.*
|
||||||
|
|
@ -43,8 +37,6 @@ import com.huanchengfly.tieba.post.utils.preload.PreloadUtil
|
||||||
import com.huanchengfly.tieba.post.utils.preload.loaders.ForumLoader
|
import com.huanchengfly.tieba.post.utils.preload.loaders.ForumLoader
|
||||||
import com.scwang.smart.refresh.header.MaterialHeader
|
import com.scwang.smart.refresh.header.MaterialHeader
|
||||||
import com.scwang.smart.refresh.layout.SmartRefreshLayout
|
import com.scwang.smart.refresh.layout.SmartRefreshLayout
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import kotlinx.coroutines.withContext
|
|
||||||
import org.litepal.LitePal
|
import org.litepal.LitePal
|
||||||
import retrofit2.Call
|
import retrofit2.Call
|
||||||
import retrofit2.Callback
|
import retrofit2.Callback
|
||||||
|
|
@ -92,15 +84,6 @@ class MainForumListFragment : BaseFragment(), Refreshable, Toolbar.OnMenuItemCli
|
||||||
|
|
||||||
var listSingle: Boolean = false
|
var listSingle: Boolean = false
|
||||||
|
|
||||||
private var okSignProgressData: Data? = null
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
okSignProgressAdapter.data = value
|
|
||||||
okSignProgressAdapter.notifyDataSetChanged()
|
|
||||||
reloadAdapters()
|
|
||||||
}
|
|
||||||
private lateinit var okSignProgressAdapter: OKSignProgressAdapter
|
|
||||||
|
|
||||||
fun reset() {
|
fun reset() {
|
||||||
if (isFragmentVisible) {
|
if (isFragmentVisible) {
|
||||||
mRefreshView.autoRefresh()
|
mRefreshView.autoRefresh()
|
||||||
|
|
@ -118,9 +101,6 @@ class MainForumListFragment : BaseFragment(), Refreshable, Toolbar.OnMenuItemCli
|
||||||
mRecyclerView.recycledViewPool.clear()
|
mRecyclerView.recycledViewPool.clear()
|
||||||
reloadAdapters()
|
reloadAdapters()
|
||||||
}
|
}
|
||||||
if (view != null) {
|
|
||||||
runCatching { refreshOKSignProgress() }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onAccountSwitch() {
|
override fun onAccountSwitch() {
|
||||||
|
|
@ -181,68 +161,11 @@ class MainForumListFragment : BaseFragment(), Refreshable, Toolbar.OnMenuItemCli
|
||||||
|
|
||||||
private fun startSign() {
|
private fun startSign() {
|
||||||
TiebaUtil.startSign(attachContext)
|
TiebaUtil.startSign(attachContext)
|
||||||
runCatching { refreshOKSignProgress() }
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun refreshOKSignProgress() {
|
|
||||||
launchIO {
|
|
||||||
val workInfos =
|
|
||||||
withContext(Dispatchers.IO) {
|
|
||||||
WorkManager.getInstance(attachContext).getWorkInfosForUniqueWork("OKSign").get()
|
|
||||||
}
|
|
||||||
withContext(Dispatchers.Main) {
|
|
||||||
if (workInfos.isNotEmpty()) {
|
|
||||||
val workInfo = workInfos[0]
|
|
||||||
val id = workInfo.id
|
|
||||||
if (appPreferences.oksignWorkId != id.toString()) {
|
|
||||||
appPreferences.oksignWorkId = id.toString()
|
|
||||||
okSignProgressAdapter.data = null
|
|
||||||
okSignProgressAdapter.closed = false
|
|
||||||
}
|
|
||||||
val progressData = workInfo.progress
|
|
||||||
okSignProgressData =
|
|
||||||
if (progressData.hasKeyWithValueOfType<Boolean>(DATA_SUCCESS)) {
|
|
||||||
progressData
|
|
||||||
} else {
|
|
||||||
null
|
|
||||||
}
|
|
||||||
val workInfoLiveData =
|
|
||||||
WorkManager.getInstance(attachContext).getWorkInfoByIdLiveData(id)
|
|
||||||
if (view != null) {
|
|
||||||
runCatching {
|
|
||||||
workInfoLiveData.observe(viewLifecycleOwner) {
|
|
||||||
runCatching {
|
|
||||||
if (it == null) {
|
|
||||||
workInfoLiveData.removeObservers(viewLifecycleOwner)
|
|
||||||
return@observe
|
|
||||||
}
|
|
||||||
if (it.progress.getBoolean(DATA_SUCCESS, false)) {
|
|
||||||
workInfoLiveData.removeObservers(viewLifecycleOwner)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (DateTimeUtils.isToday(
|
|
||||||
it.progress.getLong(
|
|
||||||
DATA_TIMESTAMP,
|
|
||||||
System.currentTimeMillis()
|
|
||||||
)
|
|
||||||
) && it.progress.hasKeyWithValueOfType<Boolean>(DATA_SUCCESS)
|
|
||||||
) {
|
|
||||||
okSignProgressData = it.progress
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
okSignProgressData = null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("ApplySharedPref")
|
@SuppressLint("ApplySharedPref")
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
okSignProgressAdapter = OKSignProgressAdapter(attachContext, okSignProgressData)
|
|
||||||
topForumListAdapter = MainForumListAdapter(
|
topForumListAdapter = MainForumListAdapter(
|
||||||
attachContext,
|
attachContext,
|
||||||
spanCount
|
spanCount
|
||||||
|
|
@ -304,7 +227,6 @@ class MainForumListFragment : BaseFragment(), Refreshable, Toolbar.OnMenuItemCli
|
||||||
delegateAdapter.clear()
|
delegateAdapter.clear()
|
||||||
topForumListAdapter.spanCount = spanCount
|
topForumListAdapter.spanCount = spanCount
|
||||||
mainForumListAdapter.spanCount = spanCount
|
mainForumListAdapter.spanCount = spanCount
|
||||||
delegateAdapter.addAdapter(okSignProgressAdapter)
|
|
||||||
if (topForumItems.isNotEmpty()) {
|
if (topForumItems.isNotEmpty()) {
|
||||||
delegateAdapter.addAdapter(HeaderDelegateAdapter(
|
delegateAdapter.addAdapter(HeaderDelegateAdapter(
|
||||||
attachContext,
|
attachContext,
|
||||||
|
|
|
||||||
|
|
@ -102,11 +102,6 @@ object TiebaUtil {
|
||||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
.setAction(OKSignService.ACTION_START_SIGN)
|
.setAction(OKSignService.ACTION_START_SIGN)
|
||||||
)
|
)
|
||||||
// val okSignWork = OneTimeWorkRequestBuilder<OKSignWork>()
|
|
||||||
// .setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST)
|
|
||||||
// .build()
|
|
||||||
// WorkManager.getInstance(context)
|
|
||||||
// .enqueueUniqueWork("OKSign", ExistingWorkPolicy.KEEP, okSignWork)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue