You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ra...@apache.org on 2019/06/12 09:57:29 UTC

[fineract-cn-mobile] branch development updated (f930faf -> 2af08b0)

This is an automated email from the ASF dual-hosted git repository.

rajanmaurya154 pushed a change to branch development
in repository https://gitbox.apache.org/repos/asf/fineract-cn-mobile.git.


    from f930faf  Merge pull request #66 from miPlodder/migration
     new 7577dfa  Splash Screen Added
     new 18b7659  Mifos Passcode dependancy added and refactor Kotlin code accordingly
     new 2af08b0  Passcode Functionality completed

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 app/build.gradle                                   |  2 +
 app/src/main/AndroidManifest.xml                   | 11 ++++--
 .../org/apache/fineract/FineractApplication.java   |  2 +
 .../fineract/ui/base/FineractBaseActivity.java     | 11 +++++-
 .../apache/fineract/ui/online/PassCodeActivity.kt  | 44 ++++++++++++++++++++++
 .../apache/fineract/ui/online/SplashActivity.kt    | 19 ++++++++++
 .../online/accounting/accounts/AccountsFragment.kt |  4 +-
 .../ui/online/accounting/ledgers/LedgerFragment.kt |  4 +-
 .../EditPayrollAllocationFragment.kt               |  2 +-
 .../editcustomerpayroll/EditPayrollFragment.kt     |  2 +-
 .../ui/online/launcher/LauncherActivity.java       | 25 ++++++++----
 .../ui/online/launcher/LauncherContract.java       |  4 +-
 .../fineract/ui/online/login/LoginActivity.java    |  8 +++-
 .../ui/online/review/AddLoanReviewFragment.kt      |  4 +-
 .../fineract/ui/online/teller/TellerFragment.kt    |  4 +-
 .../apache/fineract/ui/product/ProductFragment.kt  |  4 +-
 app/src/main/res/drawable/splash_background.xml    | 10 +++++
 app/src/main/res/values/styles.xml                 | 10 +++--
 build.gradle                                       |  1 +
 19 files changed, 140 insertions(+), 31 deletions(-)
 create mode 100644 app/src/main/java/org/apache/fineract/ui/online/PassCodeActivity.kt
 create mode 100644 app/src/main/java/org/apache/fineract/ui/online/SplashActivity.kt
 create mode 100644 app/src/main/res/drawable/splash_background.xml


[fineract-cn-mobile] 01/03: Splash Screen Added

Posted by ra...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rajanmaurya154 pushed a commit to branch development
in repository https://gitbox.apache.org/repos/asf/fineract-cn-mobile.git

commit 7577dfa5b16ead63a09aad880ce9f5f109f59ef8
Author: miPlodder <ac...@gmail.com>
AuthorDate: Mon Jun 10 00:32:32 2019 +0530

    Splash Screen Added
---
 app/src/main/AndroidManifest.xml                       |  5 +++--
 .../org/apache/fineract/ui/online/SplashActivity.kt    | 18 ++++++++++++++++++
 app/src/main/res/drawable/splash_background.xml        | 10 ++++++++++
 app/src/main/res/values/styles.xml                     | 10 +++++++---
 4 files changed, 38 insertions(+), 5 deletions(-)

diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7bc67e3..dfb8082 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -31,14 +31,15 @@
                 android:resource="@xml/filepaths" />
         </provider>
 
-        <activity android:name=".ui.online.launcher.LauncherActivity">
+        <activity android:name=".ui.online.SplashActivity" android:theme="@style/SplashTheme">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
-
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
 
+        <activity android:name=".ui.online.launcher.LauncherActivity"/>
+
         <activity
             android:name=".ui.online.login.LoginActivity"
             android:windowSoftInputMode="adjustResize" />
diff --git a/app/src/main/java/org/apache/fineract/ui/online/SplashActivity.kt b/app/src/main/java/org/apache/fineract/ui/online/SplashActivity.kt
new file mode 100644
index 0000000..a336dc0
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/online/SplashActivity.kt
@@ -0,0 +1,18 @@
+package org.apache.fineract.ui.online
+
+import android.content.Intent
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import org.apache.fineract.ui.online.launcher.LauncherActivity
+
+/*
+ * Created by saksham on 09/June/2019
+*/
+
+class SplashActivity : AppCompatActivity() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        startActivity(Intent(this, LauncherActivity::class.java))
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/splash_background.xml b/app/src/main/res/drawable/splash_background.xml
new file mode 100644
index 0000000..0a9b68a
--- /dev/null
+++ b/app/src/main/res/drawable/splash_background.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@color/colorPrimary" />
+
+    <item
+        android:width="150dp"
+        android:height="150dp"
+        android:drawable="@drawable/launcher_image"
+        android:gravity="center"/>
+</layer-list>
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index a467772..9f078be 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -36,14 +36,14 @@
     </style>
 
 
-
     <style name="AppTheme.Text" parent="android:Widget.TextView">
         <item name="android:textSize">17sp</item>
         <item name="android:textColor">@color/colorPrimaryText</item>
     </style>
 
-    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/>
-    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>
+    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
+
+    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
 
     <style name="circleLayout">
         <item name="android:layout_height">wrap_content</item>
@@ -64,4 +64,8 @@
         <item name="colorAccent">@color/colorAccent</item>
     </style>
 
+    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
+        <item name="android:windowBackground">@drawable/splash_background</item>
+    </style>
+
 </resources>


[fineract-cn-mobile] 03/03: Passcode Functionality completed

Posted by ra...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rajanmaurya154 pushed a commit to branch development
in repository https://gitbox.apache.org/repos/asf/fineract-cn-mobile.git

commit 2af08b06f0393d4dc9d9bbf00173acbaaa851d4b
Author: miPlodder <ac...@gmail.com>
AuthorDate: Wed Jun 12 06:53:23 2019 +0530

    Passcode Functionality completed
---
 app/src/main/AndroidManifest.xml                   | 10 +++--
 .../org/apache/fineract/FineractApplication.java   |  2 +
 .../fineract/ui/base/FineractBaseActivity.java     | 11 +++++-
 .../apache/fineract/ui/online/PassCodeActivity.kt  | 44 ++++++++++++++++++++++
 .../apache/fineract/ui/online/SplashActivity.kt    |  1 +
 .../ui/online/launcher/LauncherActivity.java       | 25 ++++++++----
 .../ui/online/launcher/LauncherContract.java       |  4 +-
 .../fineract/ui/online/login/LoginActivity.java    |  8 +++-
 8 files changed, 89 insertions(+), 16 deletions(-)

diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index dfb8082..d28cf45 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -31,14 +31,18 @@
                 android:resource="@xml/filepaths" />
         </provider>
 
-        <activity android:name=".ui.online.SplashActivity" android:theme="@style/SplashTheme">
+        <activity
+            android:name=".ui.online.SplashActivity"
+            android:theme="@style/SplashTheme">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
 
-        <activity android:name=".ui.online.launcher.LauncherActivity"/>
+        <activity android:name=".ui.online.launcher.LauncherActivity" />
+
+        <activity android:name=".ui.online.PassCodeActivity" />
 
         <activity
             android:name=".ui.online.login.LoginActivity"
@@ -50,7 +54,7 @@
 
         <activity android:name=".ui.online.customers.customerpayroll.PayrollActivity" />
 
-        <activity android:name=".ui.online.customers.customerpayroll.editcustomerpayroll.EditPayrollActivity"/>
+        <activity android:name=".ui.online.customers.customerpayroll.editcustomerpayroll.EditPayrollActivity" />
 
         <activity android:name=".ui.online.depositaccounts.depositaccountslist.DepositAccountsActivity" />
 
diff --git a/app/src/main/java/org/apache/fineract/FineractApplication.java b/app/src/main/java/org/apache/fineract/FineractApplication.java
index f9bd6a4..de32205 100644
--- a/app/src/main/java/org/apache/fineract/FineractApplication.java
+++ b/app/src/main/java/org/apache/fineract/FineractApplication.java
@@ -5,6 +5,7 @@ import android.content.Context;
 
 import com.crashlytics.android.Crashlytics;
 import com.evernote.android.job.JobManager;
+import com.mifos.mobile.passcode.utils.ForegroundChecker;
 import com.raizlabs.android.dbflow.config.FlowManager;
 
 import org.apache.fineract.injection.component.ApplicationComponent;
