Skip to content

Commit 8549a59

Browse files
Merge branch 'main' into Notification_time_ago
2 parents df970e8 + fe207e8 commit 8549a59

File tree

232 files changed

+2011
-2036
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

232 files changed

+2011
-2036
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ android {
3737
applicationId 'org.wikipedia'
3838
minSdkVersion 21
3939
targetSdkVersion 33
40-
versionCode 50441
40+
versionCode 50443
4141
testApplicationId 'org.wikipedia.test'
4242
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
4343
testInstrumentationRunnerArguments clearPackageData: 'true'
@@ -95,7 +95,7 @@ android {
9595
testProguardFiles 'test-proguard-rules.pro'
9696
}
9797
release {
98-
minifyEnabled false
98+
minifyEnabled true
9999
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
100100
testProguardFiles 'test-proguard-rules.pro'
101101
}

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@
9696
android:name=".page.PageActivity"
9797
android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
9898
android:configChanges="orientation|screenSize"
99-
android:theme="@style/AppTheme.Page"
99+
android:theme="@style/AppTheme"
100100
android:launchMode="singleTask"
101101
android:parentActivityName=".main.MainActivity"
102102
android:exported="true">
@@ -256,7 +256,7 @@
256256
android:name=".notifications.NotificationActivity"
257257
android:label="@string/notifications_activity_title"
258258
android:configChanges="orientation|keyboardHidden|keyboard|screenSize"
259-
android:theme="@style/AppTheme.Notification" />
259+
android:theme="@style/AppTheme" />
260260

261261
<activity
262262
android:name=".page.tabs.TabActivity"
@@ -277,7 +277,7 @@
277277
<activity
278278
android:name=".watchlist.WatchlistFilterActivity"
279279
android:label="@string/watchlist_filter_title"
280-
android:theme="@style/AppTheme.ActionBar.Watchlist"/>
280+
android:theme="@style/AppTheme.ActionBar"/>
281281

282282
<activity
283283
android:name=".suggestededits.SuggestedEditsImageTagEditActivity"

app/src/main/java/org/wikipedia/activity/BaseActivity.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ import android.view.MenuItem
77
import android.view.MotionEvent
88
import androidx.activity.result.contract.ActivityResultContracts
99
import androidx.annotation.ColorInt
10-
import androidx.appcompat.app.AlertDialog
1110
import androidx.appcompat.app.AppCompatActivity
1211
import androidx.core.app.ActivityCompat
1312
import androidx.core.content.pm.ShortcutManagerCompat
13+
import com.google.android.material.dialog.MaterialAlertDialogBuilder
1414
import com.skydoves.balloon.Balloon
1515
import io.reactivex.rxjava3.disposables.CompositeDisposable
1616
import io.reactivex.rxjava3.disposables.Disposable
@@ -188,7 +188,7 @@ abstract class BaseActivity : AppCompatActivity(), ConnectionStateMonitor.Callba
188188
private fun maybeShowLoggedOutInBackgroundDialog() {
189189
if (Prefs.loggedOutInBackground) {
190190
Prefs.loggedOutInBackground = false
191-
AlertDialog.Builder(this)
191+
MaterialAlertDialogBuilder(this)
192192
.setCancelable(false)
193193
.setTitle(R.string.logged_out_in_background_title)
194194
.setMessage(R.string.logged_out_in_background_dialog)
@@ -231,7 +231,7 @@ abstract class BaseActivity : AppCompatActivity(), ConnectionStateMonitor.Callba
231231
private inner class ExclusiveBusConsumer : Consumer<Any> {
232232
override fun accept(event: Any) {
233233
if (event is SplitLargeListsEvent) {
234-
AlertDialog.Builder(this@BaseActivity)
234+
MaterialAlertDialogBuilder(this@BaseActivity)
235235
.setMessage(getString(R.string.split_reading_list_message, SiteInfoClient.maxPagesPerReadingList))
236236
.setPositiveButton(R.string.reading_list_split_dialog_ok_button_text, null)
237237
.show()

app/src/main/java/org/wikipedia/analytics/eventplatform/BreadCrumbLogEvent.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ package org.wikipedia.analytics.eventplatform
33
import android.content.Context
44
import android.view.MenuItem
55
import android.view.View
6-
import android.widget.CheckBox
6+
import android.widget.Checkable
77
import android.widget.TextView
8-
import androidx.appcompat.widget.SwitchCompat
98
import androidx.fragment.app.Fragment
109
import kotlinx.serialization.SerialName
1110
import kotlinx.serialization.Serializable
@@ -38,8 +37,7 @@ class BreadCrumbLogEvent(
3837
}
3938
val viewReadableName = BreadCrumbViewUtil.getReadableNameForView(view)
4039
val str = "$viewReadableName." + when (view) {
41-
is SwitchCompat -> if (!view.isChecked) "on" else "off"
42-
is CheckBox -> if (!view.isChecked) "on" else "off"
40+
is Checkable -> if (!view.isChecked) "on" else "off"
4341
else -> "click"
4442
}
4543
EventPlatformClient.submit(BreadCrumbLogEvent(BreadCrumbViewUtil.getReadableScreenName(context), str))

app/src/main/java/org/wikipedia/analytics/eventplatform/WatchlistAnalyticsHelper.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,16 @@ import org.wikipedia.WikipediaApp
55
import org.wikipedia.page.PageTitle
66

77
object WatchlistAnalyticsHelper {
8+
9+
fun logWatchlistItemCountOnLoad(context: Context = WikipediaApp.instance, itemsCount: Int) {
10+
EventPlatformClient.submit(
11+
BreadCrumbLogEvent(
12+
BreadCrumbViewUtil.getReadableScreenName(context),
13+
"Watchlist.itemCount:$itemsCount.displayed"
14+
)
15+
)
16+
}
17+
818
fun logAddedToWatchlist(title: PageTitle?, context: Context = WikipediaApp.instance) {
919
EventPlatformClient.submit(
1020
BreadCrumbLogEvent(

app/src/main/java/org/wikipedia/categories/CategoryDialog.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.wikipedia.categories
22

3+
import android.graphics.Typeface
34
import android.os.Bundle
45
import android.view.LayoutInflater
56
import android.view.View
@@ -83,6 +84,7 @@ class CategoryDialog : ExtendedBottomSheetDialogFragment() {
8384
override fun onCreateViewHolder(parent: ViewGroup, pos: Int): CategoryItemHolder {
8485
val view = PageItemView<PageTitle>(requireContext())
8586
view.setImageVisible(false)
87+
view.setTitleTypeface(Typeface.NORMAL)
8688
return CategoryItemHolder(view)
8789
}
8890

app/src/main/java/org/wikipedia/createaccount/CreateAccountActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import android.text.TextWatcher
99
import android.util.Patterns
1010
import android.view.KeyEvent
1111
import android.view.View
12-
import androidx.appcompat.app.AlertDialog
1312
import androidx.core.widget.doOnTextChanged
13+
import com.google.android.material.dialog.MaterialAlertDialogBuilder
1414
import com.google.android.material.textfield.TextInputLayout
1515
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
1616
import io.reactivex.rxjava3.disposables.CompositeDisposable
@@ -230,7 +230,7 @@ class CreateAccountActivity : BaseActivity() {
230230
binding.createAccountEmail.error = getString(R.string.create_account_email_error)
231231
return
232232
}
233-
ValidateResult.NO_EMAIL -> AlertDialog.Builder(this)
233+
ValidateResult.NO_EMAIL -> MaterialAlertDialogBuilder(this)
234234
.setCancelable(false)
235235
.setTitle(R.string.email_recommendation_dialog_title)
236236
.setMessage(StringUtil.fromHtml(resources.getString(R.string.email_recommendation_dialog_message)))

app/src/main/java/org/wikipedia/dataclient/Service.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,14 @@ interface Service {
171171
@Field("url") url: String,
172172
): ShortenUrlResponse
173173

174+
@GET(MW_API_PREFIX + "action=query&generator=geosearch&prop=coordinates|description|pageimages|info&inprop=varianttitles|displaytitle")
175+
suspend fun getGeoSearch(
176+
@Query("ggscoord", encoded = true) coordinates: String,
177+
@Query("ggsradius") radius: Int,
178+
@Query("ggslimit") ggsLimit: Int,
179+
@Query("colimit") coLimit: Int,
180+
): MwQueryResponse
181+
174182
// ------- CSRF, Login, and Create Account -------
175183

176184
@Headers("Cache-Control: no-cache")
@@ -323,11 +331,11 @@ interface Service {
323331
): Observable<Edit>
324332

325333
@GET(MW_API_PREFIX + "action=query&list=usercontribs&ucprop=ids|title|timestamp|comment|size|flags|sizediff|tags&meta=userinfo&uiprop=groups|blockinfo|editcount|latestcontrib")
326-
fun getUserContributions(
334+
suspend fun getUserContributions(
327335
@Query("ucuser") username: String,
328336
@Query("uclimit") maxCount: Int,
329337
@Query("uccontinue") uccontinue: String?
330-
): Observable<MwQueryResponse>
338+
): MwQueryResponse
331339

332340
@GET(MW_API_PREFIX + "action=query&list=usercontribs&ucprop=ids|title|timestamp|comment|size|flags|sizediff|tags")
333341
suspend fun getUserContrib(

app/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryPage.kt

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class MwQueryPage {
2121
@SerialName("entityterms") val entityTerms: EntityTerms? = null
2222

2323
private val ns = 0
24-
private var coordinates: List<Coordinates>? = null
24+
val coordinates: List<Coordinates>? = null
2525
private val thumbnail: Thumbnail? = null
2626
private val varianttitles: Map<String, String>? = null
2727
private val actions: Map<String, List<MwServiceError>>? = null
@@ -49,13 +49,6 @@ class MwQueryPage {
4949
return Namespace.of(ns)
5050
}
5151

52-
fun coordinates(): List<Coordinates>? {
53-
// TODO: Handle null values in lists during deserialization, perhaps with a new
54-
// @RequiredElements annotation and corresponding TypeAdapter
55-
coordinates = coordinates?.filterNotNull()
56-
return coordinates
57-
}
58-
5952
fun thumbUrl(): String? {
6053
return thumbnail?.source
6154
}
@@ -116,7 +109,7 @@ class MwQueryPage {
116109
class LangLink(val lang: String = "", val title: String = "")
117110

118111
@Serializable
119-
class Coordinates(val lat: Double? = null, val lon: Double? = null)
112+
class Coordinates(val lat: Double = 0.0, val lon: Double = 0.0)
120113

121114
@Serializable
122115
internal class Thumbnail(val source: String? = null,

app/src/main/java/org/wikipedia/descriptions/DescriptionEditActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import org.wikipedia.suggestededits.PageSummaryForEdit
2222
import org.wikipedia.util.ClipboardUtil
2323
import org.wikipedia.util.DeviceUtil
2424
import org.wikipedia.util.FeedbackUtil
25+
import org.wikipedia.util.ReleaseUtil
2526
import org.wikipedia.util.ShareUtil
2627
import org.wikipedia.views.ImagePreviewDialog
2728
import org.wikipedia.views.SuggestedArticleDescriptionsDialog
@@ -36,7 +37,7 @@ class DescriptionEditActivity : SingleFragmentActivity<DescriptionEditFragment>(
3637
val action = intent.getSerializableExtra(Constants.INTENT_EXTRA_ACTION) as Action
3738
val pageTitle = intent.getParcelableExtra<PageTitle>(EXTRA_TITLE)!!
3839

39-
MachineGeneratedArticleDescriptionsAnalyticsHelper.isUserInExperiment = (AccountUtil.isLoggedIn &&
40+
MachineGeneratedArticleDescriptionsAnalyticsHelper.isUserInExperiment = (ReleaseUtil.isPreBetaRelease && AccountUtil.isLoggedIn &&
4041
action == Action.ADD_DESCRIPTION && pageTitle.description.isNullOrEmpty() &&
4142
SuggestedArticleDescriptionsDialog.availableLanguages.contains(pageTitle.wikiSite.languageCode))
4243

0 commit comments

Comments
 (0)