Skip to content

Commit

Permalink
Merge pull request #41 from infinum/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
bojankoma authored May 28, 2023
2 parents 758d165 + f6283a0 commit 8654cde
Show file tree
Hide file tree
Showing 36 changed files with 260 additions and 105 deletions.
25 changes: 25 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,31 @@
Change Log
==========

## Version 1.2.8

_2023-05-28_

* Fix a bug in BroadcastReceiverTrigger for USB and Airplane mode triggers.
* Update dependencies.

## Version 1.2.7

_2023-04-07_

* Add metadata to no-op.

## Version 1.2.6

_2023-04-04_

* Add initializer for easy no-op implementation purposes.

## Version 1.2.5

_2023-04-04_

* Change initializer visibility for chained initialization.

## Version 1.2.4

_2023-04-03_
Expand Down
40 changes: 20 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,15 @@ Then add the following dependencies in your app `build.gradle` or `build.gradle.
**Groovy**

```groovy
debugImplementation "com.infinum.sentinel:sentinel:1.2.4"
releaseImplementation "com.infinum.sentinel:sentinel-no-op:1.2.4"
debugImplementation "com.infinum.sentinel:sentinel:1.2.8"
releaseImplementation "com.infinum.sentinel:sentinel-no-op:1.2.8"
```

**KotlinDSL**

```kotlin
debugImplementation("com.infinum.sentinel:sentinel:1.2.4")
releaseImplementation("com.infinum.sentinel:sentinel-no-op:1.2.4")
debugImplementation("com.infinum.sentinel:sentinel:1.2.8")
releaseImplementation("com.infinum.sentinel:sentinel-no-op:1.2.8")
```

Basic tools are provided inside the main package but depending on requirements you might want to add
Expand All @@ -74,27 +74,27 @@ specific tools:
**Groovy**

```groovy
debugImplementation "com.infinum.sentinel:tool-chucker:1.2.4"
debugImplementation "com.infinum.sentinel:tool-collar:1.2.4"
debugImplementation "com.infinum.sentinel:tool-dbinspector:1.2.4"
debugImplementation "com.infinum.sentinel:tool-leakcanary:1.2.4"
debugImplementation "com.infinum.sentinel:tool-appgallery:1.2.4"
debugImplementation "com.infinum.sentinel:tool-googleplay:1.2.4"
debugImplementation "com.infinum.sentinel:tool-thimble:1.2.4"
debugImplementation "com.infinum.sentinel:tool-timber:1.2.4"
debugImplementation "com.infinum.sentinel:tool-chucker:1.2.8"
debugImplementation "com.infinum.sentinel:tool-collar:1.2.8"
debugImplementation "com.infinum.sentinel:tool-dbinspector:1.2.8"
debugImplementation "com.infinum.sentinel:tool-leakcanary:1.2.8"
debugImplementation "com.infinum.sentinel:tool-appgallery:1.2.8"
debugImplementation "com.infinum.sentinel:tool-googleplay:1.2.8"
debugImplementation "com.infinum.sentinel:tool-thimble:1.2.8"
debugImplementation "com.infinum.sentinel:tool-timber:1.2.8"
```

**KotlinDSL**

```kotlin
debugImplementation("com.infinum.sentinel:tool-chucker:1.2.4")
debugImplementation("com.infinum.sentinel:tool-collar:1.2.4")
debugImplementation("com.infinum.sentinel:tool-dbinspector:1.2.4")
debugImplementation("com.infinum.sentinel:tool-leakcanary:1.2.4")
debugImplementation("com.infinum.sentinel:tool-appgallery:1.2.4")
debugImplementation("com.infinum.sentinel:tool-googleplay:1.2.4")
debugImplementation("com.infinum.sentinel:tool-thimble:1.2.4")
debugImplementation("com.infinum.sentinel:tool-timber:1.2.4")
debugImplementation("com.infinum.sentinel:tool-chucker:1.2.8")
debugImplementation("com.infinum.sentinel:tool-collar:1.2.8")
debugImplementation("com.infinum.sentinel:tool-dbinspector:1.2.8")
debugImplementation("com.infinum.sentinel:tool-leakcanary:1.2.8")
debugImplementation("com.infinum.sentinel:tool-appgallery:1.2.8")
debugImplementation("com.infinum.sentinel:tool-googleplay:1.2.8")
debugImplementation("com.infinum.sentinel:tool-thimble:1.2.8")
debugImplementation("com.infinum.sentinel:tool-timber:1.2.8")
```

Now you can sync your project.
Expand Down
2 changes: 1 addition & 1 deletion config.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
ext {
def major = 1
def minor = 2
def patch = 4
def patch = 8

buildConfig = [
"minSdk" : 21,
Expand Down
4 changes: 2 additions & 2 deletions cpd.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apply plugin: "cpd"
apply plugin: "de.aaschmid.cpd"

cpd {
language = 'kotlin'
Expand All @@ -9,4 +9,4 @@ cpdCheck {
xml.required = true
}
source = allprojects*.file("src/main/kotlin")
}
}
36 changes: 18 additions & 18 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
[versions]
sentinel = "1.2.4"
gradle = "7.4.2"
desugar = "2.0.2"
kotlin = "1.8.10"
coroutines = "1.6.4"
json = "1.5.0"
core = "1.9.0"
sentinel = "1.2.8"
gradle = "8.0.1"
desugar = "2.0.3"
kotlin = "1.8.21"
coroutines = "1.7.1"
json = "1.5.1"
core = "1.10.1"
appcompat = "1.6.1"
activity = "1.6.1"
fragment = "1.5.5"
activity = "1.7.2"
fragment = "1.5.7"
recycler = "1.3.0"
lifecycle = "2.6.0"
lifecycle = "2.6.1"
preference = "1.2.0"
room = "2.5.0"
workmanager = "2.8.0"
room = "2.5.1"
workmanager = "2.8.1"
startup = "1.1.1"
crypto = "1.1.0-alpha05"
crypto = "1.1.0-alpha06"
dynamicanimation = "1.0.0"
design = "1.8.0"
design = "1.9.0"
inject = "0.6.1"
timber = "5.0.1"
detekt = "1.21.0"
ktlintplugin = "10.3.0"
detekt = "1.23.0"
ktlintplugin = "11.3.1"
ktlint = "0.45.2"
cpd = "3.2"
cpd = "3.3"
dokka = "1.8.10"
chucker = "3.5.2"
collar = "1.4.0"
dbinspector = "5.4.9"
leakcanary = "2.10"
leakcanary = "2.11"
thimble = "1.0.1"


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class SampleApplication : Application() {
AppGalleryTool(appId = "102016595"),
GooglePlayTool(),
ThimbleTool(),
TimberTool(allowedTags = listOf("MAIN")),
TimberTool(allowedTags = listOf("Main")),
CertificateTool(userCertificates = loadDebugCertificates())
)
)
Expand Down
5 changes: 5 additions & 0 deletions sentinel-no-op/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,13 @@ android {
}
}

dokkaJavadoc {
mustRunAfter(":sentinel-no-op:generateReleaseRFile")
}

dependencies {
implementation libs.kotlin.core
implementation libs.androidx.startup
}

apply from: "publish.gradle"
19 changes: 18 additions & 1 deletion sentinel-no-op/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1 +1,18 @@
<manifest />
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<application>

<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data
android:name="com.infinum.sentinel.SentinelInitializer"
android:value="androidx.startup" />
</provider>

</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.infinum.sentinel

import android.content.Context
import androidx.startup.Initializer

public class SentinelInitializer : Initializer<Class<SentinelInitializer>> {

override fun create(context: Context): Class<SentinelInitializer> {
// no-op implementation
return SentinelInitializer::class.java
}

override fun dependencies(): List<Class<out Initializer<*>>> =
listOf()
}
4 changes: 4 additions & 0 deletions sentinel-no-op/src/main/res/values/metadata.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="sentinel_infinum_monitored" translatable="false">infinum.sentinel.monitored</string>
</resources>
4 changes: 4 additions & 0 deletions sentinel-no-op/src/main/res/values/public.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<public name="sentinel_infinum_monitored" type="string" />
</resources>
8 changes: 7 additions & 1 deletion sentinel/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ plugins {
id "com.android.library"
id "kotlin-android"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.google.devtools.ksp" version "1.8.10-1.0.9"
id "com.google.devtools.ksp" version "1.8.21-1.0.11"
}

apply from: "jacoco.gradle"
Expand Down Expand Up @@ -76,6 +76,7 @@ android {

buildFeatures {
viewBinding = true
buildConfig = true
}

publishing {
Expand All @@ -86,6 +87,11 @@ android {
}
}

dokkaJavadoc {
mustRunAfter(":sentinel:generateReleaseRFile")
mustRunAfter(":sentinel:kspReleaseKotlin")
}

dependencies {
coreLibraryDesugaring libs.desugar
implementation libs.kotlin.core
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import android.content.Context
import androidx.startup.Initializer
import com.infinum.sentinel.di.LibraryComponents

internal class SentinelInitializer : Initializer<Class<SentinelInitializer>> {
public class SentinelInitializer : Initializer<Class<SentinelInitializer>> {

override fun create(context: Context): Class<SentinelInitializer> {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,14 @@ internal class AirplaneModeOnTrigger(

override val broadcastReceiver: BroadcastReceiver = BroadcastReceiver {
onAction(Intent.ACTION_AIRPLANE_MODE_CHANGED) {
isEnabled(it.extras?.getBoolean(STATE, false) ?: false)
}
}

private fun isEnabled(enabled: Boolean) {
if (active && enabled) {
trigger()
if (active) {
if (it.hasExtra(STATE)) {
val isEnabled = it.getBooleanExtra(STATE, false)
if (isEnabled) {
trigger()
}
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ internal abstract class BroadcastReceiverTrigger(
broadcastReceiver.receiver,
broadcastReceiver.filter
)
this.active = true
this.active = false
}

override fun stop() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import me.tatarka.inject.annotations.Inject

@Inject
internal class UsbConnectedTrigger(
context: Context,
private val context: Context,
private val trigger: () -> Unit
) : BroadcastReceiverTrigger(context) {

Expand All @@ -16,21 +16,16 @@ internal class UsbConnectedTrigger(
private const val USB_CONNECTED = "connected"
}

private var skippedFirst: Boolean = false

override val broadcastReceiver = BroadcastReceiver {
onAction(USB_STATE) {
isConnected(it.extras?.getBoolean(USB_CONNECTED, false) ?: false)
}
}

private fun isConnected(connected: Boolean) {
if (skippedFirst) {
if (active && connected) {
trigger()
if (active) {
if (it.hasExtra(USB_CONNECTED)) {
val isConnected = it.getBooleanExtra(USB_CONNECTED, false)
if (isConnected) {
trigger()
}
}
}
} else {
skippedFirst = true
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,22 @@ internal class TriggersRepository(
) : Repositories.Triggers {

override suspend fun save(input: TriggerParameters) =
input.entity?.let { dao.save(it) }
?: error("Cannot save null entity")
input.entity?.let {
dao.save(it)
} ?: error("Cannot save null entity")

override fun load(input: TriggerParameters): Flow<List<TriggerEntity>> =
dao.load()
.onEach {
it.forEach { entity ->
when (entity.type) {
TriggerType.MANUAL -> cache.manual().active = entity.enabled
TriggerType.FOREGROUND -> cache.foreground().active = entity.enabled
TriggerType.SHAKE -> cache.shake().active = entity.enabled
TriggerType.PROXIMITY -> cache.proximity().active = entity.enabled
TriggerType.USB_CONNECTED -> cache.usbConnected().active = entity.enabled
TriggerType.AIRPLANE_MODE_ON ->
cache.airplaneModeOn().active = entity.enabled
else -> Unit
}
}
}
.onEach { it.forEach { entity -> updateCache(entity) } }

private fun updateCache(entity: TriggerEntity) =
when (entity.type) {
TriggerType.MANUAL -> cache.manual().active = entity.enabled
TriggerType.FOREGROUND -> cache.foreground().active = entity.enabled
TriggerType.SHAKE -> cache.shake().active = entity.enabled
TriggerType.PROXIMITY -> cache.proximity().active = entity.enabled
TriggerType.USB_CONNECTED -> cache.usbConnected().active = entity.enabled
TriggerType.AIRPLANE_MODE_ON -> cache.airplaneModeOn().active = entity.enabled
else -> Unit
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,7 @@ internal class SettingsFragment : BaseChildFragment<Nothing, SettingsEvent>(R.la

private fun setupSwitch(switchView: SwitchMaterial, trigger: TriggerEntity) =
with(switchView) {
setOnCheckedChangeListener(null)
isChecked = trigger.enabled
isEnabled = trigger.editable
setOnCheckedChangeListener { _, isChecked ->
Expand Down
Loading

0 comments on commit 8654cde

Please sign in to comment.