Fix version number for alpha builds (#2325)

This commit is contained in:
Vivek Maskara 2019-01-24 23:32:16 +05:30 committed by Ashish Kumar
parent ddc83f1f22
commit de9611821b
11 changed files with 51 additions and 16 deletions

View file

@ -141,7 +141,7 @@ android {
testCoverageEnabled true testCoverageEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
testProguardFile 'test-proguard-rules.txt' testProguardFile 'test-proguard-rules.txt'
versionNameSuffix "-debug-" + getBranchName() + "~" + getBuildVersion() versionNameSuffix "-debug-" + getBranchName()
} }
} }
@ -180,6 +180,7 @@ android {
buildConfigField "String", "RECENT_SEARCH_AUTHORITY", "\"fr.free.nrw.commons.explore.recentsearches.contentprovider\"" buildConfigField "String", "RECENT_SEARCH_AUTHORITY", "\"fr.free.nrw.commons.explore.recentsearches.contentprovider\""
buildConfigField "String", "BOOKMARK_AUTHORITY", "\"fr.free.nrw.commons.bookmarks.contentprovider\"" buildConfigField "String", "BOOKMARK_AUTHORITY", "\"fr.free.nrw.commons.bookmarks.contentprovider\""
buildConfigField "String", "BOOKMARK_LOCATIONS_AUTHORITY", "\"fr.free.nrw.commons.bookmarks.locations.contentprovider\"" buildConfigField "String", "BOOKMARK_LOCATIONS_AUTHORITY", "\"fr.free.nrw.commons.bookmarks.locations.contentprovider\""
buildConfigField "String", "COMMIT_SHA", "\"" + getBuildVersion().toString() + "\""
dimension 'tier' dimension 'tier'
} }
@ -209,6 +210,7 @@ android {
buildConfigField "String", "RECENT_SEARCH_AUTHORITY", "\"fr.free.nrw.commons.beta.explore.recentsearches.contentprovider\"" buildConfigField "String", "RECENT_SEARCH_AUTHORITY", "\"fr.free.nrw.commons.beta.explore.recentsearches.contentprovider\""
buildConfigField "String", "BOOKMARK_AUTHORITY", "\"fr.free.nrw.commons.beta.bookmarks.contentprovider\"" buildConfigField "String", "BOOKMARK_AUTHORITY", "\"fr.free.nrw.commons.beta.bookmarks.contentprovider\""
buildConfigField "String", "BOOKMARK_LOCATIONS_AUTHORITY", "\"fr.free.nrw.commons.beta.bookmarks.locations.contentprovider\"" buildConfigField "String", "BOOKMARK_LOCATIONS_AUTHORITY", "\"fr.free.nrw.commons.beta.bookmarks.locations.contentprovider\""
buildConfigField "String", "COMMIT_SHA", "\"" + getBuildVersion().toString() + "\""
dimension 'tier' dimension 'tier'
} }

View file

