From de1dae4f30f463f181d6f04109550df7a535c327 Mon Sep 17 00:00:00 2001 From: vaneck237 Date: Thu, 13 Nov 2025 12:11:44 +0100 Subject: [PATCH] migrate login page for javascript to java --- app/build.gradle | 5 +- app/src/localeMv/res/values-fr/strings.xml | 2 + app/src/main/AndroidManifest.xml | 4 + .../openimis/imispolicies/MainActivity.java | 14 +- .../org/openimis/imispolicies/Signing.java | 128 ++++++++++++++++++ .../openimis/imispolicies/usecase/Login.java | 3 + app/src/main/res/drawable/button.xml | 5 + app/src/main/res/drawable/edit_text.xml | 7 + app/src/main/res/drawable/edit_text_error.xml | 7 + app/src/main/res/drawable/ic_eye.xml | 5 + app/src/main/res/layout/activity_signing.xml | 79 +++++++++++ app/src/main/res/values/strings.xml | 2 + app/src/main/res/values/styles.xml | 3 +- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 15 files changed, 261 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/org/openimis/imispolicies/Signing.java create mode 100644 app/src/main/res/drawable/button.xml create mode 100644 app/src/main/res/drawable/edit_text.xml create mode 100644 app/src/main/res/drawable/edit_text_error.xml create mode 100644 app/src/main/res/drawable/ic_eye.xml create mode 100644 app/src/main/res/layout/activity_signing.xml diff --git a/app/build.gradle b/app/build.gradle index 2135c835..edb798e7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,7 +21,7 @@ static def getDate() { } android { - compileSdk 34 + compileSdk = 36 namespace = "org.openimis.imispolicies" if (keystorePropertiesFile.exists()) { signingConfigs { @@ -35,7 +35,7 @@ android { } defaultConfig { applicationId "org.openimis.imispolicies" - minSdkVersion 21 + minSdkVersion 26 targetSdkVersion 33 versionCode gitVersionCode versionName gitVersionName @@ -240,6 +240,7 @@ dependencies { implementation 'androidx.recyclerview:recyclerview:1.3.2' implementation 'org.apache.commons:commons-lang3:3.12.0' implementation 'cz.msebera.android:httpclient:4.5.8' + implementation 'androidx.activity:activity:1.11.0' androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', { exclude group: 'com.android.support', module: 'support-annotations' diff --git a/app/src/localeMv/res/values-fr/strings.xml b/app/src/localeMv/res/values-fr/strings.xml index 11d2d761..54f0e0fe 100644 --- a/app/src/localeMv/res/values-fr/strings.xml +++ b/app/src/localeMv/res/values-fr/strings.xml @@ -482,4 +482,6 @@ Cash Téléphone portable Virement banquaire + Champs requis + Connexion diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5a88ad6d..5d4ea82e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -49,6 +49,10 @@ android:theme="@style/AppTheme" tools:ignore="GoogleAppIndexingWarning" tools:replace="android:icon,android:label"> + + diff --git a/app/src/main/java/org/openimis/imispolicies/MainActivity.java b/app/src/main/java/org/openimis/imispolicies/MainActivity.java index 9298d82a..7dc234cf 100644 --- a/app/src/main/java/org/openimis/imispolicies/MainActivity.java +++ b/app/src/main/java/org/openimis/imispolicies/MainActivity.java @@ -307,7 +307,14 @@ public void onReceivedTitle(WebView view, String title) { OfficerName = headerview.findViewById(R.id.tvOfficerName); Login.setOnClickListener(v -> { - wv.loadUrl("file:///android_asset/pages/Login.html?s=3"); + if(ca.isLoggedIn()) { + global.setOfficerCode(""); + global.setOfficerName(""); + ca.Logout(); + } + Intent intent = new Intent(this, Signing.class); + intent.putExtra("page", 3); + startActivity(intent); drawer.closeDrawer(GravityCompat.START); SetLoggedIn(); }); @@ -742,7 +749,10 @@ public boolean onNavigationItemSelected(MenuItem item) { Intent intent = new Intent(this, Enquire.class); startActivity(intent); } else { - wv.loadUrl("file:///android_asset/pages/Login.html?s=5"); + Intent intent = new Intent(this, Signing.class); + intent.putExtra("page", 5); + startActivity(intent); + //wv.loadUrl("file:///android_asset/pages/Login.html?s=5"); } } else if (id == R.id.nav_payment) { ClientAndroidInterface ca = new ClientAndroidInterface(this); diff --git a/app/src/main/java/org/openimis/imispolicies/Signing.java b/app/src/main/java/org/openimis/imispolicies/Signing.java new file mode 100644 index 00000000..5ecb1795 --- /dev/null +++ b/app/src/main/java/org/openimis/imispolicies/Signing.java @@ -0,0 +1,128 @@ +package org.openimis.imispolicies; + +import android.annotation.SuppressLint; +import android.app.ProgressDialog; +import android.content.Intent; +import android.os.AsyncTask; +import android.os.Bundle; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import androidx.activity.EdgeToEdge; +import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; +import androidx.core.content.ContextCompat; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; + +import com.google.android.material.progressindicator.CircularProgressIndicator; + +import org.openimis.imispolicies.tools.Log; +import org.openimis.imispolicies.usecase.Login; + +public class Signing extends AppCompatActivity { + + private EditText etLogin, etPassword; + private Button btnLogin; + private TextView tvError; + protected ProgressDialog progressDialog; + private CircularProgressIndicator cp; + private int page = 0; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); + setContentView(R.layout.activity_signing); + Window window = getWindow(); + window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + window.setStatusBarColor(ContextCompat.getColor(this, R.color.colorPrimary)); + if (getSupportActionBar() != null) { + getSupportActionBar().setTitle(getResources().getString(R.string.Login)); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + } + Intent intent = getIntent(); + page = intent.getIntExtra("page", 0); + + etLogin = findViewById(R.id.etLogin); + etPassword = findViewById(R.id.etPassword); + btnLogin = findViewById(R.id.btnSignIn); + tvError = findViewById(R.id.tvLoginError); + cp = findViewById(R.id.cp_load_login); + tvError.setEnabled(false); + cp.setIndeterminate(false); + + btnLogin.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if(isFormValid()){ + etLogin.setBackground(getDrawable(R.drawable.edit_text)); + etPassword.setBackground(getDrawable(R.drawable.edit_text)); + tvError.setText(""); + String username = etLogin.getText().toString().trim(); + String password = etPassword.getText().toString().trim(); + cp.setIndeterminate(true); + Thread thread = new Thread(){ + @Override + public void run() { + try{ + new Login().execute(username, password); + runOnUiThread(() -> { + MainActivity.SetLoggedIn(); + if(page == 5){ + Intent intent = new Intent(Signing.this , Enquire.class); + startActivity(intent); + finish(); + } else { + finish(); + } + }); + } catch (Exception e){ + e.printStackTrace(); + runOnUiThread(()->{ + cp.setIndeterminate(false); + tvError.setText(getResources().getString(R.string.LoginFail)); + }); + } + } + }; + thread.start(); + } + } + }); + } + + @Override + public boolean onSupportNavigateUp() { + finish(); + return true; + } + + private boolean isFormValid(){ + if(etLogin.getText().toString().trim().isEmpty() || etPassword.getText().toString().trim().isEmpty()){ + tvError.setText(getResources().getString(R.string.fieldRequired)); + if(etLogin.getText().toString().trim().isEmpty()){ + etLogin.setBackground(getDrawable(R.drawable.edit_text_error)); + }else{ + etLogin.setBackground(getDrawable(R.drawable.edit_text)); + } + if(etPassword.getText().toString().trim().isEmpty()) { + etPassword.setBackground(getDrawable(R.drawable.edit_text_error)); + }else{ + etPassword.setBackground(getDrawable(R.drawable.edit_text)); + } + return false; + } + return true; + } +} \ No newline at end of file diff --git a/app/src/main/java/org/openimis/imispolicies/usecase/Login.java b/app/src/main/java/org/openimis/imispolicies/usecase/Login.java index a142fc34..260901b7 100644 --- a/app/src/main/java/org/openimis/imispolicies/usecase/Login.java +++ b/app/src/main/java/org/openimis/imispolicies/usecase/Login.java @@ -53,6 +53,9 @@ public Login( @WorkerThread public void execute(@NonNull String username, @NonNull String password) throws Exception { + if (Global.getGlobal().getOfficerCode() == null) { + Global.getGlobal().setOfficerCode(username); + } String officerCode = Global.getGlobal().getOfficerCode(); if (officerCode == null) { throw new IllegalStateException("OfficerCode should not be null on login"); diff --git a/app/src/main/res/drawable/button.xml b/app/src/main/res/drawable/button.xml new file mode 100644 index 00000000..d3b12430 --- /dev/null +++ b/app/src/main/res/drawable/button.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/edit_text.xml b/app/src/main/res/drawable/edit_text.xml new file mode 100644 index 00000000..4a60d8d9 --- /dev/null +++ b/app/src/main/res/drawable/edit_text.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/edit_text_error.xml b/app/src/main/res/drawable/edit_text_error.xml new file mode 100644 index 00000000..c8ab795a --- /dev/null +++ b/app/src/main/res/drawable/edit_text_error.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_eye.xml b/app/src/main/res/drawable/ic_eye.xml new file mode 100644 index 00000000..63fc10d1 --- /dev/null +++ b/app/src/main/res/drawable/ic_eye.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/layout/activity_signing.xml b/app/src/main/res/layout/activity_signing.xml new file mode 100644 index 00000000..2af97ebb --- /dev/null +++ b/app/src/main/res/layout/activity_signing.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + +