From f89b2c0a76dd3cb4bb7a1eaa48466150a1594679 Mon Sep 17 00:00:00 2001 From: Lakhwinder Singh Sarao Date: Mon, 12 Jun 2023 17:03:26 +0530 Subject: [PATCH 1/7] Upgrade Android Gradle plugin and Gradle version --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 4542dfc..8c93566 100644 --- a/build.gradle +++ b/build.gradle @@ -16,7 +16,7 @@ buildscript { // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files - classpath 'com.android.tools.build:gradle:4.0.1' + classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" classpath "com.squareup.sqldelight:gradle-plugin:$sql_delight_version" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1b16c34..774fae8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index eec104c..a645601 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,4 +1,2 @@ include ':AndroidApp', ':common' -rootProject.name = 'Mifos Open banking' - -enableFeaturePreview('GRADLE_METADATA') +rootProject.name = 'Mifos Open banking' \ No newline at end of file From 4ebb522c7d11b888c694f844d6e8299cf7f30bb5 Mon Sep 17 00:00:00 2001 From: Lakhwinder Singh Sarao Date: Sat, 17 Jun 2023 20:47:09 +0530 Subject: [PATCH 2/7] Upgrade Kotlin, Gradle, and Android Gradle Pluglin versions Resolve Kotlin KMM configuration issues and warnings Migrate moko-mvvm KMM dependency from Bintray to Maven Central --- androidApp/gradle/wrapper/gradle-wrapper.properties | 2 +- build.gradle | 10 +++++----- common/build.gradle | 8 ++++++++ gradle.properties | 2 ++ 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/androidApp/gradle/wrapper/gradle-wrapper.properties b/androidApp/gradle/wrapper/gradle-wrapper.properties index a40c025..d2e72f9 100644 --- a/androidApp/gradle/wrapper/gradle-wrapper.properties +++ b/androidApp/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip diff --git a/build.gradle b/build.gradle index 8c93566..c78431a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,8 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.3.72' - ext.sql_delight_version = "1.4.0" + ext.kotlin_version = '1.7.20' + ext.sql_delight_version = "1.5.4" repositories { google() jcenter() @@ -16,7 +16,7 @@ buildscript { // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files - classpath 'com.android.tools.build:gradle:7.4.2' + classpath "com.android.tools.build:gradle:7.3.0" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" classpath "com.squareup.sqldelight:gradle-plugin:$sql_delight_version" @@ -30,7 +30,7 @@ allprojects { jcenter() - maven { url = uri("https://dl.bintray.com/icerockdev/moko") } + maven { url = uri("https://repo1.maven.org/maven2/dev/icerock/moko/") } maven { url "https://dl.bintray.com/florent37/maven" } maven { url "https://dl.bintray.com/kodein-framework/Kodein-DI" } } @@ -41,7 +41,7 @@ ext { serializer_version = "0.20.0" ktor_version = "1.3.2" kodeinVersion = "6.5.3" - moko_mvvm_version = "0.6.0" + moko_mvvm_version = "0.10.0" mockk_version = "1.9.3" preferences_version = "1.0.0" } diff --git a/common/build.gradle b/common/build.gradle index 96cfa84..b9ae7d2 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -36,6 +36,14 @@ android { jvmTarget = "1.8" } } + configurations { + create("androidTestApi") + create("androidTestDebugApi") + create("androidTestReleaseApi") + create("testApi") + create("testDebugApi") + create("testReleaseApi") + } } kotlin { diff --git a/gradle.properties b/gradle.properties index 23339e0..9e117e9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,3 +19,5 @@ android.useAndroidX=true android.enableJetifier=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official +# Enable Multiplatform/Android-V2-SourceSetLayout +kotlin.mpp.androidSourceSetLayoutVersion=2 From ae34e862c2f7eb334f1bfad476b63960c2b0c048 Mon Sep 17 00:00:00 2001 From: Lakhwinder Singh Sarao Date: Thu, 22 Jun 2023 20:20:31 +0530 Subject: [PATCH 3/7] Suppress warning for building ios-mac targets --- gradle.properties | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gradle.properties b/gradle.properties index 9e117e9..78ffcf6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,3 +21,5 @@ android.enableJetifier=true kotlin.code.style=official # Enable Multiplatform/Android-V2-SourceSetLayout kotlin.mpp.androidSourceSetLayoutVersion=2 +# Mac targets cannot be built on linux, suppress the warning. +kotlin.native.ignoreDisabledTargets=true \ No newline at end of file From f25ed5b8ac945d9b60d310c483d2fc06364d1bd1 Mon Sep 17 00:00:00 2001 From: Lakhwinder Singh Sarao Date: Wed, 28 Jun 2023 20:37:22 +0530 Subject: [PATCH 4/7] Suppress warning pre release check Add serializer json library Remove multiplatform preferences library Update libraries versions --- build.gradle | 17 +++++++++-------- common/build.gradle | 19 ++++++------------- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/build.gradle b/build.gradle index c78431a..d6572a8 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ buildscript { mavenCentral() - maven { url "https://dl.bintray.com/kodein-framework/Kodein-DI/org/kodein/di/" } + maven { url "https://repo1.maven.org/maven2/org/kodein/di/" } } dependencies { @@ -28,22 +28,23 @@ allprojects { repositories { google() jcenter() + mavenCentral() - - maven { url = uri("https://repo1.maven.org/maven2/dev/icerock/moko/") } - maven { url "https://dl.bintray.com/florent37/maven" } - maven { url "https://dl.bintray.com/kodein-framework/Kodein-DI" } + maven { url = uri("https://repo1.maven.org/maven2/dev/icerock/moko") } + maven { url = uri("https://repo1.maven.org/maven2/org/kodein/di") } + maven { url = uri("https://repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core") } } } ext { - coroutine_version = "1.3.2" - serializer_version = "0.20.0" + coroutine_version = "1.3.8" + serializer_core_version = "0.20.0-1.4-M1" + serializer_version = "0.20.0-1.4-M1-release-99" + serializer_json_version = "1.5.1" ktor_version = "1.3.2" kodeinVersion = "6.5.3" moko_mvvm_version = "0.10.0" mockk_version = "1.9.3" - preferences_version = "1.0.0" } task clean(type: Delete) { diff --git a/common/build.gradle b/common/build.gradle index b9ae7d2..127359e 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -31,9 +31,10 @@ android { targetCompatibility JavaVersion.VERSION_1_8 } - tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { + tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { jvmTarget = "1.8" + freeCompilerArgs += ["-Xskip-prerelease-check"] } } configurations { @@ -74,13 +75,14 @@ kotlin { api 'org.jetbrains.kotlin:kotlin-stdlib-common' // COROUTINES - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$coroutine_version" + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$coroutine_core_version" // MOKO - MVVM implementation "dev.icerock.moko:mvvm:$moko_mvvm_version" // SERIALIZATION - implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$serializer_version" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$serializer_core_version" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:$serializer_json_version" // KODE IN implementation "org.kodein.di:kodein-di-core:$kodeinVersion" @@ -89,9 +91,6 @@ kotlin { // KTOR implementation "io.ktor:ktor-client-core:$ktor_version" implementation "io.ktor:ktor-client-auth-native:$ktor_version" - - // Preferences - implementation "com.github.florent37:multiplatform-preferences:$preferences_version" } androidMain.dependencies { @@ -105,16 +104,13 @@ kotlin { implementation "androidx.lifecycle:lifecycle-extensions:$androidx_lifecycle_version" // SERIALIZATION - implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serializer_version" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serializer_core_version" // KTOR implementation "io.ktor:ktor-client-android:$ktor_version" // SQL Delight implementation "com.squareup.sqldelight:android-driver:$sql_delight_version" - - // Preferences - implementation "com.github.florent37:multiplatform-preferences-android:$preferences_version" } iosMain.dependencies { @@ -131,9 +127,6 @@ kotlin { // SQL Delight implementation "com.squareup.sqldelight:native-driver:$sql_delight_version" - - // Preferences - implementation "com.github.florent37:multiplatform-preferences-ios:$preferences_version" } commonTest.dependencies { From c31d99492bc62e6f003222dc9142a0448876c117 Mon Sep 17 00:00:00 2001 From: Lakhwinder Singh Sarao Date: Fri, 30 Jun 2023 18:25:09 +0530 Subject: [PATCH 5/7] Migrate kotlin serialization library to v1.0.0, resolved deprecated components, and updated junit dependency. --- androidApp/build.gradle | 2 +- build.gradle | 4 +- common/build.gradle | 13 ++- .../kotlin/SampleTestsAndroid.kt | 4 +- .../preferencesHelper/PreferencesHelper.kt | 91 +++++++++++++++++-- .../data/datasources/network/BanksApi.kt | 13 +-- .../data/datasources/network/CardApi.kt | 2 +- .../data/datasources/network/ClientApi.kt | 27 +++--- .../datasources/network/TransactionApi.kt | 6 +- 9 files changed, 124 insertions(+), 38 deletions(-) diff --git a/androidApp/build.gradle b/androidApp/build.gradle index 5f90c5d..ec05f3d 100644 --- a/androidApp/build.gradle +++ b/androidApp/build.gradle @@ -50,7 +50,7 @@ dependencies { implementation 'androidx.navigation:navigation-fragment-ktx:2.3.0' implementation 'androidx.navigation:navigation-ui-ktx:2.3.0' implementation 'com.google.code.gson:gson:2.8.6' - testImplementation 'junit:junit:4.13' + testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' diff --git a/build.gradle b/build.gradle index d6572a8..8dc6844 100644 --- a/build.gradle +++ b/build.gradle @@ -38,8 +38,8 @@ allprojects { ext { coroutine_version = "1.3.8" - serializer_core_version = "0.20.0-1.4-M1" - serializer_version = "0.20.0-1.4-M1-release-99" + serializer_core_version = "1.0-M1-1.4.0-rc" + serializer_native_version = "0.20.0-1.4-M1-release-99" serializer_json_version = "1.5.1" ktor_version = "1.3.2" kodeinVersion = "6.5.3" diff --git a/common/build.gradle b/common/build.gradle index 127359e..6961176 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -4,11 +4,11 @@ apply plugin: 'com.android.library' apply plugin: 'com.squareup.sqldelight' android { - compileSdkVersion(29) + compileSdkVersion(33) defaultConfig { minSdkVersion(21) - targetSdkVersion(29) + targetSdkVersion(33) } // By default the android gradle plugin expects to find the kotlin source files in @@ -81,7 +81,9 @@ kotlin { implementation "dev.icerock.moko:mvvm:$moko_mvvm_version" // SERIALIZATION - implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$serializer_core_version" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serializer_core_version" + + // SERIALIZATION - JSON Format implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:$serializer_json_version" // KODE IN @@ -120,7 +122,7 @@ kotlin { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-native:$coroutine_version" // SERIALIZATION - implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$serializer_version" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$serializer_native_version" // KTOR implementation "io.ktor:ktor-client-ios:$ktor_version" @@ -133,6 +135,9 @@ kotlin { implementation kotlin('test-common') implementation kotlin('test-annotations-common') implementation "io.mockk:mockk:$mockk_version" + implementation "junit:junit:4.13.2" + implementation 'org.jetbrains.kotlin:kotlin-test' + implementation 'org.jetbrains.kotlin:kotlin-test-junit' } } } diff --git a/common/src/androidMainTest/kotlin/SampleTestsAndroid.kt b/common/src/androidMainTest/kotlin/SampleTestsAndroid.kt index 87332d7..90e5d8a 100644 --- a/common/src/androidMainTest/kotlin/SampleTestsAndroid.kt +++ b/common/src/androidMainTest/kotlin/SampleTestsAndroid.kt @@ -1,8 +1,8 @@ package org.mifos.openbanking.common +import org.junit.Assert.assertTrue +import org.junit.Test import org.mifos.openbanking.hello -import kotlin.test.Test -import kotlin.test.assertTrue class SampleTestsAndroid { @Test diff --git a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/disk/preferencesHelper/PreferencesHelper.kt b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/disk/preferencesHelper/PreferencesHelper.kt index 6dc950a..e290b1d 100644 --- a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/disk/preferencesHelper/PreferencesHelper.kt +++ b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/disk/preferencesHelper/PreferencesHelper.kt @@ -1,7 +1,7 @@ package org.mifos.openbanking.data.datasources.disk.preferencesHelper -import com.github.florent37.preferences.Preferences -import kotlinx.serialization.builtins.list +import kotlinx.serialization.builtins.ListSerializer +import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import org.mifos.openbanking.domain.usecase.fetchBanks.Bank import org.mifos.openbanking.viewModel.model.UserModel @@ -13,23 +13,100 @@ class PreferencesHelper { private val supportedBanksKey: String = "supported_banks" fun saveUserModel(userModel: UserModel) { - preferences.setString(userModelKey, Json.stringify(UserModel.serializer(), userModel)) + preferences.setString(userModelKey, Json.encodeToString(userModel)) } fun getUserModel(): UserModel? { return if (preferences.hasKey(userModelKey)) { - Json.parse(UserModel.serializer(), preferences.getString(userModelKey)!!) + Json.decodeFromString(UserModel.serializer(),preferences.getString(userModelKey)!!) } else { null } } + fun saveSupportedBanks(bankList: List) { - preferences.setString(supportedBanksKey, Json.stringify(Bank.serializer().list, bankList)) + preferences.setString(supportedBanksKey, Json.encodeToString(bankList)) } + fun getSupportedBanks(): List { - return Json.parse(Bank.serializer().list, preferences.getString(supportedBanksKey)!!) + return Json.decodeFromString(ListSerializer(Bank.serializer()), preferences.getString(supportedBanksKey)!!) + } +} + +class Preferences(name: String? = null) { + + fun setInt(key: String, value: Int) { + // Implementation + } + + fun getInt(key: String, defaultValue: Int): Int { + return TODO("Provide the return value") + } + + fun getInt(key: String): Int? { + return TODO("Provide the return value") + } + + fun setFloat(key: String, value: Float) { + // Implementation + } + + fun getFloat(key: String, defaultValue: Float): Float { + return TODO("Provide the return value") + } + + fun getFloat(key: String): Float? { + return TODO("Provide the return value") + } + + fun setLong(key: String, value: Long) { + // Implementation + } + + fun getLong(key: String, defaultValue: Long): Long { + return TODO("Provide the return value") + } + + fun getLong(key: String): Long? { + return TODO("Provide the return value") + } + + fun setString(key: String, value: String) { + // Implementation + } + + fun getString(key: String, defaultValue: String): String { + return TODO("Provide the return value") + } + + fun getString(key: String): String? { + return TODO("Provide the return value") + } + + fun setBoolean(key: String, value: Boolean) { + // Implementation + } + + fun getBoolean(key: String, defaultValue: Boolean): Boolean { + return TODO("Provide the return value") + } + + fun getBoolean(key: String): Boolean? { + return TODO("Provide the return value") + } + + fun remove(key: String) { + // Implementation + } + + fun clear() { + // Implementation + } + + fun hasKey(key: String): Boolean { + return TODO("Provide the return value") } +} -} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/BanksApi.kt b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/BanksApi.kt index 111ef65..4c6372f 100644 --- a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/BanksApi.kt +++ b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/BanksApi.kt @@ -1,9 +1,9 @@ package org.mifos.openbanking.data.datasources.network -import io.ktor.client.* -import io.ktor.client.features.* -import io.ktor.client.request.* -import kotlinx.serialization.builtins.list +import io.ktor.client.HttpClient +import io.ktor.client.features.ClientRequestException +import io.ktor.client.request.get +import kotlinx.serialization.builtins.ListSerializer import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonObject import org.mifos.openbanking.base.Response @@ -19,8 +19,9 @@ class BanksApi { return try { val response = client.get(API_HOST + BANKS_PATH) - val responseBanks = (Json.parseJson(response) as JsonObject)["banks"].toString() - val bankList = Json.nonstrict.parse(Bank.serializer().list, responseBanks) + val responseBanks = (Json.parseToJsonElement(response) as JsonObject)["banks"].toString() + val bankList = + Json.decodeFromString(ListSerializer(Bank.serializer()), responseBanks) Response.Success( FetchBanksResponse( diff --git a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/CardApi.kt b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/CardApi.kt index 06956af..b0344f4 100644 --- a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/CardApi.kt +++ b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/CardApi.kt @@ -22,7 +22,7 @@ class CardApi { } } - val fetchCardsResponse = Json.nonstrict.parse(FetchCardsResponse.serializer(), response) + val fetchCardsResponse = Json.decodeFromString(FetchCardsResponse.serializer(), response) return Response.Success(fetchCardsResponse) } catch (exp: ClientRequestException) { diff --git a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/ClientApi.kt b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/ClientApi.kt index 96a46fa..8de3457 100644 --- a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/ClientApi.kt +++ b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/ClientApi.kt @@ -1,13 +1,16 @@ package org.mifos.openbanking.data.datasources.network -import io.ktor.client.* -import io.ktor.client.features.* -import io.ktor.client.request.* -import kotlinx.serialization.builtins.list +import io.ktor.client.HttpClient +import io.ktor.client.features.ClientRequestException +import io.ktor.client.request.get +import io.ktor.client.request.headers +import io.ktor.client.request.post +import kotlinx.serialization.builtins.ListSerializer import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonArray import kotlinx.serialization.json.JsonObject -import kotlinx.serialization.json.content +import kotlinx.serialization.json.double +import kotlinx.serialization.json.jsonPrimitive import org.mifos.openbanking.base.Response import org.mifos.openbanking.domain.usecase.createClient.CreateClientResponse import org.mifos.openbanking.domain.usecase.fetchAccounts.Account @@ -43,7 +46,7 @@ class ClientApi { } } - val loginClientResponse = Json.parse(LoginClientResponse.serializer(), response) + val loginClientResponse = Json.decodeFromString(LoginClientResponse.serializer(), response) return Response.Success(loginClientResponse) } catch (exp: ClientRequestException) { @@ -61,9 +64,9 @@ class ClientApi { } } - val responseJson = Json.parseJson(response) + val responseJson = Json.parseToJsonElement(response) val responseAccounts = (responseJson as Map)["accounts"].toString() - val accounts = Json.nonstrict.parse(Account.serializer().list, responseAccounts) + val accounts = Json.decodeFromString(ListSerializer(Account.serializer()), responseAccounts) return Response.Success( FetchAccountsResponse( accounts @@ -91,13 +94,13 @@ class ClientApi { val accountBalances: MutableList = mutableListOf() - val accounts = (Json.parseJson(response) as JsonObject)["accounts"] as JsonArray + val accounts = (Json.parseToJsonElement(response) as JsonObject)["accounts"] as JsonArray for (account in accounts) { account as JsonObject - val accountId = account["id"]!!.content + val accountId = account["id"]!!.jsonPrimitive.content val balance = account["balance"] as JsonObject - val currency = balance["currency"]!!.content - val amount = balance["amount"]!!.primitive.double + val currency = balance["currency"]!!.jsonPrimitive.content + val amount = balance["amount"]!!.jsonPrimitive.double accountBalances.add( AccountBalance( diff --git a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/TransactionApi.kt b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/TransactionApi.kt index 9aa1906..c431894 100644 --- a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/TransactionApi.kt +++ b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/TransactionApi.kt @@ -71,7 +71,7 @@ class TransactionApi { } val transactionRequestsList = - Json.nonstrict.parse(FetchTransactionRequestsResponse.serializer(), response) + Json.decodeFromString(FetchTransactionRequestsResponse.serializer(), response) return Response.Success(transactionRequestsList) } catch (exp: ClientRequestException) { @@ -96,7 +96,7 @@ class TransactionApi { } val transaction = - Json.nonstrict.parse(Transaction.serializer(), response) + Json.decodeFromString(Transaction.serializer(), response) return Response.Success(FetchTransactionByIdResponse(transaction)) } catch (exp: ClientRequestException) { @@ -125,7 +125,7 @@ class TransactionApi { } val fetchTransactionsResponse = - Json.nonstrict.parse(FetchTransactionsResponse.serializer(), response) + Json.decodeFromString(FetchTransactionsResponse.serializer(), response) return Response.Success(fetchTransactionsResponse) } catch (exp: ClientRequestException) { From 95d0e747c7f82ec86b6248ef7edbc54e99fb6258 Mon Sep 17 00:00:00 2001 From: lssarao Date: Fri, 7 Jul 2023 13:30:11 +0530 Subject: [PATCH 6/7] Update permissions, compileSdkVersion, and targetSdkVersion to 33, resolve kotlin standard library and serialization duplicate class issue --- androidApp/build.gradle | 26 +++++++++++++++++++------ androidApp/src/main/AndroidManifest.xml | 9 ++++++++- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/androidApp/build.gradle b/androidApp/build.gradle index ec05f3d..b74f607 100644 --- a/androidApp/build.gradle +++ b/androidApp/build.gradle @@ -5,11 +5,11 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { - compileSdkVersion 29 + compileSdkVersion 33 defaultConfig { applicationId "org.mifos.openbanking" minSdkVersion 21 - targetSdkVersion 29 + targetSdkVersion 33 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -38,15 +38,25 @@ android { } dependencies { + + constraints { + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0") { + because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib") + } + } + implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.core:core-ktx:1.3.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'com.google.android.material:material:1.2.0' - implementation 'androidx.navigation:navigation-fragment:2.3.0' - implementation 'androidx.navigation:navigation-ui:2.3.0' - implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' + implementation 'androidx.navigation:navigation-fragment-ktx:2.3.0' + implementation 'androidx.navigation:navigation-ui-ktx:2.3.0' + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1' + implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.5.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:2.5.1' implementation 'androidx.navigation:navigation-fragment-ktx:2.3.0' implementation 'androidx.navigation:navigation-ui-ktx:2.3.0' implementation 'com.google.code.gson:gson:2.8.6' @@ -75,3 +85,7 @@ dependencies { // SHIMMER ANIMATION implementation 'com.facebook.shimmer:shimmer:0.5.0' } + +configurations { + all*.exclude group: 'org.jetbrains.kotlinx', module: 'kotlinx-serialization-runtime-jvm' +} \ No newline at end of file diff --git a/androidApp/src/main/AndroidManifest.xml b/androidApp/src/main/AndroidManifest.xml index d99bd8c..cf3f99d 100644 --- a/androidApp/src/main/AndroidManifest.xml +++ b/androidApp/src/main/AndroidManifest.xml @@ -1,9 +1,15 @@ + + + + android:theme="@style/AppTheme" + android:exported="true"> From 6e72082c35c83bb9caa574fd01f2215706c7fc73 Mon Sep 17 00:00:00 2001 From: lssarao Date: Fri, 7 Jul 2023 14:36:10 +0530 Subject: [PATCH 7/7] Fix: Remove Multiplatform-Preferences remote library and implement local code --- common/build.gradle | 2 +- .../preferencesHelper/PreferencesHelper.kt | 41 ++++++++++--------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/common/build.gradle b/common/build.gradle index 6961176..10ef7c9 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -102,7 +102,7 @@ kotlin { // COROUTINES implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutine_version" - // MOKO - MVVM + // ViewModel and LiveData implementation "androidx.lifecycle:lifecycle-extensions:$androidx_lifecycle_version" // SERIALIZATION diff --git a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/disk/preferencesHelper/PreferencesHelper.kt b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/disk/preferencesHelper/PreferencesHelper.kt index e290b1d..ecb1b3b 100644 --- a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/disk/preferencesHelper/PreferencesHelper.kt +++ b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/disk/preferencesHelper/PreferencesHelper.kt @@ -35,78 +35,81 @@ class PreferencesHelper { } } -class Preferences(name: String? = null) { +class Preferences(private val name: String? = null) { + + private val preferences = mutableMapOf() fun setInt(key: String, value: Int) { - // Implementation + preferences[key] = value } fun getInt(key: String, defaultValue: Int): Int { - return TODO("Provide the return value") + return preferences[key] as? Int? ?: defaultValue } fun getInt(key: String): Int? { - return TODO("Provide the return value") + return preferences[key] as? Int } fun setFloat(key: String, value: Float) { - // Implementation + preferences[key] = value } fun getFloat(key: String, defaultValue: Float): Float { - return TODO("Provide the return value") + return preferences[key] as? Float? ?: defaultValue } fun getFloat(key: String): Float? { - return TODO("Provide the return value") + return preferences[key] as? Float } fun setLong(key: String, value: Long) { - // Implementation + preferences[key] = value } fun getLong(key: String, defaultValue: Long): Long { - return TODO("Provide the return value") + return preferences[key] as? Long? ?: defaultValue } fun getLong(key: String): Long? { - return TODO("Provide the return value") + return preferences[key] as? Long } fun setString(key: String, value: String) { - // Implementation + preferences[key] = value } fun getString(key: String, defaultValue: String): String { - return TODO("Provide the return value") + return preferences[key] as? String? ?: defaultValue } fun getString(key: String): String? { - return TODO("Provide the return value") + return preferences[key] as? String } fun setBoolean(key: String, value: Boolean) { - // Implementation + preferences[key] = value } fun getBoolean(key: String, defaultValue: Boolean): Boolean { - return TODO("Provide the return value") + return preferences[key] as? Boolean? ?: defaultValue } fun getBoolean(key: String): Boolean? { - return TODO("Provide the return value") + return preferences[key] as? Boolean } fun remove(key: String) { - // Implementation + preferences.remove(key) } fun clear() { - // Implementation + preferences.clear() } fun hasKey(key: String): Boolean { - return TODO("Provide the return value") + return preferences.containsKey(key) } } +