move additionalActiveTime to shareInfo
This commit is contained in:
parent
82138587fc
commit
7c7f9cb945
2 changed files with 25 additions and 26 deletions
|
@ -31,7 +31,7 @@ private val LOC_HISTORY_VALUES_SEC = listOf(
|
||||||
12 * 60 * 60L,
|
12 * 60 * 60L,
|
||||||
24 * 60 * 60L
|
24 * 60 * 60L
|
||||||
)
|
)
|
||||||
private val MESSAGE_ADD_ACTIVE_TIME_VALUES_SEC = listOf(15 * 60L, 30 * 60L, 60 * 60L, 180 * 60L)
|
private val ADDITIONAL_ACTIVE_TIME_VALUES_SEC = listOf(15 * 60L, 30 * 60L, 60 * 60L, 180 * 60L)
|
||||||
|
|
||||||
private const val SEND_MY_LOC_DEFAULT_INDEX = 6
|
private const val SEND_MY_LOC_DEFAULT_INDEX = 6
|
||||||
private const val STALE_LOC_DEFAULT_INDEX = 4
|
private const val STALE_LOC_DEFAULT_INDEX = 4
|
||||||
|
@ -63,7 +63,6 @@ private const val SHARE_CHATS_INFO_KEY = "share_chats_info"
|
||||||
|
|
||||||
class TelegramSettings(private val app: TelegramApplication) {
|
class TelegramSettings(private val app: TelegramApplication) {
|
||||||
|
|
||||||
private var chatShareAddActiveTime = mutableMapOf<Long, Long>()
|
|
||||||
private var shareChatsInfo = mutableMapOf<Long, ShareChatInfo>()
|
private var shareChatsInfo = mutableMapOf<Long, ShareChatInfo>()
|
||||||
private var hiddenOnMapChats: Set<Long> = emptySet()
|
private var hiddenOnMapChats: Set<Long> = emptySet()
|
||||||
|
|
||||||
|
@ -102,10 +101,6 @@ class TelegramSettings(private val app: TelegramApplication) {
|
||||||
hiddenChats.intersect(presentChatIds)
|
hiddenChats.intersect(presentChatIds)
|
||||||
hiddenOnMapChats = hiddenChats.toHashSet()
|
hiddenOnMapChats = hiddenChats.toHashSet()
|
||||||
|
|
||||||
chatShareAddActiveTime = chatShareAddActiveTime.filter { (key, _) ->
|
|
||||||
presentChatIds.contains(key)
|
|
||||||
}.toMutableMap()
|
|
||||||
|
|
||||||
shareChatsInfo = shareChatsInfo.filter { (key, _) ->
|
shareChatsInfo = shareChatsInfo.filter { (key, _) ->
|
||||||
presentChatIds.contains(key)
|
presentChatIds.contains(key)
|
||||||
}.toMutableMap()
|
}.toMutableMap()
|
||||||
|
@ -115,7 +110,7 @@ class TelegramSettings(private val app: TelegramApplication) {
|
||||||
chatId: Long,
|
chatId: Long,
|
||||||
share: Boolean,
|
share: Boolean,
|
||||||
livePeriod: Long = DEFAULT_VISIBLE_TIME_SECONDS,
|
livePeriod: Long = DEFAULT_VISIBLE_TIME_SECONDS,
|
||||||
addActiveTime: Long = MESSAGE_ADD_ACTIVE_TIME_VALUES_SEC[0]
|
addActiveTime: Long = ADDITIONAL_ACTIVE_TIME_VALUES_SEC[0]
|
||||||
) {
|
) {
|
||||||
if (share) {
|
if (share) {
|
||||||
val lp: Long = when {
|
val lp: Long = when {
|
||||||
|
@ -133,11 +128,11 @@ class TelegramSettings(private val app: TelegramApplication) {
|
||||||
}
|
}
|
||||||
shareChatInfo.userSetLivePeriod = lp
|
shareChatInfo.userSetLivePeriod = lp
|
||||||
shareChatInfo.userSetLivePeriodStart = currentTime
|
shareChatInfo.userSetLivePeriodStart = currentTime
|
||||||
shareChatInfo.currentMessageLimit = currentTime + Math.min(lp, TelegramHelper.MAX_LOCATION_MESSAGE_LIVE_PERIOD_SEC.toLong())
|
shareChatInfo.currentMessageLimit = currentTime +
|
||||||
chatShareAddActiveTime[chatId] = addActiveTime
|
Math.min(lp, TelegramHelper.MAX_LOCATION_MESSAGE_LIVE_PERIOD_SEC.toLong())
|
||||||
|
shareChatInfo.additionalActiveTime = addActiveTime
|
||||||
shareChatsInfo[chatId] = shareChatInfo
|
shareChatsInfo[chatId] = shareChatInfo
|
||||||
} else {
|
} else {
|
||||||
chatShareAddActiveTime.remove(chatId)
|
|
||||||
shareChatsInfo.remove(chatId)
|
shareChatsInfo.remove(chatId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -153,18 +148,20 @@ class TelegramSettings(private val app: TelegramApplication) {
|
||||||
|
|
||||||
fun getChatsShareInfo() = shareChatsInfo
|
fun getChatsShareInfo() = shareChatsInfo
|
||||||
|
|
||||||
fun getChatAddActiveTime(chatId: Long) = chatShareAddActiveTime[chatId] ?: MESSAGE_ADD_ACTIVE_TIME_VALUES_SEC[0]
|
fun getAdditionalActiveTime(chatId: Long) =
|
||||||
|
shareChatsInfo[chatId]?.additionalActiveTime ?: ADDITIONAL_ACTIVE_TIME_VALUES_SEC[0]
|
||||||
|
|
||||||
fun getChatNextAddActiveTime(chatId: Long): Long {
|
fun getNextAdditionalActiveTime(chatId: Long): Long {
|
||||||
return if (chatShareAddActiveTime.containsKey(chatId)) {
|
return if (shareChatsInfo.containsKey(chatId)) {
|
||||||
var index = MESSAGE_ADD_ACTIVE_TIME_VALUES_SEC.indexOf(chatShareAddActiveTime[chatId])
|
var index =
|
||||||
if (MESSAGE_ADD_ACTIVE_TIME_VALUES_SEC.lastIndex > index) {
|
ADDITIONAL_ACTIVE_TIME_VALUES_SEC.indexOf(shareChatsInfo[chatId]?.additionalActiveTime)
|
||||||
MESSAGE_ADD_ACTIVE_TIME_VALUES_SEC[++index]
|
if (ADDITIONAL_ACTIVE_TIME_VALUES_SEC.lastIndex > index) {
|
||||||
|
ADDITIONAL_ACTIVE_TIME_VALUES_SEC[++index]
|
||||||
} else {
|
} else {
|
||||||
MESSAGE_ADD_ACTIVE_TIME_VALUES_SEC[index]
|
ADDITIONAL_ACTIVE_TIME_VALUES_SEC[index]
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
MESSAGE_ADD_ACTIVE_TIME_VALUES_SEC[0]
|
ADDITIONAL_ACTIVE_TIME_VALUES_SEC[0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,7 +175,6 @@ class TelegramSettings(private val app: TelegramApplication) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun stopSharingLocationToChats() {
|
fun stopSharingLocationToChats() {
|
||||||
this.chatShareAddActiveTime.clear()
|
|
||||||
shareChatsInfo.clear()
|
shareChatsInfo.clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,7 +211,7 @@ class TelegramSettings(private val app: TelegramApplication) {
|
||||||
if (shareChatInfo != null && content is TdApi.MessageLocation) {
|
if (shareChatInfo != null && content is TdApi.MessageLocation) {
|
||||||
shareChatInfo.currentMessageId = message.id
|
shareChatInfo.currentMessageId = message.id
|
||||||
shareChatInfo.lastSuccessfulLocation = LatLon(content.location.latitude, content.location.longitude)
|
shareChatInfo.lastSuccessfulLocation = LatLon(content.location.latitude, content.location.longitude)
|
||||||
shareChatInfo.lastSuccessfulSendTime = Math.max(message.editDate, message.date)
|
shareChatInfo.lastSuccessfulSendTime = Math.max(message.editDate, message.date).toLong()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -491,9 +487,10 @@ class TelegramSettings(private val app: TelegramApplication) {
|
||||||
var currentMessageId = -1L
|
var currentMessageId = -1L
|
||||||
var userSetLivePeriod = -1L
|
var userSetLivePeriod = -1L
|
||||||
var userSetLivePeriodStart = -1L
|
var userSetLivePeriodStart = -1L
|
||||||
var lastSuccessfulLocation:LatLon? = null
|
var lastSuccessfulLocation: LatLon? = null
|
||||||
var lastSuccessfulSendTime = -1
|
var lastSuccessfulSendTime = -1L
|
||||||
var shouldDeletePreviousMessage = false
|
var shouldDeletePreviousMessage = false
|
||||||
|
var additionalActiveTime = ADDITIONAL_ACTIVE_TIME_VALUES_SEC[0]
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
|
|
|
@ -419,7 +419,9 @@ class MyLocationTabFragment : Fragment(), TelegramListener {
|
||||||
for (chatId in chatList) {
|
for (chatId in chatList) {
|
||||||
val chat = telegramHelper.getChat(chatId)
|
val chat = telegramHelper.getChat(chatId)
|
||||||
if (chat != null) {
|
if (chat != null) {
|
||||||
if (telegramHelper.isPrivateChat(chat)) {
|
if (!sharingMode && settings.isSharingLocationToChat(chatId)) {
|
||||||
|
continue
|
||||||
|
} else if (telegramHelper.isPrivateChat(chat)) {
|
||||||
if ((chat.type as TdApi.ChatTypePrivate).userId == currentUser?.id) {
|
if ((chat.type as TdApi.ChatTypePrivate).userId == currentUser?.id) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -541,10 +543,10 @@ class MyLocationTabFragment : Fragment(), TelegramListener {
|
||||||
holder.textInArea?.apply {
|
holder.textInArea?.apply {
|
||||||
visibility = View.VISIBLE
|
visibility = View.VISIBLE
|
||||||
text = "${getText(R.string.plus)} ${OsmandFormatter.getFormattedDuration(
|
text = "${getText(R.string.plus)} ${OsmandFormatter.getFormattedDuration(
|
||||||
context!!, settings.getChatAddActiveTime(chat.id))}"
|
context!!, settings.getAdditionalActiveTime(chat.id))}"
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
val newLivePeriod = settings.getChatLiveMessageExpireTime(chat.id) + settings.getChatAddActiveTime(chat.id)
|
val newLivePeriod = settings.getChatLiveMessageExpireTime(chat.id) + settings.getAdditionalActiveTime(chat.id)
|
||||||
settings.shareLocationToChat(chat.id, true, newLivePeriod, settings.getChatNextAddActiveTime(chat.id))
|
settings.shareLocationToChat(chat.id, true, newLivePeriod, settings.getNextAdditionalActiveTime(chat.id))
|
||||||
notifyItemChanged(position)
|
notifyItemChanged(position)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue