Skip to content
This repository was archived by the owner on Apr 29, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all 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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ out/
# Gradle files
.gradle/
build/
.kotlin

# Local configuration file (sdk path, etc)
local.properties
Expand Down
65 changes: 64 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ androidx-activityCompose = "1.8.0"
kotlinStdlibJdk8 = "1.7.20"
lifecycleViewmodelKtx = "2.8.1"
compose-plugin = "1.6.10"
multiplatformSettings = "1.0.0"
multiplatformSettings = "1.2.0"
navigationCompose = "2.7.7"
navigationComposeVersion = "2.7.0-alpha07"
dagger-hilt = "2.48.1"
Expand All @@ -32,6 +32,22 @@ testng = "6.9.6"
monitor = "1.6.1"
runnerVersion = "1.5.2"

kotlinxCoroutines = "1.9.0"
protobufPlugin = "0.9.4"
protobuf = "4.26.0"
kotlinxSerializationJson = "1.7.3"
composeJB = "1.7.0"
composeLifecycle = "2.8.3"
jbCoreBundle = "1.0.1"
jbSavedState = "1.2.2"
composeNavigation = "2.8.0-alpha10"
kotlinxImmutable = "0.3.8"
androidxLifecycle = "2.8.7"
androidxTracing = "1.3.0-alpha02"
koin = "4.0.1-RC1"
androidxNavigation = "2.8.5"
koinAnnotationsVersion = "1.4.0-RC4"

[libraries]
android-maven-gradle-plugin = { module = "com.github.dcendents:android-maven-gradle-plugin", version.ref = "androidMavenGradlePlugin" }
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activityCompose" }
Expand Down Expand Up @@ -68,6 +84,43 @@ testng = { group = "org.testng", name = "testng", version.ref = "testng" }
androidx-monitor = { group = "androidx.test", name = "monitor", version.ref = "monitor" }
runner = { group = "androidx.test", name = "runner", version.ref = "runnerVersion" }

kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" }
jb-kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" }
kotlin-reflect = { group = "org.jetbrains.kotlin", name = "kotlin-reflect", version.ref = "kotlin" }
protobuf-kotlin-lite = { group = "com.google.protobuf", name = "protobuf-kotlin-lite", version.ref = "protobuf" }
kotlinx-serialization-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-core", version.ref = "kotlinxSerializationJson" }
multiplatform-settings = { group = "com.russhwolf", name = "multiplatform-settings-no-arg", version.ref = "multiplatformSettings" }
multiplatform-settings-coroutines = { group = "com.russhwolf", name = "multiplatform-settings-coroutines", version.ref = "multiplatformSettings" }
multiplatform-settings-serialization = { group = "com.russhwolf", name = "multiplatform-settings-serialization", version.ref = "multiplatformSettings" }
kotlinx-coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" }
kotlinx-coroutines-swing = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-swing", version.ref = "kotlinxCoroutines" }
jb-composeRuntime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "composeJB" }
jb-composeViewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "composeLifecycle" }
jb-lifecycleViewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel", version.ref = "composeLifecycle" }
jb-lifecycleViewmodelSavedState = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate", version.ref = "composeLifecycle" }
jb-bundle = { module = "org.jetbrains.androidx.core:core-bundle", version.ref = "jbCoreBundle" }
jb-savedstate = { module = "org.jetbrains.androidx.savedstate:savedstate", version.ref = "jbSavedState" }
jb-composeNavigation = { module = "org.jetbrains.androidx.navigation:navigation-compose", version.ref = "composeNavigation" }
kotlinx-collections-immutable = { group = "org.jetbrains.kotlinx", name = "kotlinx-collections-immutable", version.ref = "kotlinxImmutable" }
androidx-tracing-ktx = { group = "androidx.tracing", name = "tracing-ktx", version.ref = "androidxTracing" }
androidx-lifecycle-runtimeCompose-alt = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "androidxLifecycle" }
androidx-lifecycle-viewModelCompose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "androidxLifecycle" }
koin-android = { group = "io.insert-koin", name = "koin-android", version.ref = "koin" }
koin-androidx-compose = { group = "io.insert-koin", name = "koin-androidx-compose", version.ref = "koin" }
koin-androidx-navigation = { group = "io.insert-koin", name = "koin-androidx-navigation", version.ref = "koin" }
koin-core-viewmodel = { group = "io.insert-koin", name = "koin-core-viewmodel", version.ref = "koin" }
koin-test-junit4 = { group = "io.insert-koin", name = "koin-test-junit4", version.ref = "koin" }
androidx-navigation-testing = { group = "androidx.navigation", name = "navigation-testing", version.ref = "androidxNavigation" }
androidx-compose-ui-test = { group = "androidx.compose.ui", name = "ui-test-junit4" }
androidx-lifecycle-runtimeTesting = { group = "androidx.lifecycle", name = "lifecycle-runtime-testing", version.ref = "androidxLifecycle" }
koin-compose-viewmodel = { group = "io.insert-koin", name = "koin-compose-viewmodel", version.ref = "koin" }
koin-compose = { group = "io.insert-koin", name = "koin-compose", version.ref = "koin" }
koin-bom = { group = "io.insert-koin", name = "koin-bom", version.ref = "koin" }
koin-core = { group = "io.insert-koin", name = "koin-core", version.ref = "koin" }
koin-annotations = { group = "io.insert-koin", name = "koin-annotations", version.ref = "koinAnnotationsVersion" }
koin-ksp-compiler = { group = "io.insert-koin", name = "koin-ksp-compiler", version.ref = "koinAnnotationsVersion" }
koin-test = { group = "io.insert-koin", name = "koin-test", version.ref = "koin" }

[plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" }
androidLibrary = { id = "com.android.library", version.ref = "agp" }
Expand All @@ -78,3 +131,13 @@ kotlinCocoapods = { id = "org.jetbrains.kotlin.native.cocoapods", version.ref =
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
dagger-hilt = { id = "com.google.dagger.hilt.android", version.ref = "dagger-hilt" }
jetbrainsCompose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" }


mifospay-kmp-koin = { id = "mifospay.kmp.koin", version = "unspecified" }
mifos-detekt-plugin = { id = "mifos.detekt.plugin", version = "unspecified" }
mifos-spotless-plugin = { id = "mifos.spotless.plugin", version = "unspecified" }
mifospay-kmp-library = { id = "mifospay.kmp.library", version = "unspecified" }
mifospay-cmp-feature = { id = "mifospay.cmp.feature", version = "unspecified" }
kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
protobuf = { id = "com.google.protobuf", version.ref = "protobufPlugin" }
124 changes: 109 additions & 15 deletions mifos-passcode/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,19 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget

plugins {
alias(libs.plugins.androidLibrary)
alias(libs.plugins.kotlinAndroid)
alias(libs.plugins.kotlinMultiplatform)
// alias(libs.plugins.mifospay.kmp.library)
// alias(libs.plugins.mifospay.kmp.koin)
// alias(libs.plugins.mifos.detekt.plugin)
// alias(libs.plugins.mifos.spotless.plugin)
// alias(libs.plugins.mifospay.cmp.feature)
// alias(libs.plugins.kotlin.parcelize)
// alias(com.google.devtools.ksp)
alias(libs.plugins.devToolsKsp)
alias(libs.plugins.compose.compiler)
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.protobuf)
}

ext {
Expand All @@ -9,7 +22,7 @@ ext {

publishedGroupId = 'com.mifos.mobile'
libraryName = 'mifos-passcode'
artifact = 'mifos-passcode' // artifact name and library name should be same.
artifact = 'mifos-passcode'

libraryDescription = 'A Library as feature of passcode'

Expand Down Expand Up @@ -53,22 +66,102 @@ android {
buildFeatures {
viewBinding = true
}
kotlinOptions {
jvmTarget = '17'
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
kotlin {
androidTarget {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_17)
}
}

sourceSets {

commonTest.dependencies{
implementation(libs.kotlinx.coroutines.test)
implementation(libs.kotlin.test)
implementation(libs.koin.test)
implementation libs.junit
}

implementation libs.androidx.appcompat
implementation libs.material
commonMain {
dependencies {

implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation libs.androidx.appcompat
implementation libs.material
implementation libs.androidx.core.ktx.v1131

// This Belongs To Koinlibrary
implementation(libs.koin.bom)
implementation(libs.koin.core)
implementation(libs.koin.annotations)
implementation(libs.koin.ksp.compiler)
implementation(libs.koin.compose.viewmodel)
implementation(libs.koin.compose)
implementation(libs.koin.core.viewmodel)
implementation(libs.koin.test.junit4)

implementation(libs.jb.composeRuntime)
implementation(libs.jb.composeViewmodel)
implementation(libs.jb.lifecycleViewmodel)
implementation(libs.jb.lifecycleViewmodelSavedState)
implementation(libs.jb.savedstate)
implementation(libs.jb.bundle)
implementation(libs.jb.composeNavigation)
implementation(libs.kotlinx.collections.immutable)

implementation(libs.jb.kotlin.stdlib)
implementation(libs.kotlin.reflect)

api(libs.protobuf.kotlin.lite)
implementation(libs.kotlinx.serialization.core)

implementation(libs.multiplatform.settings)
implementation(libs.multiplatform.settings.serialization)
implementation(libs.multiplatform.settings.coroutines)

implementation(libs.kotlinx.coroutines.core)

// implementation(compose.ui)
// implementation(compose.foundation)
// implementation(compose.material3)
// implementation(compose.materialIconsExtended)
// implementation(compose.components.resources)
// implementation(compose.components.uiToolingPreview)
}
}

testImplementation libs.junit
androidTestImplementation libs.runner
androidTestImplementation libs.androidx.espresso.core
implementation libs.androidx.core.ktx.v1131
implementation platform(libs.kotlin.bom)
androidMain {
dependencies {
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(libs.androidx.lifecycle.runtimeCompose.alt)
implementation(libs.androidx.lifecycle.viewModelCompose)
implementation(libs.androidx.tracing.ktx)

implementation(libs.androidx.navigation.testing)
implementation(libs.androidx.compose.ui.test)
implementation(libs.androidx.lifecycle.runtimeTesting)

implementation(libs.koin.android)
implementation(libs.koin.androidx.compose)
implementation(libs.koin.androidx.navigation)
}
}

androidTest.dependencies{
implementation(libs.runner)
implementation(libs.androidx.espresso.core)
}

desktopMain {
dependencies {
implementation(libs.kotlinx.coroutines.swing)
}
}
}
}

tasks.withType(Javadoc) {
Expand All @@ -81,10 +174,11 @@ tasks.withType(Javadoc) {
repositories {
mavenCentral()
}

// Used this article to release the library
// https://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en

// Add these line in local.properties to direct release on bintray
//bintray.user=YOUR_BINTRAY_USERNAME
//bintray.apikey=YOUR_BINTRAY_API_KEY
//bintray.gpg.password=YOUR_GPG_PASSWORD
//bintray.gpg.password=YOUR_GPG_PASSWORD
13 changes: 13 additions & 0 deletions mifos-passcode/src/androidMain/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2024 Mifos Initiative

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
If a copy of the MPL was not distributed with this file,
You can obtain one at https://mozilla.org/MPL/2.0/.

See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.VIBRATE" />
</manifest>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file not shown.
34 changes: 34 additions & 0 deletions mifos-passcode/src/commonMain/composeResources/values/strings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2024 Mifos Initiative

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
If a copy of the MPL was not distributed with this file,
You can obtain one at https://mozilla.org/MPL/2.0/.

See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md
-->
<resources>
<string name="lib_mifos_passcode_title">Passcode will be reset, are you sure?</string>
<string name="lib_mifos_passcode_cancel">Cancel</string>
<string name="lib_mifos_passcode_yes">Yes</string>
<string name="lib_mifos_passcode_pref_name">Passcode</string>
<string name="lib_mifos_passcode_has_passcode">hasPasscode</string>
<string name="lib_mifos_passcode_has_drag_passcode">hasDragPasscode</string>
<string name="lib_mifos_passcode">passcode</string>
<string name="lib_mifos_passcode_drag_passcode">drag_passcode</string>

<string name="library_mifos_passcode_create_passcode">Create Passcode</string>
<string name="library_mifos_passcode_confirm_passcode">Confirm Passcode</string>
<string name="library_mifos_passcode_enter_your_passcode">Enter your Passcode</string>
<string name="library_mifos_passcode_forgot_passcode">Forgot Passcode</string>
<string name="library_mifos_passcode_delete_passcode">Delete Passcode Key Button</string>
<string name="library_mifos_passcode_drag_guide">Drag your finger here only in one direction.</string>
<string name="library_mifos_passcode_drag_your_pattern">Drag your Pattern</string>
<string name="library_mifos_passcode_exit">Exit</string>
<string name="library_mifos_passcode_skip">Skip</string>
<string name="library_mifos_passcode_login_manually">Forgot Passcode, Login Manually</string>
<string name="library_mifos_passcode_try_again">Try again</string>
<string name="library_mifos_passcode_do_not_match">Passcode do not match!</string>
<string name="library_mifos_passcode_exit_message">Are you sure you want to exit?</string>
</resources>
Loading
Loading