@ -2,7 +2,6 @@ package fr.free.nrw.commons;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
@ -23,6 +22,7 @@ import butterknife.ButterKnife;
import butterknife.OnClick; import butterknife.OnClick;
import fr.free.nrw.commons.theme.NavigationBaseActivity; import fr.free.nrw.commons.theme.NavigationBaseActivity;
import fr.free.nrw.commons.ui.widget.HtmlTextView; import fr.free.nrw.commons.ui.widget.HtmlTextView;
import fr.free.nrw.commons.utils.ConfigUtils;
/** /**
* Represents about screen of this app * Represents about screen of this app
@ -59,7 +59,7 @@ public class AboutActivity extends NavigationBaseActivity {
SpannableString content = new SpannableString(getString(R.string.about_faq)); SpannableString content = new SpannableString(getString(R.string.about_faq));
content.setSpan(new UnderlineSpan(), 0, content.length(), 0); content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
faqText.setText(content); faqText.setText(content);
versionText.setText(BuildConfig.VERSION_NAME); versionText.setText(ConfigUtils.getVersionNameWithSha(getApplicationContext()));
TextView rate_us = findViewById(R.id.about_rate_us); TextView rate_us = findViewById(R.id.about_rate_us);
TextView privacy_policy = findViewById(R.id.about_privacy_policy); TextView privacy_policy = findViewById(R.id.about_privacy_policy);
TextView translate = findViewById(R.id.about_translate); TextView translate = findViewById(R.id.about_translate);

View file

@ -1,5 +1,6 @@
package fr.free.nrw.commons.contributions; package fr.free.nrw.commons.contributions;
import android.content.Context;
import android.net.Uri; import android.net.Uri;
import android.os.Parcel; import android.os.Parcel;
import android.support.annotation.IntDef; import android.support.annotation.IntDef;
@ -15,6 +16,7 @@ import fr.free.nrw.commons.BuildConfig;
import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.CommonsApplication;
import fr.free.nrw.commons.Media; import fr.free.nrw.commons.Media;
import fr.free.nrw.commons.settings.Prefs; import fr.free.nrw.commons.settings.Prefs;
import fr.free.nrw.commons.utils.ConfigUtils;
import static java.lang.annotation.RetentionPolicy.SOURCE; import static java.lang.annotation.RetentionPolicy.SOURCE;
@ -139,7 +141,7 @@ public class Contribution extends Media {
this.dateUploaded = date; this.dateUploaded = date;
} }
public String getPageContents() { public String getPageContents(Context applicationContext) {
StringBuilder buffer = new StringBuilder(); StringBuilder buffer = new StringBuilder();
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH); SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
@ -163,7 +165,8 @@ public class Contribution extends Media {
buffer.append("== {{int:license-header}} ==\n") buffer.append("== {{int:license-header}} ==\n")
.append(licenseTemplateFor(getLicense())).append("\n\n") .append(licenseTemplateFor(getLicense())).append("\n\n")
.append("{{Uploaded from Mobile|platform=Android|version=").append(BuildConfig.VERSION_NAME).append("}}\n"); .append("{{Uploaded from Mobile|platform=Android|version=")
.append(ConfigUtils.getVersionNameWithSha(applicationContext)).append("}}\n");
if(categories!=null&&categories.size()!=0) { if(categories!=null&&categories.size()!=0) {
for (int i = 0; i < categories.size(); i++) { for (int i = 0; i < categories.size(); i++) {
String category = categories.get(i); String category = categories.get(i);

View file

@ -45,7 +45,7 @@ public class CommonsLogSender extends LogsSender {
protected String getExtraInfo() { protected String getExtraInfo() {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.append("App Version Name: ") builder.append("App Version Name: ")
.append(BuildConfig.VERSION_NAME) .append(ConfigUtils.getVersionNameWithSha(context))
.append("\n"); .append("\n");
builder.append("User Name: ") builder.append("User Name: ")

View file

@ -52,6 +52,7 @@ import fr.free.nrw.commons.category.QueryContinue;
import fr.free.nrw.commons.kvstore.BasicKvStore; import fr.free.nrw.commons.kvstore.BasicKvStore;
import fr.free.nrw.commons.notification.Notification; import fr.free.nrw.commons.notification.Notification;
import fr.free.nrw.commons.notification.NotificationUtils; import fr.free.nrw.commons.notification.NotificationUtils;
import fr.free.nrw.commons.utils.ConfigUtils;
import fr.free.nrw.commons.utils.DateUtils; import fr.free.nrw.commons.utils.DateUtils;
import fr.free.nrw.commons.utils.ViewUtil; import fr.free.nrw.commons.utils.ViewUtil;
import in.yuvi.http.fluent.Http; import in.yuvi.http.fluent.Http;
@ -115,7 +116,7 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi {
@Override @Override
@NonNull @NonNull
public String getUserAgent() { public String getUserAgent() {
return "Commons/" + BuildConfig.VERSION_NAME + " (https://mediawiki.org/wiki/Apps/Commons) Android/" + Build.VERSION.RELEASE; return "Commons/" + ConfigUtils.getVersionNameWithSha(context) + " (https://mediawiki.org/wiki/Apps/Commons) Android/" + Build.VERSION.RELEASE;
} }
@VisibleForTesting @VisibleForTesting

View file

@ -1,5 +1,6 @@
package fr.free.nrw.commons.mwapi; package fr.free.nrw.commons.mwapi;
import android.content.Context;
import android.os.Build; import android.os.Build;
import fr.free.nrw.commons.Utils; import fr.free.nrw.commons.Utils;
@ -16,14 +17,14 @@ public class EventLog {
} }
} }
private static LogBuilder schema(String schema, long revision, MediaWikiApi mwApi, BasicKvStore prefs) { private static LogBuilder schema(String schema, long revision, MediaWikiApi mwApi, BasicKvStore prefs, Context context) {
return new LogBuilder(schema, revision, mwApi, prefs); return new LogBuilder(schema, revision, mwApi, prefs, context);
} }
public static LogBuilder schema(Object[] scid, MediaWikiApi mwApi, BasicKvStore prefs) { public static LogBuilder schema(Object[] scid, MediaWikiApi mwApi, BasicKvStore prefs, Context context) {
if (scid.length != 2) { if (scid.length != 2) {
throw new IllegalArgumentException("Needs an object array with schema as first param and revision as second"); throw new IllegalArgumentException("Needs an object array with schema as first param and revision as second");
} }
return schema((String) scid[0], (Long) scid[1], mwApi, prefs); return schema((String) scid[0], (Long) scid[1], mwApi, prefs, context);
} }
} }

View file

@ -1,5 +1,6 @@
package fr.free.nrw.commons.mwapi; package fr.free.nrw.commons.mwapi;
import android.content.Context;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Build; import android.os.Build;
@ -13,6 +14,7 @@ import fr.free.nrw.commons.BuildConfig;
import fr.free.nrw.commons.Utils; import fr.free.nrw.commons.Utils;
import fr.free.nrw.commons.kvstore.BasicKvStore; import fr.free.nrw.commons.kvstore.BasicKvStore;
import fr.free.nrw.commons.settings.Prefs; import fr.free.nrw.commons.settings.Prefs;
import fr.free.nrw.commons.utils.ConfigUtils;
@SuppressWarnings("WeakerAccess") @SuppressWarnings("WeakerAccess")
public class LogBuilder { public class LogBuilder {
@ -21,6 +23,7 @@ public class LogBuilder {
private final long rev; private final long rev;
private final String schema; private final String schema;
private final BasicKvStore prefs; private final BasicKvStore prefs;
private final Context context;
/** /**
* Main constructor of LogBuilder * Main constructor of LogBuilder
@ -30,12 +33,17 @@ public class LogBuilder {
* @param mwApi Wiki media API instance * @param mwApi Wiki media API instance
* @param prefs Instance of SharedPreferences * @param prefs Instance of SharedPreferences
*/ */
LogBuilder(String schema, long revision, MediaWikiApi mwApi, BasicKvStore prefs) { LogBuilder(String schema,
long revision,
MediaWikiApi mwApi,
BasicKvStore prefs,
Context context) {
this.prefs = prefs; this.prefs = prefs;
this.data = new JSONObject(); this.data = new JSONObject();
this.schema = schema; this.schema = schema;
this.rev = revision; this.rev = revision;
this.mwApi = mwApi; this.mwApi = mwApi;
this.context = context;
} }
/** /**
@ -65,7 +73,7 @@ public class LogBuilder {
fullData.put("wiki", BuildConfig.EVENTLOG_WIKI); fullData.put("wiki", BuildConfig.EVENTLOG_WIKI);
data.put("device", EventLog.DEVICE); data.put("device", EventLog.DEVICE);
data.put("platform", "Android/" + Build.VERSION.RELEASE); data.put("platform", "Android/" + Build.VERSION.RELEASE);
data.put("appversion", "Android/" + BuildConfig.VERSION_NAME); data.put("appversion", "Android/" + ConfigUtils.getVersionNameWithSha(context));
fullData.put("event", data); fullData.put("event", data);
return new URL(BuildConfig.EVENTLOG_URL + "?" + Utils.urlEncode(fullData.toString()) + ";"); return new URL(BuildConfig.EVENTLOG_URL + "?" + Utils.urlEncode(fullData.toString()) + ";");
} catch (MalformedURLException | JSONException e) { } catch (MalformedURLException | JSONException e) {

View file

@ -39,6 +39,7 @@ import fr.free.nrw.commons.contributions.MainActivity;
import fr.free.nrw.commons.kvstore.BasicKvStore; import fr.free.nrw.commons.kvstore.BasicKvStore;
import fr.free.nrw.commons.notification.NotificationActivity; import fr.free.nrw.commons.notification.NotificationActivity;
import fr.free.nrw.commons.settings.SettingsActivity; import fr.free.nrw.commons.settings.SettingsActivity;
import fr.free.nrw.commons.utils.ConfigUtils;
import timber.log.Timber; import timber.log.Timber;
public abstract class NavigationBaseActivity extends BaseActivity public abstract class NavigationBaseActivity extends BaseActivity
@ -195,7 +196,7 @@ public abstract class NavigationBaseActivity extends BaseActivity
new String[]{CommonsApplication.FEEDBACK_EMAIL}); new String[]{CommonsApplication.FEEDBACK_EMAIL});
feedbackIntent.putExtra(Intent.EXTRA_SUBJECT, feedbackIntent.putExtra(Intent.EXTRA_SUBJECT,
String.format(CommonsApplication.FEEDBACK_EMAIL_SUBJECT, String.format(CommonsApplication.FEEDBACK_EMAIL_SUBJECT,
BuildConfig.VERSION_NAME)); ConfigUtils.getVersionNameWithSha(getApplicationContext())));
try { try {
startActivity(feedbackIntent); startActivity(feedbackIntent);
} catch (ActivityNotFoundException e) { } catch (ActivityNotFoundException e) {

View file

@ -281,7 +281,8 @@ public class UploadService extends HandlerService<Contribution> {
getString(R.string.upload_progress_notification_title_finishing, contribution.getDisplayTitle()), getString(R.string.upload_progress_notification_title_finishing, contribution.getDisplayTitle()),
contribution contribution
); );
UploadResult uploadResult = mwApi.uploadFile(filename, fileInputStream, contribution.getDataLength(), contribution.getPageContents(), contribution.getEditSummary(), contribution.getLocalUri(), contribution.getContentProviderUri(), notificationUpdater); UploadResult uploadResult = mwApi.uploadFile(filename, fileInputStream, contribution.getDataLength(),
contribution.getPageContents(getApplicationContext()), contribution.getEditSummary(), contribution.getLocalUri(), contribution.getContentProviderUri(), notificationUpdater);
Timber.d("Response is %s", uploadResult.toString()); Timber.d("Response is %s", uploadResult.toString());

View file

@ -1,5 +1,10 @@
package fr.free.nrw.commons.utils; package fr.free.nrw.commons.utils;
import android.content.Context;
import android.content.pm.PackageManager;
import java.util.Locale;
import fr.free.nrw.commons.BuildConfig; import fr.free.nrw.commons.BuildConfig;
public class ConfigUtils { public class ConfigUtils {
@ -7,4 +12,16 @@ public class ConfigUtils {
public static boolean isBetaFlavour() { public static boolean isBetaFlavour() {
return BuildConfig.FLAVOR.equals("beta"); return BuildConfig.FLAVOR.equals("beta");
} }
private static String getVersionName(Context context) {
try {
return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
} catch (PackageManager.NameNotFoundException e) {
return BuildConfig.VERSION_NAME;
}
}
public static String getVersionNameWithSha(Context context) {
return String.format(Locale.getDefault(), "%s~%s", getVersionName(context), BuildConfig.COMMIT_SHA);
}
} }

View file

@ -5,6 +5,7 @@ import com.google.gson.Gson
import fr.free.nrw.commons.BuildConfig import fr.free.nrw.commons.BuildConfig
import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.kvstore.BasicKvStore import fr.free.nrw.commons.kvstore.BasicKvStore
import fr.free.nrw.commons.utils.ConfigUtils
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import okhttp3.mockwebserver.MockResponse import okhttp3.mockwebserver.MockResponse
import okhttp3.mockwebserver.MockWebServer import okhttp3.mockwebserver.MockWebServer
@ -320,7 +321,7 @@ class ApacheHttpClientMediaWikiApiTest {
private fun assertBasicRequestParameters(server: MockWebServer, method: String): RecordedRequest = server.takeRequest().let { private fun assertBasicRequestParameters(server: MockWebServer, method: String): RecordedRequest = server.takeRequest().let {
assertEquals("/", it.requestUrl.encodedPath()) assertEquals("/", it.requestUrl.encodedPath())
assertEquals(method, it.method) assertEquals(method, it.method)
assertEquals("Commons/${BuildConfig.VERSION_NAME} (https://mediawiki.org/wiki/Apps/Commons) Android/${Build.VERSION.RELEASE}", assertEquals("Commons/${ConfigUtils.getVersionNameWithSha(RuntimeEnvironment.application)} (https://mediawiki.org/wiki/Apps/Commons) Android/${Build.VERSION.RELEASE}",
it.getHeader("User-Agent")) it.getHeader("User-Agent"))
if ("POST" == method) { if ("POST" == method) {
assertEquals("application/x-www-form-urlencoded", it.getHeader("Content-Type")) assertEquals("application/x-www-form-urlencoded", it.getHeader("Content-Type"))