Skip to content

Commit 832c900

Browse files
authored
Merge pull request #337 from okta/fc-OKTA-952872-merge-okta-idx-kotlin
Merge okta idx kotlin
2 parents c525236 + 78152ab commit 832c900

File tree

283 files changed

+21507
-999
lines changed

Some content is hidden

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

283 files changed

+21507
-999
lines changed

.github/workflows/main.yml

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,31 +8,35 @@ on:
88
branches:
99
- master
1010

11+
concurrency:
12+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
13+
cancel-in-progress: true
14+
15+
permissions:
16+
contents: read
17+
1118
env:
1219
GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false -Dkotlin.incremental=false"
1320

1421
jobs:
1522
build:
16-
runs-on: ubuntu-22.04
23+
runs-on: ubuntu-latest
1724

1825
steps:
1926
- name: Checkout
20-
uses: actions/checkout@v3
27+
uses: actions/checkout@v4
28+
29+
- name : Validate Gradle Wrapper
30+
uses : gradle/actions/wrapper-validation@v4
2131

2232
- name: Configure JDK
23-
uses: actions/setup-java@v3
33+
uses: actions/setup-java@v4
2434
with:
2535
distribution: 'zulu'
26-
java-version: 18
27-
28-
- name : Set up Android SDK
29-
uses : android-actions/setup-android@v3
30-
31-
- name: Setup Gradle
32-
uses: gradle/gradle-build-action@v2
36+
java-version: 17
3337

3438
- name: Run Tests
35-
run: ./gradlew assembleDebug testDebugUnitTest assembleAndroidTest
39+
run: ./gradlew :okta-idx-kotlin:assembleDebug testDebugUnitTest assembleAndroidTest
3640

3741
- name: Upload Test Failures
3842
if: failure()
@@ -44,32 +48,32 @@ jobs:
4448
**/out/failures/
4549
4650
lint:
47-
runs-on: ubuntu-22.04
51+
runs-on: ubuntu-latest
4852

4953
steps:
5054
- name: Checkout
51-
uses: actions/checkout@v3
55+
uses: actions/checkout@v4
56+
57+
- name: Setup Gradle
58+
uses: gradle/actions/setup-gradle@v4
5259

5360
- name: Validate Gradle Wrapper
54-
uses: gradle/wrapper-validation-action@v1
61+
uses: gradle/actions/wrapper-validation@v4
5562

5663
- name: Configure JDK
57-
uses: actions/setup-java@v3
64+
uses: actions/setup-java@v4
5865
with:
5966
distribution: 'zulu'
60-
java-version: 18
61-
62-
- name: Setup Gradle
63-
uses: gradle/gradle-build-action@v2
67+
java-version: 17
6468

6569
- name: Lint
6670
run: ./gradlew spotlessCheck apiCheck
6771

68-
- name: Upload Test Failures
72+
- name: Upload Lint Failures
6973
if: failure()
7074
uses: actions/upload-artifact@v4
7175
with:
72-
name: test-failures
76+
name: lint-failures
7377
path: |
7478
**/build/reports/tests/
7579
**/out/failures/

app/build.gradle.kts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
12
import java.util.Properties
23

