Skip to content

Commit 1bbdcec

Browse files
authored
Merge pull request #3 from muradeliyev/develop
Ready for new release
2 parents c4ba9ec + 4885724 commit 1bbdcec

File tree

56 files changed

+1427
-5112
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+1427
-5112
lines changed

.github/workflows/deploy_snapshot.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ jobs:
1212
if: github.event.pull_request.merged == true
1313
steps:
1414
- uses: actions/checkout@v2
15-
- name: set up JDK 1.8
15+
- name: set up JDK 21
1616
uses: actions/setup-java@v1
1717
with:
18-
java-version: 1.8
18+
java-version: 21
1919
- name: Grant execute permission for gradlew
2020
run: chmod +x gradlew
2121
- name: Prepare local.properties for testing

.github/workflows/release.yml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,28 @@ jobs:
1010
runs-on: ubuntu-latest
1111
steps:
1212
- uses: actions/checkout@v2
13-
- name: set up JDK 1.8
13+
14+
- name: set up JDK 21
1415
uses: actions/setup-java@v1
1516
with:
16-
java-version: 1.8
17+
java-version: 21
18+
1719
- name: Grant execute permission for gradlew
1820
run: chmod +x gradlew
21+
1922
- name: Prepare local.properties for testing
2023
run: echo "sdk.dir=$ANDROID_HOME" > local.properties
24+
2125
- name: Build with Gradle
2226
run: ./gradlew clean build
27+
2328
- name: Decode the secret key and place the file
2429
run: |
2530
echo "${{secrets.SIGNING_SECRET_KEY_RING_FILE}}" > ~/.gradle/secring.gpg.b64
2631
base64 -d ~/.gradle/secring.gpg.b64 > ~/.gradle/secring.gpg
32+
2733
- name: Publish project
2834
run: ./gradlew uploadArchives --no-daemon --no-parallel -PSONATYPE_NEXUS_USERNAME=${{secrets.SONATYPE_NEXUS_USERNAME}} -PSONATYPE_NEXUS_PASSWORD=${{secrets.SONATYPE_NEXUS_PASSWORD}} -Psigning.keyId=${{secrets.SIGNING_KEY_ID}} -Psigning.password=${{secrets.SIGNING_PASSWORD}} -Psigning.secretKeyRingFile=$(echo ~/.gradle/secring.gpg)
35+
2936
- name: Close the repository
3037
run: ./gradlew closeAndReleaseRepository

