diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index db3b07b5..b71f3ea2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,6 +4,7 @@
+
{
hideToolbarElevation()
- replaceFragment(DashboardFragment.newInstance(), true, R.id.container)
+ replaceFragment(DashboardFragment.newInstance("customer_identifier"), true, R.id.container)
}
R.id.item_accounts -> {
replaceFragment(CustomerAccountFragment.newInstance(AccountType.DEPOSIT), true,
@@ -170,7 +173,17 @@ class DashboardActivity : MifosBaseActivity(), View.OnClickListener, NavigationV
R.id.item_logout -> {
showLogoutDialog()
}
-
+ R.id.item_passcode ->{
+ if (this != null) {
+ passcodePreferencesHelper = PasscodePreferencesHelper(this)
+ val currentPass: String = passcodePreferencesHelper!!.getPassCode()
+ passcodePreferencesHelper!!.savePassCode("")
+ val intent = Intent(this, PasscodeActivity::class.java)
+ intent.putExtra(ConstantKeys.CURR_PASSWORD, currentPass)
+ intent.putExtra(ConstantKeys.UPDATE_PASSWORD_KEY, true)
+ startActivity(intent)
+ }
+ }
R.id.item_product -> {
replaceFragment(ProductFragment.Companion.newInstance(), true,
R.id.container)
diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerDetails/CustomerDetailsFragment.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerDetails/CustomerDetailsFragment.kt
index 507d1ac1..d8cf978c 100644
--- a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerDetails/CustomerDetailsFragment.kt
+++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerDetails/CustomerDetailsFragment.kt
@@ -28,44 +28,43 @@ import org.mifos.mobile.cn.ui.views.HeaderView
import javax.inject.Inject
-class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChangedListener,CustomerDetailsContract.View, View.OnClickListener{
-
+class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChangedListener, CustomerDetailsContract.View, View.OnClickListener {
@Inject
lateinit var customerDetailsPresenter: CustomerDetailsPresenter
- private lateinit var rootView : View
- private lateinit var customerIdentification : String
- private var isHideToolbarView: Boolean = false
- private lateinit var collapsingToolbarLayout : CollapsingToolbarLayout
- private lateinit var customer : Customer
- private lateinit var toolbarHeaderView : HeaderView
- private lateinit var floatHeaderView : HeaderView
-
- companion object {
- fun newInstance(identifier: String): CustomerDetailsFragment {
- val fragment = CustomerDetailsFragment()
- val args = Bundle()
- args.putString(ConstantKeys.CUSTOMER_IDENTIFIER,identifier)
- fragment.arguments = args
- return fragment
-
- }
- }
+ private lateinit var rootView: View
+ private lateinit var customerIdentification: String
+ private var isHideToolbarView: Boolean = false
+ private lateinit var collapsingToolbarLayout: CollapsingToolbarLayout
+ private lateinit var customer: Customer
+ private lateinit var toolbarHeaderView: HeaderView
+ private lateinit var floatHeaderView: HeaderView
+
+ companion object {
+ fun newInstance(identifier: String): CustomerDetailsFragment {
+ val fragment = CustomerDetailsFragment()
+ val args = Bundle()
+ args.putString(ConstantKeys.CUSTOMER_IDENTIFIER, identifier)
+ fragment.arguments = args
+ return fragment
+ }
+ }
- override fun onCreate(savedInstanceState: Bundle?){
+ override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setToolbarTitle(getString(R.string.account_overview))
- if(arguments != null){1
+ if (arguments != null) {
+ 1
customerIdentification = arguments!!.getString(ConstantKeys.CUSTOMER_IDENTIFIER)
}
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
- rootView = inflater.inflate(R.layout.fragment_customer_details,container,false)
+ rootView = inflater.inflate(R.layout.fragment_customer_details, container, false)
(activity as MifosBaseActivity).activityComponent.inject(this)
customerDetailsPresenter.attachView(this)
@@ -88,12 +87,13 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange
}
+
override fun onClick(view: View) {
- when(view.id){
+ when (view.id) {
R.id.ll_deposit_accounts -> {
openDepositAccount()
}
- R.id.ll_loan_accounts-> {
+ R.id.ll_loan_accounts -> {
openLoanAccount()
}
R.id.ll_activities -> {
@@ -117,13 +117,12 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange
override fun onResume() {
super.onResume()
- cl_customer_details.visibility = View.GONE
- collapsingToolbarLayout.title= " "
+ cl_customer_details.visibility = View.GONE
+ collapsingToolbarLayout.title = " "
customerDetailsPresenter.loadCustomerDetails(customerIdentification)
}
-
override fun showCustomerDetails(customer: Customer) {
this.customer = customer
cl_customer_details.visibility = View.VISIBLE
@@ -132,10 +131,10 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange
loadCustomerPortrait()
tv_current_status.text = customer.currentState!!.name
- StatusUtils.setCustomerStatusIcon(customer.currentState!!,iv_current_status,context)
+ StatusUtils.setCustomerStatusIcon(customer.currentState!!, iv_current_status, context)
- val address : Address = customer.address!!
+ val address: Address = customer.address!!
val addressBuilder = StringBuilder()
addressBuilder
.append(address.street).append(", ")
@@ -171,6 +170,7 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange
}
showToolbarTitleSubtitle(title, subtitle)
}
+
override fun showUserInterface() {
if (toolbar_customer != null) {
(activity as AppCompatActivity).setSupportActionBar(toolbar_customer)
@@ -178,12 +178,13 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange
.setDisplayHomeAsUpEnabled(true)
}
- collapsingToolbarLayout.title= " "
+ collapsingToolbarLayout.title = " "
app_bar_layout.addOnOffsetChangedListener(this)
}
+
override fun showToolbarTitleSubtitle(title: String, subtitle: String) {
- toolbarHeaderView.bindTo(title,subtitle)
- floatHeaderView.bindTo(title,subtitle)
+ toolbarHeaderView.bindTo(title, subtitle)
+ floatHeaderView.bindTo(title, subtitle)
}
@@ -206,25 +207,22 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange
}
-
override fun loadCustomerPortrait() {
val imageLoaderUtils = ImageLoaderUtils(this.context!!)
- imageLoaderUtils.loadImage(imageLoaderUtils.buildCustomerPortraitImageUrl(customer.identifier),iv_customer_profile,R.drawable.mifos_logo_new)
+ imageLoaderUtils.loadImage(imageLoaderUtils.buildCustomerPortraitImageUrl(customer.identifier), iv_customer_profile, R.drawable.mifos_logo_new)
}
override fun showProgressbar() {
- showProgressBar()
+ showProgressBar()
}
override fun hideProgressbar() {
- hideProgressBar()
+ hideProgressBar()
}
-
-
override fun getCustomerStatus(): Customer.State {
return customer.currentState!!
}
@@ -241,6 +239,7 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange
hideProgressDialog()
customerDetailsPresenter.detachView()
}
+
override fun onOffsetChanged(appBarLayout: AppBarLayout?, verticalOffset: Int) {
val maxScroll = appBarLayout!!.totalScrollRange
val percentage = Math.abs(verticalOffset).toFloat() / maxScroll.toFloat()
@@ -254,28 +253,30 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange
}
}
+
private fun openDepositAccount() {
(activity as MifosBaseActivity)
.replaceFragment(CustomerAccountFragment.newInstance(AccountType.DEPOSIT),
true, R.id.container)
}
+
private fun openLoanAccount() {
(activity as MifosBaseActivity)
.replaceFragment(CustomerAccountFragment.newInstance(AccountType.LOAN),
true, R.id.container)
}
+
private fun openCustomerActivities() {
- val intent = Intent(activity,CustomerActivitiesActivity::class.java)
- intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER,"customer_identifier")
+ val intent = Intent(activity, CustomerActivitiesActivity::class.java)
+ intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER, "customer_identifier")
startActivity(intent)
}
+
private fun openIdentificationCards() {
- val intent = Intent(activity,IdentificationsActivity::class.java)
- intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER,"customer_identifier")
+ val intent = Intent(activity, IdentificationsActivity::class.java)
+ intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER, "customer_identifier")
startActivity(intent)
}
-
-
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerProfile/CustomerProfileActivity.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerProfile/CustomerProfileActivity.kt
index 27cf1165..8370228f 100644
--- a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerProfile/CustomerProfileActivity.kt
+++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerProfile/CustomerProfileActivity.kt
@@ -12,13 +12,11 @@ import android.provider.MediaStore
import android.view.Menu
import android.view.MenuItem
import android.widget.ImageView
-import com.github.therajanmaurya.sweeterror.SweetUIErrorHandler
import kotlinx.android.synthetic.main.activity_customer_profile.*
import org.mifos.mobile.cn.R
import org.mifos.mobile.cn.ui.base.MifosBaseActivity
import org.mifos.mobile.cn.ui.utils.*
import java.io.ByteArrayOutputStream
-import java.util.jar.Manifest
class CustomerProfileActivity: MifosBaseActivity(),CustomerProfileContract.View {
@@ -98,6 +96,10 @@ class CustomerProfileActivity: MifosBaseActivity(),CustomerProfileContract.View
resources.getString(
R.string.dialog_message_write_permission_for_share_never_ask_again),
ConstantKeys.PERMISSIONS_WRITE_EXTERNAL_STORAGE_STATUS)
+ if (CheckSelfPermissionAndRequest.checkSelfPermission(this,
+ android.Manifest.permission.WRITE_EXTERNAL_STORAGE)){
+ shareImage()
+ }
}
override fun loadCustomerPortrait() {
diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/dashboard/DashboardFragment.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/dashboard/DashboardFragment.kt
index 977343ff..0c3d1554 100644
--- a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/dashboard/DashboardFragment.kt
+++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/dashboard/DashboardFragment.kt
@@ -13,20 +13,22 @@ import org.mifos.mobile.cn.ui.base.MifosBaseActivity
import org.mifos.mobile.cn.ui.base.MifosBaseFragment
import org.mifos.mobile.cn.ui.mifos.customerAccounts.CustomerAccountFragment
import org.mifos.mobile.cn.ui.mifos.customerDetails.CustomerDetailsActivity
+import org.mifos.mobile.cn.ui.mifos.customerProfile.CustomerProfileActivity
import org.mifos.mobile.cn.ui.mifos.loanApplication.loanActivity.LoanApplicationActivity
import org.mifos.mobile.cn.ui.mifos.recentTransactions.RecentTransactionsFragment
import org.mifos.mobile.cn.ui.utils.ConstantKeys
class DashboardFragment : MifosBaseFragment(), View.OnClickListener {
-
+ private lateinit var customerIdentification: String
private lateinit var rootView: View
private lateinit var customer: Customer
companion object {
- fun newInstance(): DashboardFragment {
+ fun newInstance(identifier: String): DashboardFragment {
val fragment = DashboardFragment()
val args = Bundle()
+ args.putString(ConstantKeys.CUSTOMER_IDENTIFIER, identifier)
fragment.arguments = args
return fragment
}
@@ -38,12 +40,17 @@ class DashboardFragment : MifosBaseFragment(), View.OnClickListener {
rootView = inflater.inflate(R.layout.fragment_dashboard, container, false)
setHasOptionsMenu(true)
setToolbarTitle(getString(R.string.home))
+ if (arguments != null) {
+ 1
+ customerIdentification = arguments!!.getString(ConstantKeys.CUSTOMER_IDENTIFIER)
+ }
return rootView
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
ll_apply_for_loan.setOnClickListener(this)
+ iv_user_image.setOnClickListener(this)
ll_accounts.setOnClickListener(this)
ll_account_overview.setOnClickListener(this)
ll_recent_transactions.setOnClickListener(this)
@@ -69,6 +76,9 @@ class DashboardFragment : MifosBaseFragment(), View.OnClickListener {
R.id.ll_recent_transactions -> {
showRecentTransactions()
}
+ R.id.iv_user_image -> {
+ openCustomerProfile()
+ }
}
}
@@ -77,7 +87,11 @@ class DashboardFragment : MifosBaseFragment(), View.OnClickListener {
intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER, "customer_identifier")
startActivity(intent)
}
-
+ private fun openCustomerProfile() {
+ val intent = Intent(activity, CustomerProfileActivity::class.java)
+ intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER, customerIdentification)
+ startActivity(intent)
+ }
private fun openAccount() {
(activity as MifosBaseActivity)
.replaceFragment(CustomerAccountFragment.newInstance(AccountType.DEPOSIT),
diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/passcode/PasscodeActivity.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/passcode/PasscodeActivity.kt
index f04d00e1..023b1318 100644
--- a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/passcode/PasscodeActivity.kt
+++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/passcode/PasscodeActivity.kt
@@ -1,19 +1,47 @@
package org.mifos.mobile.cn.ui.mifos.passcode
+import android.Manifest
import android.content.DialogInterface
import android.content.Intent
+import android.os.Bundle
import android.view.View
import android.widget.Toast
import com.mifos.mobile.passcode.MifosPassCodeActivity
import com.mifos.mobile.passcode.utils.EncryptionUtil
+import com.mifos.mobile.passcode.utils.PasscodePreferencesHelper
import org.mifos.mobile.cn.R
import org.mifos.mobile.cn.ui.mifos.DashboardActivity
import org.mifos.mobile.cn.ui.mifos.login.LoginActivity
+import org.mifos.mobile.cn.ui.utils.CheckSelfPermissionAndRequest.checkSelfPermission
+import org.mifos.mobile.cn.ui.utils.CheckSelfPermissionAndRequest.requestPermission
+import org.mifos.mobile.cn.ui.utils.ConstantKeys
import org.mifos.mobile.cn.ui.utils.MaterialDialog
import org.mifos.mobile.cn.ui.utils.Toaster
class PasscodeActivity : MifosPassCodeActivity(){
+ private var currPass = ""
+ private var updatePassword = false
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ if (!checkSelfPermission(this,
+ Manifest.permission.READ_PHONE_STATE)) {
+ requestPermission()
+ }
+
+ }
+
+ private fun requestPermission() {
+ requestPermission(
+ this,
+ Manifest.permission.READ_PHONE_STATE,
+ ConstantKeys.PERMISSIONS_REQUEST_READ_PHONE_STATE,
+ resources.getString(
+ R.string.dialog_message_phone_state_permission_denied_prompt),
+ resources.getString(R.string.dialog_message_phone_state_permission_never_ask_again),
+ ConstantKeys.PERMISSIONS_READ_PHONE_STATE_STATUS)
+ }
override fun getLogo(): Int {
return R.drawable.mifos_logo_new
@@ -49,5 +77,12 @@ class PasscodeActivity : MifosPassCodeActivity(){
override fun getEncryptionType(): Int {
return EncryptionUtil.FINERACT_CN
}
-
+ override fun onBackPressed() {
+ super.onBackPressed()
+ if (updatePassword && !currPass.isEmpty()) {
+ val helper = PasscodePreferencesHelper(this)
+ helper.savePassCode(currPass)
+ }
+ finish()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/settings/SettingsFragment.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/settings/SettingsFragment.kt
index 21f01cec..7e6913b1 100644
--- a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/settings/SettingsFragment.kt
+++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/settings/SettingsFragment.kt
@@ -1,13 +1,16 @@
package org.mifos.mobile.cn.ui.mifos.settings
-import android.content.Context
-import android.net.Uri
+import android.content.Intent
import android.os.Bundle
-import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import com.mifos.mobile.passcode.utils.PasscodePreferencesHelper
import org.mifos.mobile.cn.R
+import org.mifos.mobile.cn.ui.mifos.passcode.PasscodeActivity
+import org.mifos.mobile.cn.ui.utils.ConstantKeys
+
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
@@ -27,6 +30,7 @@ class SettingsFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
// Inflate the layout for this fragment
+
return inflater.inflate(R.layout.fragment_settings, container, false)
}
diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/utils/ConstantKeys.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/utils/ConstantKeys.kt
index 64fabae7..348066d7 100644
--- a/app/src/main/kotlin/org/mifos/mobile/cn/ui/utils/ConstantKeys.kt
+++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/utils/ConstantKeys.kt
@@ -10,7 +10,11 @@ object ConstantKeys {
const val REQUEST_PERMISSION_SETTING = 254
const val PERMISSION_REQUEST_ALL = 4
const val PERMISSION_REQUEST_CAMERA = 5
-
+ const val PASSCODE = "Passcode"
+ const val CURR_PASSWORD = "currentPassword"
+ const val PERMISSIONS_READ_PHONE_STATE_STATUS = "read_phone_status"
+ const val PERMISSIONS_REQUEST_READ_PHONE_STATE = 2
+ const val UPDATE_PASSWORD_KEY = "updatePassword"
const val PERMISSIONS_WRITE_EXTERNAL_STORAGE_STATUS = "write_status"
const val PERMISSION_READ_EXTERNAL_STORAGE_STATUS = "read_status"
const val PERMISSIONS_CAMERA_STATUS = "camera_status"
diff --git a/app/src/main/res/menu/menu_nav_drawer.xml b/app/src/main/res/menu/menu_nav_drawer.xml
index 62900df9..553c569e 100644
--- a/app/src/main/res/menu/menu_nav_drawer.xml
+++ b/app/src/main/res/menu/menu_nav_drawer.xml
@@ -68,6 +68,11 @@
android:checked="false"
android:icon="@drawable/ic_share_black_24dp"
android:title="@string/share"/>
+
-
Please enter your credentials
+ This permission is required
+ to show currency according to your country.Are you sure you want to deny it?
+ You have denied permission
+ to fetch Phone State, without this permission currency might not be shown in proper format.
+ Please enable it in settings
Username
Password
Login
diff --git a/build.gradle b/build.gradle
index 57bbb6f9..b6641553 100644
--- a/build.gradle
+++ b/build.gradle
@@ -8,7 +8,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.3.2'
+ classpath 'com.android.tools.build:gradle:3.6.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.android.gms:oss-licenses-plugin:0.9.5'
// NOTE: Do not place your application dependencies here; they belong
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 0a8c6ddf..e848cbe6 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Jun 12 21:01:44 IST 2019
+#Tue Mar 17 00:23:48 IST 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip