mirror of
				https://github.com/KokaKiwi/BarInsta
				synced 2025-10-31 03:25:34 +00:00 
			
		
		
		
	Handle all possible version names in update checker
This commit is contained in:
		
							parent
							
								
									86b04e69ee
								
							
						
					
					
						commit
						39b89423d9
					
				| @ -1,12 +1,16 @@ | ||||
| package awais.instagrabber.utils; | ||||
| 
 | ||||
| import android.content.Context; | ||||
| import android.util.Log; | ||||
| import android.widget.Toast; | ||||
| 
 | ||||
| import androidx.annotation.NonNull; | ||||
| import androidx.appcompat.app.AppCompatActivity; | ||||
| 
 | ||||
| import java.util.Objects; | ||||
| import java.util.concurrent.ThreadLocalRandom; | ||||
| import java.util.regex.Matcher; | ||||
| import java.util.regex.Pattern; | ||||
| 
 | ||||
| import awais.instagrabber.BuildConfig; | ||||
| import awais.instagrabber.R; | ||||
| @ -16,6 +20,7 @@ import static awais.instagrabber.utils.Utils.settingsHelper; | ||||
| public final class FlavorTown { | ||||
|     private static final String TAG = "FlavorTown"; | ||||
|     private static final UpdateChecker UPDATE_CHECKER = UpdateChecker.getInstance(); | ||||
|     private static final Pattern VERSION_NAME_PATTERN = Pattern.compile("v?(\\d+\\.\\d+\\.\\d+)(?:_?)(\\w*)(?:-?)(\\w*)"); | ||||
| 
 | ||||
|     private static boolean checking = false; | ||||
| 
 | ||||
| @ -28,21 +33,42 @@ public final class FlavorTown { | ||||
|         if (checking) return; | ||||
|         checking = true; | ||||
|         AppExecutors.getInstance().networkIO().execute(() -> { | ||||
|             final String version = UPDATE_CHECKER.getLatestVersion(); | ||||
|             if (version == null) return; | ||||
|             if (force && version.equals(BuildConfig.VERSION_NAME)) { | ||||
|                 Toast.makeText(context, "You're already on the latest version", Toast.LENGTH_SHORT).show(); | ||||
|             final String onlineVersionName = UPDATE_CHECKER.getLatestVersion(); | ||||
|             if (onlineVersionName == null) return; | ||||
|             final String onlineVersion = getVersion(onlineVersionName); | ||||
|             final String localVersion = getVersion(BuildConfig.VERSION_NAME); | ||||
|             if (Objects.equals(onlineVersion, localVersion)) { | ||||
|                 if (force) { | ||||
|                     AppExecutors.getInstance().mainThread().execute(() -> { | ||||
|                         final Context applicationContext = context.getApplicationContext(); | ||||
|                         // Check if app was closed or crashed before reaching here | ||||
|                         if (applicationContext == null) return; | ||||
|                         // Show toast if version number preference was tapped | ||||
|                         Toast.makeText(applicationContext, R.string.on_latest_version, Toast.LENGTH_SHORT).show(); | ||||
|                     }); | ||||
|                 } | ||||
|                 return; | ||||
|             } | ||||
|             final boolean shouldShowDialog = UpdateCheckCommon.shouldShowUpdateDialog(force, version); | ||||
|             final boolean shouldShowDialog = UpdateCheckCommon.shouldShowUpdateDialog(force, onlineVersionName); | ||||
|             if (!shouldShowDialog) return; | ||||
|             UpdateCheckCommon.showUpdateDialog(context, version, (dialog, which) -> { | ||||
|             UpdateCheckCommon.showUpdateDialog(context, onlineVersionName, (dialog, which) -> { | ||||
|                 UPDATE_CHECKER.onDownload(context); | ||||
|                 dialog.dismiss(); | ||||
|             }); | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     private static String getVersion(@NonNull final String versionName) { | ||||
|         final Matcher matcher = VERSION_NAME_PATTERN.matcher(versionName); | ||||
|         if (!matcher.matches()) return versionName; | ||||
|         try { | ||||
|             return matcher.group(1); | ||||
|         } catch (Exception e) { | ||||
|             Log.e(TAG, "getVersion: ", e); | ||||
|         } | ||||
|         return versionName; | ||||
|     } | ||||
| 
 | ||||
|     public static void changelogCheck(@NonNull final Context context) { | ||||
|         if (settingsHelper.getInteger(Constants.PREV_INSTALL_VERSION) < BuildConfig.VERSION_CODE) { | ||||
|             int appUaCode = settingsHelper.getInteger(Constants.APP_UA_CODE); | ||||
|  | ||||
| @ -17,8 +17,7 @@ public final class UpdateCheckCommon { | ||||
|     public static boolean shouldShowUpdateDialog(final boolean force, | ||||
|                                                  @NonNull final String version) { | ||||
|         final String skippedVersion = settingsHelper.getString(Constants.SKIPPED_VERSION); | ||||
|         return force || (!version.equals(BuildConfig.VERSION_NAME) && !BuildConfig.DEBUG && !skippedVersion | ||||
|                 .equals(version)); | ||||
|         return force || (!BuildConfig.DEBUG && !skippedVersion.equals(version)); | ||||
|     } | ||||
| 
 | ||||
|     public static void showUpdateDialog(@NonNull final Context context, | ||||
|  | ||||
| @ -476,4 +476,5 @@ | ||||
|     <string name="crash_report_subject">Barinsta Crash Report</string> | ||||
|     <string name="crash_report_title">Select an email app to send crash logs</string> | ||||
|     <string name="skip_update">Skip this update</string> | ||||
|     <string name="on_latest_version">You\'re already on the latest version</string> | ||||
| </resources> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user