refact: [CORE] add app instance to messages (#153)

* refact: [CORE] add app instance to messages

* upgraded schema

* old calls are displayed differently

---------

Co-authored-by: Florent Champigny <florent@bere.al>
This commit is contained in:
Florent CHAMPIGNY 2025-08-24 22:39:26 +02:00 committed by GitHub
parent 8025553c2f
commit bdea11321d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
47 changed files with 2547 additions and 97 deletions

View file

@ -0,0 +1,3 @@
package io.github.openflocon.domain.device.models
typealias AppInstance = Long

View file

@ -0,0 +1,3 @@
package io.github.openflocon.domain.device.models
typealias AppPackageName = String

View file

@ -2,6 +2,7 @@ package io.github.openflocon.domain.device.models
data class DeviceAppDomainModel(
val name: String,
val packageName: String,
val packageName: AppPackageName,
val iconEncoded: String?,
val lastAppInstance: AppInstance, // last start app time
)

View file

@ -2,5 +2,6 @@ package io.github.openflocon.domain.device.models
data class DeviceIdAndPackageNameDomainModel(
val deviceId: DeviceId,
val packageName: String,
val packageName: AppPackageName,
val appInstance: AppInstance,
)

View file

@ -3,4 +3,10 @@ package io.github.openflocon.domain.device.models
data class RegisterDeviceWithAppDomainModel(
val device: DeviceDomainModel,
val app: DeviceAppDomainModel,
)
) {
val deviceIdAndPackageName = DeviceIdAndPackageNameDomainModel(
deviceId = device.deviceId,
packageName = app.packageName,
appInstance = app.lastAppInstance,
)
}

View file

@ -4,8 +4,6 @@ import io.github.openflocon.domain.device.models.DeviceAppDomainModel
import io.github.openflocon.domain.device.models.DeviceDomainModel
import io.github.openflocon.domain.device.models.DeviceId
import io.github.openflocon.domain.device.models.DeviceIdAndPackageNameDomainModel
import io.github.openflocon.domain.device.models.DeviceWithAppsDomainModel
import io.github.openflocon.domain.device.models.DeviceWithAppDomainModel
import io.github.openflocon.domain.device.models.HandleDeviceResultDomainModel
import io.github.openflocon.domain.device.models.RegisterDeviceWithAppDomainModel
import kotlinx.coroutines.flow.Flow

View file

@ -9,11 +9,13 @@ class GetCurrentDeviceIdAndPackageNameUseCase(
) {
suspend operator fun invoke(): DeviceIdAndPackageNameDomainModel? {
val deviceId = getCurrentDeviceIdUseCase() ?: return null
val packageName = devicesRepository.getDeviceSelectedApp(deviceId)?.packageName ?: return null
val selectedApp = devicesRepository.getDeviceSelectedApp(deviceId)
val packageName = selectedApp?.packageName ?: return null
return DeviceIdAndPackageNameDomainModel(
deviceId = deviceId,
packageName = packageName,
appInstance = selectedApp.lastAppInstance,
)
}
}

View file

@ -23,6 +23,7 @@ class ObserveCurrentDeviceIdAndPackageNameUseCase(
DeviceIdAndPackageNameDomainModel(
deviceId = deviceId,
packageName = app.packageName,
appInstance = app.lastAppInstance,
)
}
}

View file

@ -1,5 +1,7 @@
package io.github.openflocon.domain.messages.models
import io.github.openflocon.domain.device.models.AppInstance
data class FloconIncomingMessageDomainModel(
val deviceName: String,
val deviceId: String,
@ -8,4 +10,5 @@ data class FloconIncomingMessageDomainModel(
val method: String,
val appName: String,
val appPackageName: String,
val appInstance: AppInstance,
)

View file

@ -30,6 +30,7 @@ class HandleIncomingMessagesUseCase(
val deviceIdAndPackageName = DeviceIdAndPackageNameDomainModel(
deviceId = handleDeviceResult.deviceId,
packageName = message.appPackageName,
appInstance = message.appInstance,
)
if (handleDeviceResult.isNewDevice) {
@ -68,6 +69,7 @@ class HandleIncomingMessagesUseCase(
app = DeviceAppDomainModel(
name = message.appName,
packageName = message.appPackageName,
lastAppInstance = message.appInstance,
iconEncoded = null,
),
)

View file

@ -1,7 +1,10 @@
package io.github.openflocon.domain.network.models
import io.github.openflocon.domain.device.models.AppInstance
data class FloconNetworkCallDomainModel(
val callId: String,
val appInstance: AppInstance,
val request: Request,
val response: Response?,
) {