Files
GajuMobile-Android/app/src/main/java/swiss/qpq/gajumobile/security/SecurityManager.kt
T
2026-09-02 15:25:44 +09:00

53 lines
1.6 KiB
Kotlin

/*
* Copyright (c) 2026 QPQ IaaS AG <info@qpq.swiss>. All rights reserved.
* Project: Gajumaru Core Java Libraries <gajumaru.io>
*
* This program is dual-licensed:
* 1) Under the GNU Affero General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option)
* any later version (AGPL-3.0-or-later).
*
* 2) Under a commercial/proprietary license available directly from QPQ IaaS AG.
* If you wish to use this software outside the strict constraints of the
* AGPLv3 (e.g. within a closed-source or proprietary product), you must
* purchase a commercial license from QPQ IaaS AG.
*
* Authors:
* - Craig Everett <craigeverett@qpq.swiss>
*
* SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-QPQ-Commercial
*/
package swiss.qpq.gajumobile.security
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
object SecurityManager {
private val _isLocked = MutableStateFlow(true)
val isLocked = _isLocked.asStateFlow()
private var lastBackgroundTime: Long = 0
private const val LOCK_TIMEOUT_MS = 2 * 60 * 1000L // 2 minutes
fun lock() {
_isLocked.value = true
}
fun unlock() {
_isLocked.value = false
}
fun onAppBackgrounded() {
lastBackgroundTime = System.currentTimeMillis()
}
fun onAppForegrounded() {
if (lastBackgroundTime != 0L && System.currentTimeMillis() - lastBackgroundTime > LOCK_TIMEOUT_MS) {
lock()
}
// Reset background time after checking
lastBackgroundTime = 0
}
}