Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:
BUILD_VARIANT_NAME: "release"
build_release:
name: Build Release AAB and APK
runs-on: [self-hosted, AndroidShell]
runs-on: ubuntu-latest
needs: [ create_release_baseline,build_number ]
strategy:
matrix:
Expand Down Expand Up @@ -116,7 +116,7 @@ jobs:
path: ${{ steps.artifacts_copy.outputs.path }}
build_release_gms_wearos:
name: Build AAB and APK WearOS
runs-on: [self-hosted, AndroidShell]
runs-on: ubuntu-latest
needs: build_number
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
Expand Down
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ Attention: don't forget to add the flag for F-Droid before release
- [FIX] Fap manifest caching
- [FIX] Remote controls design issues
- [FIX] Fix flaky test
- [FIX] Infinite dispatch after screen close on remote-control screens
- [CI] Fix merge-queue files diff
- [CI] Add https://github.com/LionZXY/detekt-decompose-rule
- [CI] Enabling detekt module for android and kmp modules
Expand All @@ -38,6 +39,7 @@ Attention: don't forget to add the flag for F-Droid before release
- [CI] Merge CI workflows in one
- [CI] Update CI changed-files action
- [CI] Update CI for github runners
- [CI] Remote self-hosted runners

# 1.7.1

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.flipperdevices.keyemulate.tasks

import com.flipperdevices.bridge.service.api.provider.FlipperServiceProvider
import com.flipperdevices.keyemulate.api.EmulateHelper

interface CloseEmulateAppTaskHolder {
fun closeEmulateApp(serviceProvider: FlipperServiceProvider, emulateHelper: EmulateHelper)
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,22 @@
package com.flipperdevices.keyemulate.tasks

import com.flipperdevices.bridge.service.api.provider.FlipperServiceProvider
import com.flipperdevices.core.di.AppGraph
import com.flipperdevices.keyemulate.api.EmulateHelper
import com.squareup.anvil.annotations.ContributesBinding
import javax.inject.Inject
import javax.inject.Singleton

object CloseEmulateAppTaskHolder {
@Singleton
@ContributesBinding(AppGraph::class, CloseEmulateAppTaskHolder::class)
class CloseEmulateAppTaskHolderImpl @Inject constructor() : CloseEmulateAppTaskHolder {
private var closeEmulateAppTask: CloseEmulateAppTask? = null

@Synchronized
fun closeEmulateApp(serviceProvider: FlipperServiceProvider, emulateHelper: EmulateHelper) {
override fun closeEmulateApp(
serviceProvider: FlipperServiceProvider,
emulateHelper: EmulateHelper
) {
if (closeEmulateAppTask != null) {
return
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ abstract class EmulateViewModel(
private val serviceProvider: FlipperServiceProvider,
private val emulateHelper: EmulateHelper,
private val synchronizationApi: SynchronizationApi,
private val closeEmulateAppTaskHolder: CloseEmulateAppTaskHolder,
application: FlipperApp
) : DecomposeViewModel(), LogTagProvider, FlipperBleServiceConsumer {

Expand Down Expand Up @@ -182,7 +183,7 @@ abstract class EmulateViewModel(

override fun onDestroy() {
if (emulateButtonStateFlow.value is EmulateButtonState.Active) {
CloseEmulateAppTaskHolder.closeEmulateApp(serviceProvider, emulateHelper)
closeEmulateAppTaskHolder.closeEmulateApp(serviceProvider, emulateHelper)
}
super.onDestroy()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.flipperdevices.keyemulate.viewmodel

import android.app.Application
import androidx.lifecycle.viewModelScope
import com.flipperdevices.bridge.dao.api.model.FlipperKeyType
import com.flipperdevices.bridge.service.api.FlipperServiceApi
import com.flipperdevices.bridge.service.api.provider.FlipperServiceProvider
Expand All @@ -15,6 +14,7 @@ import com.flipperdevices.keyemulate.exception.ForbiddenFrequencyException
import com.flipperdevices.keyemulate.model.EmulateButtonState
import com.flipperdevices.keyemulate.model.EmulateConfig
import com.flipperdevices.keyemulate.model.EmulateProgress
import com.flipperdevices.keyemulate.tasks.CloseEmulateAppTaskHolder
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.first
Expand All @@ -26,8 +26,15 @@ class InfraredViewModel @Inject constructor(
private val serviceProvider: FlipperServiceProvider,
private val emulateHelper: EmulateHelper,
synchronizationApi: SynchronizationApi,
closeEmulateAppTaskHolder: CloseEmulateAppTaskHolder,
application: Application
) : EmulateViewModel(serviceProvider, emulateHelper, synchronizationApi, application) {
) : EmulateViewModel(
serviceProvider,
emulateHelper,
synchronizationApi,
closeEmulateAppTaskHolder,
application
) {
override val TAG = "InfraredViewModel"

override suspend fun onStartEmulateInternal(
Expand Down Expand Up @@ -71,6 +78,7 @@ class InfraredViewModel @Inject constructor(
when (buttonState) {
is EmulateButtonState.Disabled,
is EmulateButtonState.Loading -> buttonState

is EmulateButtonState.Inactive -> activeState
is EmulateButtonState.Active -> {
emulateHelper.stopEmulateForce(serviceApi.requestApi)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,21 @@ import android.app.Application
import com.flipperdevices.bridge.service.api.provider.FlipperServiceProvider
import com.flipperdevices.bridge.synchronization.api.SynchronizationApi
import com.flipperdevices.keyemulate.api.EmulateHelper
import com.flipperdevices.keyemulate.tasks.CloseEmulateAppTaskHolder
import javax.inject.Inject

class SimpleEmulateViewModel @Inject constructor(
serviceProvider: FlipperServiceProvider,
emulateHelper: EmulateHelper,
synchronizationApi: SynchronizationApi,
closeEmulateAppTaskHolder: CloseEmulateAppTaskHolder,
application: Application,
) : EmulateViewModel(serviceProvider, emulateHelper, synchronizationApi, application) {
) : EmulateViewModel(
serviceProvider,
emulateHelper,
synchronizationApi,
closeEmulateAppTaskHolder,
application
) {
override val TAG = "SimpleEmulateViewModel"
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.flipperdevices.keyemulate.viewmodel

import android.app.Application
import androidx.lifecycle.viewModelScope
import com.flipperdevices.bridge.dao.api.model.FlipperKeyType
import com.flipperdevices.bridge.service.api.FlipperServiceApi
import com.flipperdevices.bridge.service.api.provider.FlipperServiceProvider
Expand All @@ -15,6 +14,7 @@ import com.flipperdevices.keyemulate.exception.ForbiddenFrequencyException
import com.flipperdevices.keyemulate.model.EmulateButtonState
import com.flipperdevices.keyemulate.model.EmulateConfig
import com.flipperdevices.keyemulate.model.EmulateProgress
import com.flipperdevices.keyemulate.tasks.CloseEmulateAppTaskHolder
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
Expand All @@ -24,8 +24,15 @@ class SubGhzViewModel @Inject constructor(
private val serviceProvider: FlipperServiceProvider,
private val emulateHelper: EmulateHelper,
synchronizationApi: SynchronizationApi,
closeEmulateAppTaskHolder: CloseEmulateAppTaskHolder,
application: Application,
) : EmulateViewModel(serviceProvider, emulateHelper, synchronizationApi, application) {
) : EmulateViewModel(
serviceProvider,
emulateHelper,
synchronizationApi,
closeEmulateAppTaskHolder,
application
) {
override val TAG = "SubGhzViewModel"

override suspend fun onStartEmulateInternal(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import com.flipperdevices.infrared.editor.core.model.InfraredRemote
import com.flipperdevices.keyemulate.api.EmulateHelper
import com.flipperdevices.keyemulate.exception.AlreadyOpenedAppException
import com.flipperdevices.keyemulate.model.EmulateConfig
import com.flipperdevices.keyemulate.tasks.CloseEmulateAppTaskHolder
import com.flipperdevices.remotecontrols.api.DispatchSignalApi
import com.flipperdevices.remotecontrols.impl.setup.encoding.ByteArrayEncoder
import com.flipperdevices.remotecontrols.impl.setup.encoding.JvmEncoder
Expand All @@ -32,7 +33,8 @@ import javax.inject.Inject
@ContributesBinding(AppGraph::class, DispatchSignalApi::class)
class DispatchSignalViewModel @Inject constructor(
private val emulateHelper: EmulateHelper,
private val serviceProvider: FlipperServiceProvider
private val serviceProvider: FlipperServiceProvider,
private val closeEmulateAppTaskHolder: CloseEmulateAppTaskHolder,
) : DecomposeViewModel(),
FlipperBleServiceConsumer,
LogTagProvider,
Expand Down Expand Up @@ -134,6 +136,13 @@ class DispatchSignalViewModel @Inject constructor(

override fun onServiceApiReady(serviceApi: FlipperServiceApi) = Unit

override fun onDestroy() {
if (_state.value is DispatchSignalApi.State.Emulating) {
closeEmulateAppTaskHolder.closeEmulateApp(serviceProvider, emulateHelper)
}
super<DecomposeViewModel>.onDestroy()
}

companion object {
private const val DEFAULT_SIGNAL_DELAY = 500L
}
Expand Down
Loading