@@ -35,6 +36,7 @@ public class FineractApplication extends Application {
         instance = this;
         Fabric.with(this, new Crashlytics());
         FlowManager.init(this);
+        ForegroundChecker.init(this);
     }
 
     public static Context getContext() {
diff --git a/app/src/main/java/org/apache/fineract/ui/base/FineractBaseActivity.java b/app/src/main/java/org/apache/fineract/ui/base/FineractBaseActivity.java
index f40b697..e4d953e 100644
--- a/app/src/main/java/org/apache/fineract/ui/base/FineractBaseActivity.java
+++ b/app/src/main/java/org/apache/fineract/ui/base/FineractBaseActivity.java
@@ -6,18 +6,20 @@ import android.os.Bundle;
 import androidx.fragment.app.Fragment;
 import androidx.fragment.app.FragmentManager;
 import androidx.fragment.app.FragmentTransaction;
-import androidx.appcompat.app.AppCompatActivity;
 import androidx.appcompat.widget.Toolbar;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
 
+import com.mifos.mobile.passcode.BasePassCodeActivity;
+
 import org.apache.fineract.FineractApplication;
 import org.apache.fineract.R;
 import org.apache.fineract.injection.component.ActivityComponent;
 import org.apache.fineract.injection.component.ConfigPersistentComponent;
 import org.apache.fineract.injection.component.DaggerConfigPersistentComponent;
 import org.apache.fineract.injection.module.ActivityModule;
+import org.apache.fineract.ui.online.PassCodeActivity;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -29,7 +31,7 @@ import java.util.concurrent.atomic.AtomicLong;
  * creation of Dagger components and makes sure that instances of ConfigPersistentComponent survive
  * across configuration changes.
  */
-public class FineractBaseActivity extends AppCompatActivity implements BaseActivityCallback {
+public class FineractBaseActivity extends BasePassCodeActivity implements BaseActivityCallback {
 
     private static final String KEY_ACTIVITY_ID = "KEY_ACTIVITY_ID";
     private static final AtomicLong NEXT_ID = new AtomicLong(0);
@@ -187,4 +189,9 @@ public class FineractBaseActivity extends AppCompatActivity implements BaseActiv
     public int stackCount() {
         return getSupportFragmentManager().getBackStackEntryCount();
     }
+
+    @Override
+    public Class getPassCodeClass() {
+        return PassCodeActivity.class;
+    }
 }
diff --git a/app/src/main/java/org/apache/fineract/ui/online/PassCodeActivity.kt b/app/src/main/java/org/apache/fineract/ui/online/PassCodeActivity.kt
new file mode 100644
index 0000000..9cbbf84
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/online/PassCodeActivity.kt
@@ -0,0 +1,44 @@
+package org.apache.fineract.ui.online
+
+import android.content.Intent
+import android.os.Bundle
+import android.os.PersistableBundle
+import android.view.View
+import com.mifos.mobile.passcode.MifosPassCodeActivity
+import com.mifos.mobile.passcode.utils.EncryptionUtil
+import org.apache.fineract.R
+import org.apache.fineract.ui.base.Toaster
+import org.apache.fineract.ui.online.login.LoginActivity
+
+
+/*
+ * Created by saksham on 12/June/2019
+*/
+
+class PassCodeActivity : MifosPassCodeActivity() {
+
+    override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
+        super.onCreate(savedInstanceState, persistentState)
+    }
+
+    override fun showToaster(view: View?, msg: Int) {
+        Toaster.show(view, msg, Toaster.SHORT)
+    }
+
+    override fun startLoginActivity() {
+        startActivity(Intent(this, LoginActivity::class.java))
+        finish()
+    }
+
+    override fun getLogo(): Int {
+        return R.drawable.mifos_logo_new
+    }
+
+    override fun getEncryptionType(): Int {
+        return EncryptionUtil.FINERACT_CN
+    }
+
+    override fun startNextActivity() {
+        startActivity(Intent(this, DashboardActivity::class.java))
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/ui/online/SplashActivity.kt b/app/src/main/java/org/apache/fineract/ui/online/SplashActivity.kt
index a336dc0..b85c9df 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/SplashActivity.kt
+++ b/app/src/main/java/org/apache/fineract/ui/online/SplashActivity.kt
@@ -14,5 +14,6 @@ class SplashActivity : AppCompatActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         startActivity(Intent(this, LauncherActivity::class.java))
+        finish()
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/ui/online/launcher/LauncherActivity.java b/app/src/main/java/org/apache/fineract/ui/online/launcher/LauncherActivity.java
index f36c304..07a4403 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/launcher/LauncherActivity.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/launcher/LauncherActivity.java
@@ -3,12 +3,14 @@ package org.apache.fineract.ui.online.launcher;
 import android.content.Intent;
 import android.os.Bundle;
 
+import com.mifos.mobile.passcode.utils.PassCodeConstants;
+
 import org.apache.fineract.R;
 import org.apache.fineract.data.local.PreferenceKey;
 import org.apache.fineract.data.local.PreferencesHelper;
 import org.apache.fineract.data.models.Authentication;
 import org.apache.fineract.ui.base.FineractBaseActivity;
-import org.apache.fineract.ui.online.DashboardActivity;
+import org.apache.fineract.ui.online.PassCodeActivity;
 import org.apache.fineract.ui.online.login.LoginActivity;
 import org.apache.fineract.utils.DateUtils;
 
@@ -46,18 +48,19 @@ public class LauncherActivity extends FineractBaseActivity implements LauncherCo
             if (DateUtils.isTokenExpired(authentication.getAccessTokenExpiration())) {
                 checkRefreshAccessToken();
             } else {
-                startActivity(DashboardActivity.class);
+                startPasscodeActivity();
             }
         } else {
-            startActivity(LoginActivity.class);
+            startLoginActivity();
         }
+        finish();
     }
 
     @Override
     public void checkRefreshAccessToken() {
         Authentication authentication = preferencesHelper.getSignedInUser();
         if (DateUtils.isTokenExpired(authentication.getRefreshTokenExpiration())) {
-            startActivity(LoginActivity.class);
+            startLoginActivity();
         } else {
             //Refresh access token
             preferencesHelper.putBoolean(PreferenceKey.PREF_KEY_REFRESH_ACCESS_TOKEN, true);
@@ -66,24 +69,30 @@ public class LauncherActivity extends FineractBaseActivity implements LauncherCo
     }
 
     @Override
-    public void startActivity(Class aClass) {
-        Intent intent = new Intent(this, aClass);
+    public void startLoginActivity() {
+        Intent intent = new Intent(this, LoginActivity.class);
         startActivity(intent);
         finish();
     }
 
+    public void startPasscodeActivity() {
+        Intent intent = new Intent(this, PassCodeActivity.class);
+        intent.putExtra(PassCodeConstants.PASSCODE_INITIAL_LOGIN, true);
+        startActivity(intent);
+    }
+
     @Override
     public void refreshAccessTokenSuccessfully(Authentication authentication) {
         preferencesHelper.putBoolean(PreferenceKey.PREF_KEY_REFRESH_ACCESS_TOKEN, false);
         preferencesHelper.putAccessToken(authentication.getAccessToken());
         preferencesHelper.putSignInUser(authentication);
-        startActivity(DashboardActivity.class);
+        startPasscodeActivity();
     }
 
     @Override
     public void refreshAccessTokenFailed() {
         clearCredentials();
-        startActivity(LoginActivity.class);
+        startLoginActivity();
     }
 
     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/online/launcher/LauncherContract.java b/app/src/main/java/org/apache/fineract/ui/online/launcher/LauncherContract.java
index 694f633..97e2bfa 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/launcher/LauncherContract.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/launcher/LauncherContract.java
@@ -15,7 +15,9 @@ public interface LauncherContract {
 
         void checkRefreshAccessToken();
 
-        void startActivity(Class aClass);
+        void startLoginActivity();
+
+        void startPasscodeActivity();
 
         void refreshAccessTokenSuccessfully(Authentication authentication);
 
diff --git a/app/src/main/java/org/apache/fineract/ui/online/login/LoginActivity.java b/app/src/main/java/org/apache/fineract/ui/online/login/LoginActivity.java
index 9956991..cb8683d 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/login/LoginActivity.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/login/LoginActivity.java
@@ -6,12 +6,14 @@ import android.text.TextUtils;
 import android.widget.EditText;
 import android.widget.Toast;
 
+import com.mifos.mobile.passcode.utils.PassCodeConstants;
+
 import org.apache.fineract.R;
 import org.apache.fineract.data.local.PreferencesHelper;
 import org.apache.fineract.data.models.Authentication;
 import org.apache.fineract.ui.base.FineractBaseActivity;
 import org.apache.fineract.ui.base.Toaster;
-import org.apache.fineract.ui.online.DashboardActivity;
+import org.apache.fineract.ui.online.PassCodeActivity;
 
 import javax.inject.Inject;
 
@@ -83,7 +85,9 @@ public class LoginActivity extends FineractBaseActivity implements LoginContract
         preferencesHelper.putAccessToken(user.getAccessToken());
         preferencesHelper.putSignInUser(user);
         preferencesHelper.putUserName(etUsername.getEditableText().toString().trim());
-        startActivity(new Intent(this, DashboardActivity.class));
+        Intent intent = new Intent(this, PassCodeActivity.class);
+        intent.putExtra(PassCodeConstants.PASSCODE_INITIAL_LOGIN, true);
+        startActivity(intent);
         finish();
         Toast.makeText(this, getString(R.string.welcome), Toast.LENGTH_LONG).show();
     }


[fineract-cn-mobile] 02/03: Mifos Passcode dependancy added and refactor Kotlin code accordingly

Posted by ra...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rajanmaurya154 pushed a commit to branch development
in repository https://gitbox.apache.org/repos/asf/fineract-cn-mobile.git

commit 18b7659ab78841f3deb55ccab27945325c0211f2
Author: miPlodder <ac...@gmail.com>
AuthorDate: Wed Jun 12 00:07:24 2019 +0530

    Mifos Passcode dependancy added and refactor Kotlin code accordingly
---
 app/build.gradle                                                      | 2 ++
 .../apache/fineract/ui/online/accounting/accounts/AccountsFragment.kt | 4 ++--
 .../apache/fineract/ui/online/accounting/ledgers/LedgerFragment.kt    | 4 ++--
 .../editcustomerpayroll/EditPayrollAllocationFragment.kt              | 2 +-
 .../customerpayroll/editcustomerpayroll/EditPayrollFragment.kt        | 2 +-
 .../org/apache/fineract/ui/online/review/AddLoanReviewFragment.kt     | 4 ++--
 .../main/java/org/apache/fineract/ui/online/teller/TellerFragment.kt  | 4 ++--
 app/src/main/java/org/apache/fineract/ui/product/ProductFragment.kt   | 4 ++--
 build.gradle                                                          | 1 +
 9 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index 80f820f..71788f4 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -143,6 +143,8 @@ dependencies {
     //Material Stepper UI library
     implementation "com.stepstone.stepper:material-stepper:$materialStepperVersion"
 
+    implementation "com.mifos.mobile:mifos-passcode:$mifosPasscodeVersion"
+
     // Instrumentation test dependencies
     androidTestImplementation jUnit
     androidTestImplementation mockito
diff --git a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsFragment.kt b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsFragment.kt
index b5638c8..67c27d8 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsFragment.kt
+++ b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsFragment.kt
@@ -78,9 +78,9 @@ class AccountsFragment : FineractBaseFragment(), AccountContract.View, SwipeRefr
     }
 
 
-    override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
+    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
         super.onCreateOptionsMenu(menu, inflater)
-        inflater?.inflate(R.menu.menu_account_search, menu)
+        inflater.inflate(R.menu.menu_account_search, menu)
         setUpSearchInterface(menu)
     }
 
diff --git a/app/src/main/java/org/apache/fineract/ui/online/accounting/ledgers/LedgerFragment.kt b/app/src/main/java/org/apache/fineract/ui/online/accounting/ledgers/LedgerFragment.kt
index adf76a8..75c50be 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/accounting/ledgers/LedgerFragment.kt
+++ b/app/src/main/java/org/apache/fineract/ui/online/accounting/ledgers/LedgerFragment.kt
@@ -97,9 +97,9 @@ class LedgerFragment : FineractBaseFragment(), LedgerContract.View,
                 R.drawable.ic_person_outline_black_24dp)
     }
 
