Skip to content

Commit 892f01c

Browse files
committed
add update process
1 parent ae662b4 commit 892f01c

7 files changed

Lines changed: 187 additions & 9 deletions

File tree

claimManagement/build.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ android {
2424

2525
defaultConfig {
2626
applicationId "org.openimis.imisclaims"
27-
minSdkVersion 23
27+
minSdkVersion 26
2828
targetSdkVersion 32
2929
versionCode 4
30-
versionName "2.3.1"
30+
versionName "2.3.2"
3131
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
3232
}
3333
buildTypes {
@@ -107,6 +107,7 @@ android {
107107
csuDev {
108108
applicationIdSuffix ".csuDev"
109109
resValue "string", "app_name_claims", "Claims CSU"
110+
resValue "string", "release_tag", "csu"
110111
buildConfigField "String", "API_BASE_URL", '"https://csuapps.minsante.cm/"'
111112
buildConfigField "String", "RAR_PASSWORD", '"xc3-ed@/dfr;nJ3R"'
112113
dimension 'std'

claimManagement/src/csu/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,4 +210,5 @@
210210
<string name="NonUsedChequeNumber">This cheque number was not attribute to beneficiary</string>
211211
<string name="ConnectionFailed">Connection failed</string>
212212
<string name="FailedToCreateClaim">Failed to create claim</string>
213+
<string name="Error">Error occured</string>
213214
</resources>

claimManagement/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
android:name="android.permission.READ_CALL_LOG"/>
2020
<uses-permission
2121
android:name="android.permission.READ_CONTACTS"/>
22+
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
2223

2324
<application
2425
android:name=".Global"

claimManagement/src/main/java/org/openimis/imisclaims/SynchronizeActivity.java

Lines changed: 119 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package org.openimis.imisclaims;
22

33
import android.app.Activity;
4+
import android.app.AlertDialog;
5+
import android.app.DownloadManager;
46
import android.app.ProgressDialog;
57
import android.content.Context;
68
import android.content.Intent;
79
import android.net.Uri;
810
import android.os.Bundle;
911
import androidx.annotation.Nullable;
12+
import androidx.core.util.TimeUtils;
1013

1114
import android.os.Environment;
1215
import android.view.MenuItem;
@@ -34,6 +37,7 @@
3437
import org.openimis.imisclaims.domain.entity.Program;
3538
import org.openimis.imisclaims.domain.entity.Service;
3639
import org.openimis.imisclaims.domain.entity.SubServiceItem;
40+
import org.openimis.imisclaims.network.exception.HttpException;
3741
import org.openimis.imisclaims.tools.Log;
3842
import org.openimis.imisclaims.tools.StorageManager;
3943
import org.openimis.imisclaims.usecase.FetchClaimAdmins;
@@ -49,12 +53,23 @@
4953
import org.openimis.imisclaims.util.StreamUtils;
5054
import org.openimis.imisclaims.util.UriUtils;
5155

56+
import java.io.BufferedReader;
5257
import java.io.IOException;
5358
import java.io.InputStream;
59+
import java.io.InputStreamReader;
5460
import java.io.OutputStream;
61+
import java.net.HttpURLConnection;
62+
import java.net.URL;
63+
import java.text.DateFormat;
64+
import java.text.SimpleDateFormat;
65+
import java.time.Instant;
66+
import java.time.LocalDateTime;
67+
import java.time.format.DateTimeFormatter;
5568
import java.util.ArrayList;
5669
import java.util.Date;
5770
import java.util.List;
71+
import java.util.Locale;
72+
import java.util.Objects;
5873

5974
public class SynchronizeActivity extends ImisActivity {
6075
private static final String LOG_TAG = "SYNCACTIVITY";
@@ -64,7 +79,7 @@ public class SynchronizeActivity extends ImisActivity {
6479
ToRestApi toRestApi;
6580

6681
TextView tvUploadClaims, tvZipClaims;
67-
RelativeLayout uploadClaims, zipClaims, importMasterData, downloadMasterData;
82+
RelativeLayout uploadClaims, zipClaims, importMasterData, downloadMasterData, checkUpdate;
6883

6984
ProgressDialog pd;
7085
Uri exportUri;
@@ -97,13 +112,15 @@ protected void onCreate(Bundle savedInstanceState) {
97112
zipClaims = findViewById(R.id.zip_claims);
98113
importMasterData = findViewById(R.id.importMasterData);
99114
downloadMasterData = findViewById(R.id.downloadMasterData);
115+
checkUpdate = findViewById(R.id.checkUpdate);
100116

101117
uploadClaims.setOnClickListener(view -> doLoggedIn(this::confirmUploadClaims));
102118
zipClaims.setOnClickListener(view -> confirmXMLCreation());
103119

104120
importMasterData.setOnClickListener(view -> requestPickDatabase());
105121
downloadMasterData.setOnClickListener(view -> DownloadMasterData()); //TODO Not yet implemented
106122
downloadMasterData.setVisibility(View.GONE);
123+
checkUpdate.setOnClickListener(view -> CheckUpdate());
107124

108125
}
109126

@@ -583,5 +600,106 @@ public void saveLastUpdateDate(String lastUpdateDate) {
583600
}
584601
}
585602

603+
public void CheckUpdate(){
604+
if (global.isNetworkAvailable()) {
605+
String progress_message = getResources().getString(R.string.Checking_For_Updates);
606+
pd = ProgressDialog.show(this, getResources().getString(R.string.initializing), progress_message);
607+
608+
Thread thread = new Thread(() -> {
609+
try {
610+
//get current version
611+
String currentVersion = BuildConfig.VERSION_NAME; //
612+
boolean updateAvailable = false;
613+
614+
//get all github releases
615+
URL url = new URL("https://api.github.com/repos/mngoe/claims_android_app_java/releases");
616+
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
617+
connection.setRequestProperty("Accept", "application/vnd.github.v3+json");
618+
connection.setReadTimeout(60_000);
619+
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
620+
StringBuilder response = new StringBuilder();
621+
String line;
622+
while ((line = reader.readLine()) != null) {
623+
response.append(line);
624+
}
625+
reader.close();
626+
connection.disconnect();
627+
628+
//get lastest version
629+
JSONArray jsonarray = new JSONArray(response.toString());
630+
String lastVersion = "";
631+
String tag_name = "";
632+
for (int i = 0; i < jsonarray.length(); i++){
633+
JSONObject releaseObj = jsonarray.getJSONObject(i);
634+
if(releaseObj.getString("tag_name").equals(getResources().getString(R.string.release_tag))){
635+
tag_name = releaseObj.getString("tag_name");
636+
String releaseName = releaseObj.getString("name");
637+
if(!releaseName.equals(currentVersion)){
638+
lastVersion = releaseName;
639+
updateAvailable = true;
640+
}
641+
}
642+
}
643+
644+
//print result
645+
boolean finalUpdateAvailable = updateAvailable;
646+
String finalLastVersion = lastVersion;
647+
String finalTagName = tag_name;
648+
runOnUiThread(() -> {
649+
pd.dismiss();
650+
if (finalUpdateAvailable) {
651+
new AlertDialog.Builder(this)
652+
.setTitle(getResources().getString(R.string.updateAvailable))
653+
.setMessage(getResources().getString(R.string.newVersion) + " " + finalLastVersion )
654+
.setPositiveButton(getResources().getString(R.string.download), (dialog, which) -> downloadUpdate(finalLastVersion, finalTagName))
655+
.setNegativeButton(getResources().getString(R.string.cancel), null)
656+
.show();
657+
} else {
658+
Toast.makeText(this,
659+
getResources().getString(R.string.haveLastVersion) + " " + currentVersion,
660+
Toast.LENGTH_LONG).show();
661+
}
662+
});
663+
} catch (HttpException e){
664+
runOnUiThread(() -> {
665+
pd.dismiss();
666+
Toast.makeText(this,
667+
getResources().getString(R.string.Error),
668+
Toast.LENGTH_SHORT).show();
669+
});
670+
} catch (Exception e) {
671+
runOnUiThread(() -> {
672+
pd.dismiss();
673+
Toast.makeText(this,
674+
e.getMessage(),
675+
Toast.LENGTH_SHORT).show();
676+
});
677+
}
678+
});
679+
thread.start();
680+
} else {
681+
ErrorDialogBox(getResources().getString(R.string.CheckInternet));
682+
}
683+
}
684+
685+
public void downloadUpdate(String lastVersion, String tagName) {
686+
try {
687+
String apkUrl = "https://github.com/mngoe/claims_android_app_java/releases/download/" + tagName + "/claims-" + lastVersion +".apk";
688+
689+
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(apkUrl))
690+
.setTitle("Mise à jour Claims CSU")
691+
.setDescription("Téléchargement version " + lastVersion)
692+
.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "claims_csu_" + lastVersion + ".apk")
693+
.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
586694

695+
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
696+
manager.enqueue(request);
697+
698+
Toast.makeText(this, getResources().getString(R.string.downloading), Toast.LENGTH_SHORT).show();
699+
700+
} catch (Exception e) {
701+
Toast.makeText(this, getResources().getString(R.string.downloadUpdateFail), Toast.LENGTH_SHORT).show();
702+
Log.e("DownloadUpdate", "Erreur: ", e);
703+
}
704+
}
587705
}

claimManagement/src/main/res/layout/activity_synchronize.xml

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
android:layout_height="wrap_content"
1919
android:typeface="monospace"
2020
android:fontFamily="sans-serif-light"
21-
android:textSize="25dp"
21+
android:textSize="25sp"
2222
android:layout_marginLeft="3dp"
2323
android:layout_marginBottom="30dp"
2424
android:textColor="@color/Black"
@@ -44,7 +44,7 @@
4444
android:text="@string/UploadAllClaims"
4545
android:textAlignment="center"
4646
android:textColor="@color/white"
47-
android:textSize="15dp"
47+
android:textSize="15sp"
4848
android:typeface="monospace" />
4949

5050
<TextView
@@ -82,7 +82,7 @@
8282
android:text="@string/ZipAllClaims"
8383
android:textAlignment="center"
8484
android:textColor="@color/white"
85-
android:textSize="15dp"
85+
android:textSize="15sp"
8686
android:typeface="monospace" />
8787

8888
<TextView
@@ -104,7 +104,7 @@
104104
android:layout_height="wrap_content"
105105
android:typeface="monospace"
106106
android:fontFamily="sans-serif-light"
107-
android:textSize="25dp"
107+
android:textSize="25sp"
108108
android:layout_marginLeft="3dp"
109109
android:layout_marginTop="30dp"
110110
android:textColor="@color/Black"
@@ -130,7 +130,7 @@
130130
android:text="@string/downloadMasterData"
131131
android:textAlignment="center"
132132
android:textColor="@color/white"
133-
android:textSize="15dp"
133+
android:textSize="15sp"
134134
android:typeface="monospace" />
135135

136136
</RelativeLayout>
@@ -155,7 +155,43 @@
155155
android:text="@string/importMasterData"
156156
android:textAlignment="center"
157157
android:textColor="@color/white"
158-
android:textSize="15dp"
158+
android:textSize="15sp"
159+
android:typeface="monospace" />
160+
161+
</RelativeLayout>
162+
163+
<TextView
164+
android:layout_width="match_parent"
165+
android:layout_height="wrap_content"
166+
android:typeface="monospace"
167+
android:fontFamily="sans-serif-light"
168+
android:textSize="25sp"
169+
android:layout_marginLeft="3dp"
170+
android:layout_marginTop="30dp"
171+
android:textColor="@color/Black"
172+
android:text="@string/Update"/>
173+
174+
<RelativeLayout
175+
android:id="@+id/checkUpdate"
176+
android:layout_width="match_parent"
177+
android:layout_height="wrap_content"
178+
android:background="@drawable/orange_corner"
179+
android:orientation="vertical"
180+
android:paddingLeft="6dp"
181+
android:paddingRight="6dp"
182+
android:layout_marginTop="30dp">
183+
184+
<TextView
185+
android:id="@+id/checkUpdateLabel"
186+
android:layout_width="match_parent"
187+
android:layout_height="40dp"
188+
android:background="@drawable/side_nav_bar"
189+
android:fontFamily="sans-serif-light"
190+
android:gravity="center"
191+
android:text="@string/checkUpdate"
192+
android:textAlignment="center"
193+
android:textColor="@color/white"
194+
android:textSize="15sp"
159195
android:typeface="monospace" />
160196

161197
</RelativeLayout>

claimManagement/src/main/res/values-fr/strings.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,4 +555,14 @@
555555
<string name="qtyAlertAsk">La quantité autorisée pour ce produit est</string>
556556
<string name="ConnectionFailed">Échec de connexion</string>
557557
<string name="FailedToCreateClaim">Échec lors de la création de la prestation</string>
558+
<string name="Update">Mise à jour</string>
559+
<string name="checkUpdate">Vérifier la mise à jour</string>
560+
<string name="Error">Une erreur s\'est produite</string>
561+
<string name="downloading">Téléchargement en cours</string>
562+
<string name="downloadUpdateFail">Echec de la mise à jour</string>
563+
<string name="download">Télécharger</string>
564+
<string name="cancel">Annuler</string>
565+
<string name="updateAvailable">Mise à jour disponible</string>
566+
<string name="haveLastVersion">Vous avez la dernière version </string>
567+
<string name="newVersion">Nouvelle version </string>
558568
</resources>

claimManagement/src/main/res/values/strings.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,4 +238,15 @@
238238
<string name="Prefix">Prefix</string>
239239
<string name="ChequeNumber">Cheque Number</string>
240240
<string name="MissingChequeNumber">Please enter the cheque number</string>
241+
<string name="Update">Update</string>
242+
<string name="checkUpdate">Check update</string>
243+
<string name="check">Vérification</string>
244+
<string name="Error">Error occurred</string>
245+
<string name="downloading">Downloading</string>
246+
<string name="downloadUpdateFail">Download update failed</string>
247+
<string name="download">Download</string>
248+
<string name="cancel">Cancel</string>
249+
<string name="updateAvailable">Update available</string>
250+
<string name="haveLastVersion">You have the last version </string>
251+
<string name="newVersion">New version </string>
241252
</resources>

0 commit comments

Comments
 (0)