move additionalActiveTime to shareInfo

This commit is contained in:
Chumva 2018-10-12 12:08:27 +03:00
parent 82138587fc
commit 7c7f9cb945
2 changed files with 25 additions and 26 deletions

View file

@ -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 {

View file

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