Fix pending reset for text messages. Fix sending error detection.
This commit is contained in:
parent
4f9cfeed7b
commit
1f7797da7e
2 changed files with 28 additions and 10 deletions
|
@ -108,7 +108,7 @@ private const val PROXY_ENABLED = "proxy_enabled"
|
|||
private const val PROXY_PREFERENCES_KEY = "proxy_preferences"
|
||||
|
||||
private const val SHARING_INITIALIZATION_TIME = 60 * 2L // 2 minutes
|
||||
private const val WAITING_TDLIB_TIME = 30 // 2 seconds
|
||||
private const val WAITING_TDLIB_TIME = 3 // 3 seconds
|
||||
|
||||
private const val GPS_UPDATE_EXPIRED_TIME = 60 * 3L // 3 minutes
|
||||
|
||||
|
@ -503,13 +503,15 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
|
||||
private fun getNewSharingStatusHistoryItem(): SharingStatus {
|
||||
return SharingStatus().apply {
|
||||
statusChangeTime = System.currentTimeMillis()
|
||||
val currentTimeMillis = System.currentTimeMillis()
|
||||
val currentTime = currentTimeMillis / 1000
|
||||
statusChangeTime = currentTimeMillis
|
||||
val lm = app.getSystemService(Context.LOCATION_SERVICE) as LocationManager
|
||||
val gpsEnabled = try {
|
||||
if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
|
||||
val loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER)
|
||||
val gpsActive = loc != null && ((statusChangeTime - loc.time) / 1000) < GPS_UPDATE_EXPIRED_TIME
|
||||
val lastSentLocationExpired = ((statusChangeTime - app.shareLocationHelper.lastLocationUpdateTime) / 1000) > GPS_UPDATE_EXPIRED_TIME
|
||||
val gpsActive = loc != null && ((currentTimeMillis - loc.time) / 1000) < GPS_UPDATE_EXPIRED_TIME
|
||||
val lastSentLocationExpired = ((currentTimeMillis - app.shareLocationHelper.lastLocationUpdateTime) / 1000) > GPS_UPDATE_EXPIRED_TIME
|
||||
(gpsActive || !lastSentLocationExpired)
|
||||
} else {
|
||||
false
|
||||
|
@ -522,12 +524,15 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
var sendChatsErrors = false
|
||||
|
||||
shareChatsInfo.forEach { (_, shareInfo) ->
|
||||
if (shareInfo.lastTextSuccessfulSendTime == -1L && shareInfo.lastMapSuccessfulSendTime == -1L
|
||||
&& ((statusChangeTime / 1000 - shareInfo.start) < SHARING_INITIALIZATION_TIME)) {
|
||||
val initTime = (currentTime - shareInfo.start) < SHARING_INITIALIZATION_TIME
|
||||
var initSending = false
|
||||
initSending = initSending || (shareInfo.lastTextSuccessfulSendTime == -1L && shareTypeValue != SHARE_TYPE_MAP)
|
||||
initSending = initSending || (shareInfo.lastMapSuccessfulSendTime == -1L && shareTypeValue != SHARE_TYPE_TEXT)
|
||||
if (initTime && initSending) {
|
||||
initializing = true
|
||||
} else {
|
||||
val textSharingError = shareInfo.lastSendTextMessageTime - shareInfo.lastTextSuccessfulSendTime > WAITING_TDLIB_TIME
|
||||
val mapSharingError = shareInfo.lastSendMapMessageTime - shareInfo.lastMapSuccessfulSendTime > WAITING_TDLIB_TIME
|
||||
val textSharingError = !shareInfo.lastTextMessageProcessed && currentTime - shareInfo.lastSendTextMessageTime > WAITING_TDLIB_TIME
|
||||
val mapSharingError = !shareInfo.lastMapMessageProcessed && currentTime - shareInfo.lastSendMapMessageTime > WAITING_TDLIB_TIME
|
||||
if (shareInfo.hasSharingError
|
||||
|| (shareTypeValue == SHARE_TYPE_MAP_AND_TEXT && (textSharingError || mapSharingError))
|
||||
|| textSharingError && (shareTypeValue == SHARE_TYPE_TEXT)
|
||||
|
@ -1424,7 +1429,15 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
var lastTextSuccessfulSendTime = -1L
|
||||
var lastMapSuccessfulSendTime = -1L
|
||||
var lastSendTextMessageTime = -1
|
||||
set(value) {
|
||||
field = value
|
||||
lastTextMessageProcessed = false
|
||||
}
|
||||
var lastSendMapMessageTime = -1
|
||||
set(value) {
|
||||
field = value
|
||||
lastMapMessageProcessed = false
|
||||
}
|
||||
var sentMessages = 0
|
||||
var pendingTdLibText = 0
|
||||
var pendingTdLibMap = 0
|
||||
|
@ -1434,6 +1447,8 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
var shouldSendViaBotMapMessage = false
|
||||
var hasSharingError = false
|
||||
var additionalActiveTime = ADDITIONAL_ACTIVE_TIME_VALUES_SEC[0]
|
||||
var lastMapMessageProcessed = false
|
||||
var lastTextMessageProcessed = false
|
||||
|
||||
fun getNextAdditionalActiveTime(): Long {
|
||||
var index = ADDITIONAL_ACTIVE_TIME_VALUES_SEC.indexOf(additionalActiveTime)
|
||||
|
|
|
@ -528,6 +528,7 @@ class TelegramHelper private constructor() {
|
|||
}
|
||||
}
|
||||
resultArticles.forEach {
|
||||
shareInfo.lastTextMessageProcessed = false
|
||||
client?.send(TdApi.SendInlineQueryResultMessage(shareInfo.chatId, 0, true,
|
||||
true, inlineQueryResults.inlineQueryId, it.id, false)) { obj ->
|
||||
handleTextLocationMessageUpdate(obj, shareInfo)
|
||||
|
@ -940,7 +941,7 @@ class TelegramHelper private constructor() {
|
|||
}
|
||||
|
||||
fun editTextLocation(shareInfo: TelegramSettings.ShareChatInfo, content: TdApi.InputMessageText) {
|
||||
if (shareInfo.currentTextMessageId!=-1L) {
|
||||
if (shareInfo.currentTextMessageId != -1L) {
|
||||
shareInfo.pendingTdLibText++
|
||||
shareInfo.lastSendTextMessageTime = (System.currentTimeMillis() / 1000).toInt()
|
||||
log.info("editTextLocation ${shareInfo.currentTextMessageId} pendingTdLibText: ${shareInfo.pendingTdLibText}")
|
||||
|
@ -985,6 +986,7 @@ class TelegramHelper private constructor() {
|
|||
}
|
||||
|
||||
private fun handleMapLocationMessageUpdate(obj: TdApi.Object, shareInfo: TelegramSettings.ShareChatInfo) {
|
||||
shareInfo.lastMapMessageProcessed = true
|
||||
when (obj.constructor) {
|
||||
TdApi.Error.CONSTRUCTOR -> {
|
||||
log.debug("handleMapLocationMessageUpdate - ERROR $obj")
|
||||
|
@ -1032,11 +1034,12 @@ class TelegramHelper private constructor() {
|
|||
}
|
||||
|
||||
private fun handleTextLocationMessageUpdate(obj: TdApi.Object, shareInfo: TelegramSettings.ShareChatInfo) {
|
||||
shareInfo.lastTextMessageProcessed = true
|
||||
when (obj.constructor) {
|
||||
TdApi.Error.CONSTRUCTOR -> {
|
||||
log.debug("handleTextLocationMessageUpdate - ERROR")
|
||||
val error = obj as TdApi.Error
|
||||
shareInfo.pendingMapMessage = false
|
||||
shareInfo.pendingTextMessage = false
|
||||
if (error.code != IGNORED_ERROR_CODE) {
|
||||
shareInfo.hasSharingError = true
|
||||
outgoingMessagesListeners.forEach {
|
||||
|
|
Loading…
Reference in a new issue