buildSrc/src/main/groovy/permissions/dispatcher/AarToJarDependencyPlugin.groovy

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import org.apache.commons.io.FileUtils
44
import org.gradle.api.DefaultTask
55
import org.gradle.api.Plugin
66
import org.gradle.api.Project
7-
import org.gradle.api.file.FileCollection
87
import org.gradle.api.tasks.InputFile
98
import org.gradle.api.tasks.OutputDirectory
109
import org.gradle.api.tasks.TaskAction
@@ -41,9 +40,8 @@ class AarToJarConversionPlugin implements Plugin<Project> {
4140
def configuration = project.configurations.create(CONFIGURATION_NAME)
4241

4342
// Conversion Task
44-
println("messi: $configuration")
45-
def conversionTask = project.tasks.create(TASK_NAME, ConvertAarToJarTask) {
46-
inputFiles = configuration
43+
def conversionTask = project.tasks.register(TASK_NAME, ConvertAarToJarTask) {
44+
inputFiles = configuration.files
4745
jarOutputDir = project.file("$project.buildDir/tmp/converted-aars")
4846
classpathOutputDir = project.file("$project.buildDir/resources/test")
4947
}
@@ -55,7 +53,7 @@ class AarToJarConversionPlugin implements Plugin<Project> {
5553
static class ConvertAarToJarTask extends DefaultTask {
5654

5755
@InputFile
58-
FileCollection inputFiles
56+
Set<File> inputFiles
5957

6058
@OutputDirectory
6159
File jarOutputDir
@@ -94,9 +92,11 @@ class AarToJarConversionPlugin implements Plugin<Project> {
9492

9593
paths += destinationFile.toURI().toURL().toString()
9694
}
97-
98-
def classpathFile = new File(classpathOutputDir, CLASSPATH_FILE_NAME)
99-
classpathFile.withWriter { it.write(paths.join("\n")) }
95+
println("messi: ${paths.isEmpty()}")
96+
if (!paths.isEmpty()) {
97+
def classpathFile = new File(classpathOutputDir, CLASSPATH_FILE_NAME)
98+
classpathFile.withWriter { it.write(paths.join("\n")) }
99+
}
100100
}
101101
}
102102
}

buildSrc/src/main/groovy/permissions/dispatcher/Versions.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,9 @@
33

44
public class Versions {
55

6-
public static final JavaVersion JAVA_VERSION = JavaVersion.VERSION_21;
6+
public static final JavaVersion JAVA_VERSION = JavaVersion.VERSION_17;
7+
8+
public static final String JVM_TARGET = "17";
9+
10+
public static final int JVM_TOOLCHAIN = 17;
711
}

gradle.properties

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Upload configuration
22
USER = muradeliyev
3-
GROUP = com.github.permissions-dispatcher
4-
VERSION_NAME = 5.0.0
3+
GROUP = io.github.muradeliyev
4+
VERSION_NAME = 5.0.0-beta01
55
POM_NAME = PermissionsDispatcher
66
POM_DESCRIPTION = A declarative API to handle Android runtime permissions.
77
POM_INCEPTION_YEAR = 2015
@@ -23,9 +23,9 @@ KOTLIN_VERSION = 2.1.20
2323
KOTLIN_METADATA_VERSION = 0.5.0
2424
ANDROIDX_LIBRARY_VERSION= 1.9.1
2525
ANDROIDX_APPCOMPAT_VERSION = 1.7.0
26-
ANDROIDX_FRAGMENT_VERSION = 1.8.3
27-
LIFECYCLE_VERSION = 2.9.0-alpha03
28-
ARC_TESTING_VERSION = 2.0.0
26+
ANDROIDX_FRAGMENT_VERSION = 1.8.6
27+
LIFECYCLE_VERSION = 2.9.0-rc01
28+
ARC_TESTING_VERSION = 2.2.0
2929
JAVAPOET_VERSION = 1.13.0
3030
KOTLINPOET_VERSION = 2.1.0
3131
JUNIT_VERSION = 4.13.2

ktx-sample/build.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ android {
1414
sourceCompatibility Versions.JAVA_VERSION
1515
targetCompatibility Versions.JAVA_VERSION
1616
}
17+
18+
kotlinOptions {
19+
jvmTarget = Versions.JVM_TARGET
20+
}
21+
1722
namespace = "dispatcher.ktx.sample"
1823
}
1924

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
xmlns:tools="http://schemas.android.com/tools"
4-
package="permissions.dispatcher.ktx.sample">
3+
xmlns:tools="http://schemas.android.com/tools">
4+
5+
<uses-feature
6+
android:name="android.hardware.camera"
7+
android:required="false" />
58

69
<uses-permission android:name="android.permission.CAMERA" />
710
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
@@ -12,15 +15,15 @@
1215
android:label="@string/app_name"
1316
android:theme="@style/AppTheme"
1417
tools:ignore="GoogleAppIndexingWarning">
18+
1519
<activity
16-
android:name=".MainActivity"
17-
android:label="@string/app_name">
20+
android:name="permissions.dispatcher.ktx.sample.MainActivity"
21+
android:exported="true">
1822
<intent-filter>
1923
<action android:name="android.intent.action.MAIN" />
2024

2125
<category android:name="android.intent.category.LAUNCHER" />
2226
</intent-filter>
2327
</activity>
2428
</application>
25-
2629
</manifest>

ktx-sample/src/main/java/permissions/dispatcher/ktx/sample/MainFragment.kt

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@ import permissions.dispatcher.PermissionRequest
1818
import permissions.dispatcher.ktx.PermissionsRequester
1919
import permissions.dispatcher.ktx.constructPermissionsRequest
2020

21+
2122
class MainFragment : Fragment() {
23+
2224
private lateinit var permissionsRequester: PermissionsRequester
2325
private lateinit var fileManagerRequester: PermissionsRequester
2426

25-
override fun onAttach(context: Context?) {
27+
override fun onAttach(context: Context) {
2628
super.onAttach(context)
2729
permissionsRequester = constructPermissionsRequest(
2830
Manifest.permission.CAMERA,
@@ -54,7 +56,10 @@ class MainFragment : Fragment() {
5456
}
5557

5658
private fun openCamera() {
57-
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE).putExtra(MediaStore.EXTRA_OUTPUT, Environment.DIRECTORY_DOWNLOADS + "/temp.png")
59+
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE).putExtra(
60+
MediaStore.EXTRA_OUTPUT,
61+
Environment.DIRECTORY_DOWNLOADS + "/temp.png"
62+
)
5863
startActivityForResult(intent, 1)
5964
}
6065

@@ -64,7 +69,8 @@ class MainFragment : Fragment() {
6469
}
6570

6671
private fun onCameraDenied() {
67-
Toast.makeText(requireContext(), R.string.permission_camera_denied, Toast.LENGTH_SHORT).show()
72+
Toast.makeText(requireContext(), R.string.permission_camera_denied, Toast.LENGTH_SHORT)
73+
.show()
6874
}
6975

7076
private fun onCameraShowRationale(request: PermissionRequest) {
@@ -74,7 +80,11 @@ class MainFragment : Fragment() {
7480
}
7581

7682
private fun onCameraNeverAskAgain() {
77-
Toast.makeText(requireContext(), R.string.permission_camera_never_ask_again, Toast.LENGTH_SHORT).show()
83+
Toast.makeText(
84+
requireContext(),
85+
R.string.permission_camera_never_ask_again,
86+
Toast.LENGTH_SHORT
87+
).show()
7888
}
7989

8090
private fun showRationaleDialog(@StringRes messageResId: Int, request: PermissionRequest) {

ktx/build.gradle

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,23 @@ android {
1111
targetSdkVersion TARGET_SDK_VERSION
1212
}
1313

14-
// afterEvaluate {
15-
// libraryVariants.all {
16-
// it.generateBuildConfigProvider.configure { enabled = false }
17-
// }
18-
// }
19-
2014
namespace = "permissions.dispatcher.ktx"
2115

16+
compileOptions {
17+
sourceCompatibility Versions.JAVA_VERSION
18+
targetCompatibility Versions.JAVA_VERSION
19+
}
20+
21+
kotlinOptions {
22+
jvmTarget = Versions.JVM_TARGET
23+
}
24+
2225
dependencies {
2326
api project(":library")
2427

2528
implementation "androidx.core:core:$ANDROIDX_LIBRARY_VERSION"
2629
implementation "androidx.appcompat:appcompat:$ANDROIDX_APPCOMPAT_VERSION"
27-
implementation "androidx.fragment:fragment:$ANDROIDX_FRAGMENT_VERSION"
30+
implementation "androidx.fragment:fragment-ktx:$ANDROIDX_FRAGMENT_VERSION"
2831
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$LIFECYCLE_VERSION"
2932
// implementation "androidx.collection:collection:$ANDROIDX_LIBRARY_VERSION"
3033
implementation "org.jetbrains.kotlin:kotlin-stdlib:$KOTLIN_VERSION"
@@ -33,7 +36,7 @@ android {
3336
testImplementation "androidx.test:core:1.3.0-rc01"
3437
testImplementation "androidx.test.ext:junit:1.1.2-rc01"
3538
testImplementation "androidx.test:runner:1.3.0-rc01"
36-
// testImplementation "android.arch.core:core-testing:$ARC_TESTING_VERSION"
37-
// testImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:$MOCKITO_KOTLIN_VERSION"
39+
testImplementation "androidx.arch.core:core-testing:$ARC_TESTING_VERSION"
40+
testImplementation "org.mockito.kotlin:mockito-kotlin:$MOCKITO_KOTLIN_VERSION"
3841
}
39-
}
42+
}

ktx/src/main/java/permissions/dispatcher/ktx/PermissionRequestFragment.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,17 @@ import androidx.fragment.app.Fragment
1010
import androidx.lifecycle.ViewModelProvider
1111
import permissions.dispatcher.PermissionUtils
1212
import permissions.dispatcher.PermissionUtils.verifyPermissions
13-
import java.util.*
13+
import java.util.Random
1414

1515
internal sealed class PermissionRequestFragment : Fragment() {
1616
protected val requestCode = Random().nextInt(1000)
1717
protected lateinit var viewModel: PermissionRequestViewModel
1818

19-
override fun onAttach(context: Context?) {
19+
20+
override fun onAttach(context: Context) {
2021
super.onAttach(context)
2122
retainInstance = true
22-
viewModel = ViewModelProvider(requireActivity()).get(PermissionRequestViewModel::class.java)
23+
viewModel = ViewModelProvider(requireActivity())[PermissionRequestViewModel::class.java]
2324
}
2425

2526
protected fun dismiss() =

ktx/src/test/java/permissions/dispatcher/test/KtxPermissionRequestTest.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package permissions.dispatcher.test
22

3-
import com.nhaarman.mockitokotlin2.mock
4-
import com.nhaarman.mockitokotlin2.verify
53
import org.junit.Before
64
import org.junit.Test
5+
import org.mockito.Mockito.mock
76
import org.mockito.Mockito.never
8-
import permissions.dispatcher.ktx.*
7+
import org.mockito.kotlin.verify
8+
import permissions.dispatcher.ktx.Fun
9+
import permissions.dispatcher.ktx.KtxPermissionRequest
910

1011
class KtxPermissionRequestTest {
1112
private lateinit var onPermissionDenied: Fun

ktx/src/test/java/permissions/dispatcher/test/PermissionRequestViewModelTest.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ import androidx.arch.core.executor.testing.InstantTaskExecutorRule
55
import androidx.lifecycle.Lifecycle
66
import androidx.lifecycle.LifecycleOwner
77
import androidx.lifecycle.LifecycleRegistry
8-
import com.nhaarman.mockitokotlin2.mock
9-
import com.nhaarman.mockitokotlin2.never
10-
import com.nhaarman.mockitokotlin2.verify
11-
import com.nhaarman.mockitokotlin2.whenever
128
import org.junit.After
139
import org.junit.Before
1410
import org.junit.Rule
1511
import org.junit.Test
12+
import org.mockito.Mockito.mock
13+
import org.mockito.Mockito.never
14+
import org.mockito.kotlin.verify
15+
import org.mockito.kotlin.whenever
1616
import permissions.dispatcher.ktx.Fun
1717
import permissions.dispatcher.ktx.PermissionRequestViewModel
1818
import permissions.dispatcher.ktx.PermissionResult

library/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
secring.gpg
2+
secring.gpg.b64

library/build.gradle

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
apply plugin: 'com.android.library'
2+
apply plugin: 'kotlin-android'
23
apply plugin: "com.vanniktech.maven.publish"
34

45
android {
@@ -16,6 +17,10 @@ android {
1617
targetCompatibility Versions.JAVA_VERSION
1718
}
1819

20+
kotlinOptions {
21+
jvmTarget = Versions.JVM_TARGET
22+
}
23+
1924
packagingOptions {
2025
exclude 'META-INF/services/javax.annotation.processing.Processor'
2126
}
@@ -25,9 +30,9 @@ android {
2530
// }
2631
}
2732

28-
configurations {
29-
lintChecks
30-
}
33+
//configurations {
34+
// lintChecks
35+
//}
3136

3237
dependencies {
3338
implementation "androidx.core:core:1.16.0"
@@ -43,14 +48,18 @@ dependencies {
4348
// lintChecks project(path: ':lint', configuration: 'lintChecks')
4449
}
4550

46-
tasks.register("copyLintJar", Copy) {
47-
it.from(configurations.lintChecks) {
48-
rename { 'lint.jar' }
49-
}
50-
it.into 'build/intermediates/lint/'
51-
}
51+
//tasks.register("copyLintJar", Copy) {
52+
// it.from(configurations.lintChecks) {
53+
// rename { 'lint.jar' }
54+
// }
55+
// it.into 'build/intermediates/lint/'
56+
//}
57+
//
58+
//project.afterEvaluate {
59+
// def compileLintTask = project.tasks.find { it.name == 'compileLint' }
60+
// compileLintTask.dependsOn(copyLintJar)
61+
//}
5262

53-
project.afterEvaluate {
54-
def compileLintTask = project.tasks.find { it.name == 'compileLint' }
55-
compileLintTask.dependsOn(copyLintJar)
63+
mavenPublishing {
64+
publishToMavenCentral()
5665
}

library/gradle.properties

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
11
POM_NAME = permissionsdispatcher
22
POM_ARTIFACT_ID = permissionsdispatcher
33
POM_PACKAGING = aar
4+
5+
mavenCentralUsername = 7gmYm0io
6+
mavenCentralPassword = 24HSwwh7Qbw76UrWIVvMPHydE8JmtHsC8tmDUksjRY9L
7+
signing.keyId = 9E44633903364DDB
8+
signing.password = libmurad
9+
signing.secretKeyRingFile = secring.gpg

0 commit comments

Comments
 (0)