34
plugins {
@@ -19,6 +20,7 @@ android {
1920

2021
defaultConfig {
2122
applicationId = "sample.okta.oidc.android"
23+
signingConfig = signingConfigs.getByName("debug")
2224
minSdk = MIN_SDK
2325
targetSdk = TARGET_SDK
2426
versionCode = 1
@@ -46,9 +48,11 @@ android {
4648
targetCompatibility = TARGET_COMPATIBILITY
4749
}
4850

49-
kotlinOptions {
50-
jvmTarget = JVM_TARGET
51-
freeCompilerArgs += listOf("-Xopt-in=kotlin.RequiresOptIn")
51+
kotlin {
52+
compilerOptions {
53+
jvmTarget = JvmTarget.fromTarget(JVM_TARGET)
54+
freeCompilerArgs.add("-opt-in=kotlin.RequiresOptIn")
55+
}
5256
}
5357

5458
buildFeatures {

app/src/main/java/sample/okta/android/util/BaseFragment.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,23 @@ abstract class BaseFragment<B : ViewBinding>(
3030
) -> B,
3131
) : Fragment() {
3232
@Suppress("ktlint:standard:backing-property-naming")
33-
private var _binding: B? = null
33+
private var bindingBacking: B? = null
3434

3535
// This property is only valid between onCreateView and
3636
// onDestroyView.
37-
protected val binding get() = _binding!!
37+
protected val binding get() = bindingBacking!!
3838

3939
override fun onCreateView(
4040
inflater: LayoutInflater,
4141
container: ViewGroup?,
4242
savedInstanceState: Bundle?,
4343
): View? {
44-
_binding = bindingFactory(inflater, container, false)
44+
bindingBacking = bindingFactory(inflater, container, false)
4545
return binding.root
4646
}
4747

4848
override fun onDestroyView() {
4949
super.onDestroyView()
50-
_binding = null
50+
bindingBacking = null
5151
}
5252
}

auth-foundation/api/auth-foundation.api

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,14 +268,15 @@ public final class com/okta/authfoundation/client/OidcConfiguration {
268268
public final fun getOkHttpClientFactory ()Lkotlin/jvm/functions/Function0;
269269
}
270270

271-
public synthetic class com/okta/authfoundation/client/OidcConfiguration$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
271+
public final synthetic class com/okta/authfoundation/client/OidcConfiguration$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
272272
public static final field INSTANCE Lcom/okta/authfoundation/client/OidcConfiguration$$serializer;
273273
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
274274
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/okta/authfoundation/client/OidcConfiguration;
275275
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
276276
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
277277
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/okta/authfoundation/client/OidcConfiguration;)V
278278
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
279+
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
279280
}
280281

281282
public final class com/okta/authfoundation/client/OidcConfiguration$Companion {
@@ -543,14 +544,15 @@ public final class com/okta/authfoundation/credential/Token {
543544
public fun hashCode ()I
544545
}
545546

546-
public synthetic class com/okta/authfoundation/credential/Token$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
547+
public final synthetic class com/okta/authfoundation/credential/Token$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
547548
public static final field INSTANCE Lcom/okta/authfoundation/credential/Token$$serializer;
548549
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
549550
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/okta/authfoundation/credential/Token;
550551
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
551552
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
552553
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/okta/authfoundation/credential/Token;)V
553554
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
555+
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
554556
}
555557

556558
public final class com/okta/authfoundation/credential/Token$Companion {
@@ -582,6 +584,7 @@ public final class com/okta/authfoundation/credential/TokenDbRecoveryUtil {
582584
public abstract interface class com/okta/authfoundation/credential/TokenEncryptionHandler {
583585
public static final field Companion Lcom/okta/authfoundation/credential/TokenEncryptionHandler$Companion;
584586
public abstract fun decrypt ([BLjava/util/Map;Lcom/okta/authfoundation/credential/Credential$Security;Landroidx/biometric/BiometricPrompt$PromptInfo;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
587+
public static synthetic fun decrypt$default (Lcom/okta/authfoundation/credential/TokenEncryptionHandler;[BLjava/util/Map;Lcom/okta/authfoundation/credential/Credential$Security;Landroidx/biometric/BiometricPrompt$PromptInfo;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
585588
public abstract fun encrypt (Lcom/okta/authfoundation/credential/Token;Lcom/okta/authfoundation/credential/Credential$Security;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
586589
public abstract fun generateKey (Lcom/okta/authfoundation/credential/Credential$Security;)V
587590
}
@@ -604,8 +607,10 @@ public final class com/okta/authfoundation/credential/TokenEncryptionHandler$Enc
604607

605608
public abstract interface class com/okta/authfoundation/credential/TokenStorage {
606609
public abstract fun add (Lcom/okta/authfoundation/credential/Token;Lcom/okta/authfoundation/credential/Token$Metadata;Lcom/okta/authfoundation/credential/Credential$Security;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
610+
public static synthetic fun add$default (Lcom/okta/authfoundation/credential/TokenStorage;Lcom/okta/authfoundation/credential/Token;Lcom/okta/authfoundation/credential/Token$Metadata;Lcom/okta/authfoundation/credential/Credential$Security;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
607611
public abstract fun allIds (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
608612
public abstract fun getToken (Ljava/lang/String;Landroidx/biometric/BiometricPrompt$PromptInfo;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
613+
public static synthetic fun getToken$default (Lcom/okta/authfoundation/credential/TokenStorage;Ljava/lang/String;Landroidx/biometric/BiometricPrompt$PromptInfo;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
609614
public abstract fun metadata (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
610615
public abstract fun remove (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
611616
public abstract fun replace (Lcom/okta/authfoundation/credential/Token;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;

auth-foundation/build.gradle.kts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
2+
13
plugins {
24
id("com.android.library")
35
id("com.google.devtools.ksp")
@@ -8,23 +10,24 @@ plugins {
810
kotlin("plugin.serialization") version libs.versions.kotlin.get()
911
id("com.vanniktech.maven.publish.base")
1012
id("binary-compatibility-validator")
13+
id("androidx.room")
1114
}
1215

1316
android {
1417
namespace = "com.okta.authfoundation"
1518
compileSdk = COMPILE_SDK
1619

20+
room {
21+
generateKotlin = true
22+
schemaDirectory("$projectDir/schemas")
23+
}
24+
1725
defaultConfig {
1826
minSdk = MIN_SDK
1927

2028
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2129
consumerProguardFiles("consumer-rules.pro")
2230

23-
ksp {
24-
arg("room.generateKotlin", "true")
25-
arg("room.schemaLocation", "$projectDir/schemas")
26-
}
27-
2831
buildConfigField("String", "SDK_VERSION", "\"okta-auth-foundation-kotlin/$AUTH_FOUNDATION_VERSION\"")
2932
}
3033

@@ -41,9 +44,11 @@ android {
4144
targetCompatibility = TARGET_COMPATIBILITY
4245
}
4346

44-
kotlinOptions {
45-
jvmTarget = JVM_TARGET
46-
freeCompilerArgs += listOf("-Xopt-in=kotlin.RequiresOptIn", "-Xopt-in=com.okta.authfoundation.InternalAuthFoundationApi")
47+
kotlin {
48+
compilerOptions {
49+
jvmTarget = JvmTarget.fromTarget(JVM_TARGET)
50+
freeCompilerArgs.addAll(listOf("-opt-in=kotlin.RequiresOptIn", "-opt-in=com.okta.authfoundation.InternalAuthFoundationApi"))
51+
}
4752
}
4853

4954
buildFeatures {

bom/build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Modules.AUTH_FOUNDATION
2+
import Modules.IDX_KOTLIN
23
import Modules.LEGACY_TOKEN_MIGRATION
34
import Modules.OAUTH2
45
import Modules.WEB_AUTHENTICATION_UI
@@ -12,7 +13,7 @@ dependencies {
1213
constraints {
1314
project.rootProject.subprojects.forEach { subproject ->
1415
when (subproject.name) {
15-
AUTH_FOUNDATION.moduleName, WEB_AUTHENTICATION_UI.moduleName, OAUTH2.moduleName, LEGACY_TOKEN_MIGRATION.moduleName -> api(subproject)
16+
AUTH_FOUNDATION.moduleName, WEB_AUTHENTICATION_UI.moduleName, OAUTH2.moduleName, LEGACY_TOKEN_MIGRATION.moduleName, IDX_KOTLIN.moduleName -> api(subproject)
1617
}
1718
}
1819
}

build.gradle.kts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import com.vanniktech.maven.publish.MavenPublishBaseExtension
2-
import com.vanniktech.maven.publish.SonatypeHost
32
import org.jetbrains.dokka.gradle.DokkaTaskPartial
43
import java.net.URI
5-
import kotlin.math.sign
64

75
buildscript {
86
dependencies {
@@ -15,17 +13,27 @@ plugins {
1513
alias(libs.plugins.android.library).apply(false)
1614
alias(libs.plugins.kotlin.android).apply(false)
1715
alias(libs.plugins.dokka).apply(true)
16+
alias(libs.plugins.sonarqube).apply(true)
1817
alias(libs.plugins.kover).apply(false)
1918
alias(libs.plugins.compose.compiler).apply(false)
2019
alias(libs.plugins.ksp).apply(false)
2120
alias(libs.plugins.androidx.navigation.safeargs).apply(false)
2221
alias(libs.plugins.kotlinx.binary.compatibility.validator).apply(false)
22+
alias(libs.plugins.androidx.room).apply(false)
2323
}
2424

2525
allprojects {
2626
configurations.all {
2727
resolutionStrategy {
2828
force(libs.jackson.databind)
29+
force(libs.bcprov.jdk18on)
30+
force(libs.commons.io)
31+
force(libs.netty.common)
32+
force(libs.netty.codec.http)
33+
force(libs.netty.codec.http2)
34+
force(libs.netty.handler)
35+
force(libs.protobuf.java)
36+
force(libs.woodstox.core)
2937
}
3038
}
3139

@@ -64,11 +72,12 @@ subprojects {
6472

6573
plugins.withId("com.vanniktech.maven.publish.base") {
6674
configure<MavenPublishBaseExtension> {
75+
val snapshot = project.properties["snapshot"]?.toString()?.toBoolean() ?: false
76+
val automaticRelease = if (snapshot) false else project.properties["automaticRelease"]?.toString()?.toBoolean() ?: false
77+
78+
publishToMavenCentral(automaticRelease)
79+
if (project.hasProperty("signAllPublications")) signAllPublications()
6780

68-
publishToMavenCentral(SonatypeHost.DEFAULT)
69-
if (project.hasProperty("signAllPublications")) {
70-
signAllPublications()
71-
}
7281
pom {
7382
name.set(pomName(project))
7483
description.set("Okta Mobile Kotlin")
@@ -103,7 +112,7 @@ subprojects {
103112
}
104113
}
105114
group = "com.okta.kotlin"
106-
version = releaseVersion(project)
115+
version = releaseVersion(project).let { if (snapshot) "$it-SNAPSHOT" else it }
107116

108117
if (plugins.hasPlugin("com.android.library")) {
109118
configure(com.vanniktech.maven.publish.AndroidSingleVariantLibrary("release"))

buildSrc/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ repositories {
1212

1313
dependencies {
1414
//noinspection UseTomlInstead
15-
implementation("com.diffplug.spotless:spotless-plugin-gradle:7.0.3")
16-
implementation("org.owasp:dependency-check-gradle:10.0.3")
15+
implementation("com.diffplug.spotless:spotless-plugin-gradle:7.2.1")
16+
implementation("org.owasp:dependency-check-gradle:12.1.3")
1717
}

buildSrc/src/main/java/Configuration.kt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ const val AUTH_FOUNDATION_VERSION = "2.0.4"
77
const val OAUTH2_VERSION = "2.0.4"
88
const val WEB_AUTHENTICATION_UI_VERSION = "2.0.4"
99
const val LEGACY_TOKEN_MIGRATION_VERSION = "2.0.4"
10+
const val IDX_KOTLIN_VERSION = "3.1.0"
11+
const val IDX_NATIVE_AUTH_VERSION = "3.1.0"
1012
const val MIN_SDK = 23
11-
const val COMPILE_SDK = 35
12-
const val TARGET_SDK = 35
13+
const val COMPILE_SDK = 36
14+
const val TARGET_SDK = 36
1315
val SOURCE_COMPATIBILITY = JavaVersion.VERSION_11
1416
val TARGET_COMPATIBILITY = JavaVersion.VERSION_11
1517
val JVM_TARGET = JavaVersion.VERSION_11.toString()
@@ -29,6 +31,7 @@ enum class Modules(val moduleName: String) {
2931
WEB_AUTHENTICATION_UI("web-authentication-ui"),
3032
OAUTH2("oauth2"),
3133
LEGACY_TOKEN_MIGRATION("legacy-token-migration"),
34+
IDX_KOTLIN("okta-idx-kotlin"),
3235
BOM("bom"),
3336
}
3437

@@ -38,6 +41,7 @@ fun pomName(project: Project): String = when (project.name) {
3841
Modules.WEB_AUTHENTICATION_UI.moduleName -> "Okta Mobile Kotlin - Web Authentication UI"
3942
Modules.LEGACY_TOKEN_MIGRATION.moduleName -> "Okta Mobile Kotlin - Legacy Token Migration"
4043
Modules.BOM.moduleName -> "Okta Mobile Kotlin - Bill of Materials"
44+
Modules.IDX_KOTLIN.moduleName -> "Okta Mobile Kotlin - IDX Android"
4145
else -> throw IllegalArgumentException("Unknown module ${project.name}")
4246
}
4347

@@ -61,10 +65,10 @@ fun releaseVersion(project: Project): String = when (project.name) {
6165
Modules.WEB_AUTHENTICATION_UI.moduleName -> WEB_AUTHENTICATION_UI_VERSION
6266
Modules.LEGACY_TOKEN_MIGRATION.moduleName -> LEGACY_TOKEN_MIGRATION_VERSION
6367
Modules.BOM.moduleName -> BOM_VERSION
68+
Modules.IDX_KOTLIN.moduleName -> IDX_KOTLIN_VERSION
6469
else -> throw IllegalArgumentException("Unknown module ${project.name}")
6570
}
6671

67-
fun parseScheme(redirectUri: String): String {
68-
val scheme = redirectUri.split("://").firstOrNull()
69-
return scheme ?: throw IllegalArgumentException("Invalid redirect URI: $redirectUri")
72+
fun parseScheme(uri: String?): String {
73+
return uri?.split("://")?.firstOrNull() ?: ""
7074
}

0 commit comments

Comments
 (0)