-    override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
+    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
         super.onCreateOptionsMenu(menu, inflater)
-        inflater?.inflate(R.menu.menu_ledger_search, menu)
+        inflater.inflate(R.menu.menu_ledger_search, menu)
         setUpSearchInterface(menu)
     }
 
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollAllocationFragment.kt b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollAllocationFragment.kt
index 2da7041..3a03401 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollAllocationFragment.kt
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollAllocationFragment.kt
@@ -45,7 +45,7 @@ class EditPayrollAllocationFragment : FineractBaseFragment(), Step,
                 }
     }
 
-    override fun onAttach(context: Context?) {
+    override fun onAttach(context: Context) {
         super.onAttach(context)
         if (context is OnNavigationBarListener.Payroll) {
             listener = context
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollFragment.kt b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollFragment.kt
index 0decfcf..858291f 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollFragment.kt
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollFragment.kt
@@ -38,7 +38,7 @@ class EditPayrollFragment : FineractBaseFragment(), Step {
         const val DATE_FORMAT = "dd MMM yyyy"
     }
 
-    override fun onAttach(context: Context?) {
+    override fun onAttach(context: Context) {
         super.onAttach(context)
         if (context is OnNavigationBarListener.Payroll) {
             listener = context
diff --git a/app/src/main/java/org/apache/fineract/ui/online/review/AddLoanReviewFragment.kt b/app/src/main/java/org/apache/fineract/ui/online/review/AddLoanReviewFragment.kt
index d06f30a..6115765 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/review/AddLoanReviewFragment.kt
+++ b/app/src/main/java/org/apache/fineract/ui/online/review/AddLoanReviewFragment.kt
@@ -44,12 +44,12 @@ class AddLoanReviewFragment : FineractBaseFragment(), Step {
     @Inject
     lateinit var debtCoSignerAdapter: LoanDebtIncomeAdapter
 
-    override fun onAttach(context: Context?) {
+    override fun onAttach(context: Context) {
         super.onAttach(context)
         if (context is OnNavigationBarListener.ReviewLoan) {
             onNavigationBarListener = context
         } else {
-            throw RuntimeException(context!!.toString() + " must implement OnNavigationBarListener.ReviewLoan")
+            throw RuntimeException("$context must implement OnNavigationBarListener.ReviewLoan")
         }
     }
 
diff --git a/app/src/main/java/org/apache/fineract/ui/online/teller/TellerFragment.kt b/app/src/main/java/org/apache/fineract/ui/online/teller/TellerFragment.kt
index b949b30..9a88929 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/teller/TellerFragment.kt
+++ b/app/src/main/java/org/apache/fineract/ui/online/teller/TellerFragment.kt
@@ -97,9 +97,9 @@ class TellerFragment : FineractBaseFragment(), TellerContract.View, SwipeRefresh
                 R.drawable.ic_person_outline_black_24dp)
     }
 
-    override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
+    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
         super.onCreateOptionsMenu(menu, inflater)
-        inflater?.inflate(R.menu.menu_teller_search, menu)
+        inflater.inflate(R.menu.menu_teller_search, menu)
         setUpSearchInterface(menu)
     }
 
diff --git a/app/src/main/java/org/apache/fineract/ui/product/ProductFragment.kt b/app/src/main/java/org/apache/fineract/ui/product/ProductFragment.kt
index 2c773e4..aa46396 100644
--- a/app/src/main/java/org/apache/fineract/ui/product/ProductFragment.kt
+++ b/app/src/main/java/org/apache/fineract/ui/product/ProductFragment.kt
@@ -93,9 +93,9 @@ class ProductFragment : FineractBaseFragment(), ProductContract.View,
     }
 
 
-    override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
+    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
         super.onCreateOptionsMenu(menu, inflater)
-        inflater?.inflate(R.menu.menu_product_search, menu)
+        inflater.inflate(R.menu.menu_product_search, menu)
         setUpSearchInterface(menu)
     }
 
diff --git a/build.gradle b/build.gradle
index cf2ace9..439d2ac 100644
--- a/build.gradle
+++ b/build.gradle
@@ -68,4 +68,5 @@ ext {
     roboElectricVersion = '3.1'
     circleImageviewVersion = '2.1.0'
     compressorVersion = '2.1.0'
+    mifosPasscodeVersion = '1.0.0'
 }