Skip to content

Commit 56ddf09

Browse files
committed
Merge remote-tracking branch 'refs/remotes/origin/develop' into public
# Conflicts: # weather-api/src/main/jni/Application.mk
2 parents c2cda1f + 0cbbacc commit 56ddf09

File tree

191 files changed

+8689
-3021
lines changed

Some content is hidden

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

191 files changed

+8689
-3021
lines changed

app/build.gradle

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ android {
99

1010
defaultConfig {
1111
applicationId "com.thewizrd.simpleweather"
12+
testApplicationId "com.thewizrd.simpleweather.test"
1213
// Specifies the fully-qualified class name of the test instrumentation runner.
1314
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1415
minSdkVersion rootProject.minSdkVersion
1516
targetSdkVersion rootProject.targetSdkVersion
16-
// NOTE: Version Code Format (TargetSDK, Version Name, Build Number, Variant Code (Android: 00, WearOS: 01)
17-
versionCode 335900500
18-
versionName "5.9.0"
17+
// NOTE: Version Code Format (TargetSDK, Version Name, Build Number, Variant Code (Android: 0, WearOS: 1)
18+
versionCode 345100040
19+
versionName "5.10.0"
1920

2021
vectorDrawables {
2122
useSupportLibrary true
@@ -168,13 +169,14 @@ dependencies {
168169

169170
fullgmsImplementation "com.google.android.gms:play-services-base:$gms_base_version"
170171
fullgmsImplementation "com.google.android.gms:play-services-location:$gms_location_version"
171-
fullgmsImplementation 'com.google.android.gms:play-services-maps:18.2.0'
172+
fullgmsImplementation 'com.google.android.gms:play-services-maps:19.0.0'
172173
fullgmsImplementation "com.google.android.gms:play-services-wearable:$gms_wearable_version"
173174
fullgmsImplementation 'com.google.android.play:app-update-ktx:2.1.0'
174175
fullgmsImplementation 'com.google.android.play:feature-delivery-ktx:2.1.0'
176+
fullgmsImplementation 'com.google.android.play:review-ktx:2.0.1'
175177
fullgmsImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:$kotlinx_version"
176178

177-
nongmsImplementation 'org.osmdroid:osmdroid-android:6.1.18'
179+
nongmsImplementation 'org.osmdroid:osmdroid-android:6.1.20'
178180
}
179181

180182
if (getGradle().getStartParameter().getTaskRequests().toString().contains("Fullgms")) {

app/src/androidTest/java/com/thewizrd/simpleweather/InstrumentedTests.kt renamed to app/src/androidTest/java/com/thewizrd/simpleweather/test/InstrumentedTests.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.thewizrd.simpleweather
1+
package com.thewizrd.simpleweather.test
22

33
import android.content.Context
44
import android.content.SharedPreferences

app/src/androidTestFullgms/java/com/thewizrd/simpleweather/UnitTests.kt renamed to app/src/androidTestFullgms/java/com/thewizrd/simpleweather/test/UnitTests.kt

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.thewizrd.simpleweather
1+
package com.thewizrd.simpleweather.test
22

33
import android.content.Context
44
import android.content.SharedPreferences
@@ -23,6 +23,7 @@ import com.thewizrd.shared_resources.remoteconfig.WeatherProviderConfig
2323
import com.thewizrd.shared_resources.utils.Coordinate
2424
import com.thewizrd.shared_resources.utils.DateTimeUtils
2525
import com.thewizrd.shared_resources.utils.JSONParser
26+
import com.thewizrd.shared_resources.utils.LocaleUtils
2627
import com.thewizrd.shared_resources.utils.ZoneIdCompat
2728
import com.thewizrd.shared_resources.weatherdata.WeatherAPI
2829
import com.thewizrd.shared_resources.weatherdata.WeatherProvider
@@ -572,6 +573,47 @@ class UnitTests {
572573
}
573574
}
574575

576+
@Throws(WeatherException::class)
577+
@Test
578+
fun getDWDWeather() {
579+
runBlocking(Dispatchers.Default) {
580+
val provider =
581+
weatherModule.weatherManager.getWeatherProvider(WeatherAPI.DWD)
582+
val weather =
583+
getWeather(provider, Coordinate(52.52, 13.4)) // Berlin
584+
assertTrue(weather.isValid && WeatherUiModel(weather).isValid)
585+
}
586+
}
587+
588+
@Throws(WeatherException::class)
589+
@Test
590+
fun getECCCWeather() {
591+
runBlocking(Dispatchers.Default) {
592+
val provider =
593+
weatherModule.weatherManager.getWeatherProvider(WeatherAPI.ECCC)
594+
val weather =
595+
getWeather(provider, Coordinate(48.737, -91.984)) // Banning, ON
596+
assertTrue(weather.isValid && WeatherUiModel(weather).isValid)
597+
}
598+
}
599+
600+
@Throws(WeatherException::class)
601+
@Test
602+
fun getECCCWeather_FR() {
603+
runBlocking(Dispatchers.Default) {
604+
val locale = LocaleUtils.getLocale()
605+
LocaleUtils.setLocaleCode(Locale.CANADA_FRENCH.toLanguageTag())
606+
607+
val provider =
608+
weatherModule.weatherManager.getWeatherProvider(WeatherAPI.ECCC)
609+
val weather =
610+
getWeather(provider, Coordinate(48.737, -91.984)) // Banning, ON
611+
assertTrue(weather.isValid && WeatherUiModel(weather).isValid)
612+
// Restore
613+
LocaleUtils.setLocaleCode(locale.toLanguageTag())
614+
}
615+
}
616+
575617
@Test
576618
fun moshiSerializeTest() {
577619
JSONParser.deserializer<WeatherProviderConfig>(

app/src/androidTestNongms/java/com/thewizrd/simpleweather/UnitTests.kt renamed to app/src/androidTestNongms/java/com/thewizrd/simpleweather/test/UnitTests.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.thewizrd.simpleweather
1+
package com.thewizrd.simpleweather.test
22

33
import android.content.Context
44
import android.content.SharedPreferences

app/src/fullgms/java/com/thewizrd/simpleweather/extras/Extras.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ fun SettingsFragment.IconsFragment.navigateUnsupportedIconPack() {
9191
// Navigate to premium page
9292
if (isPremiumSupported()) {
9393
rootView.findNavController()
94-
.navigate(`SettingsFragment$IconsFragmentDirections`.actionIconsFragmentToPremiumFragment())
94+
.safeNavigate(`SettingsFragment$IconsFragmentDirections`.actionIconsFragmentToPremiumFragment())
9595
} else {
9696
showSnackbar(
9797
Snackbar.make(
@@ -106,7 +106,7 @@ fun SettingsFragment.IconsFragment.navigateUnsupportedIconPack() {
106106
}
107107

108108
fun enableAdditionalRefreshIntervals(): Boolean {
109-
return extrasModule.isEnabled()
109+
return extrasModule.isPremiumEnabled()
110110
}
111111

112112
fun checkPremiumStatus() {
@@ -118,17 +118,17 @@ fun isPremiumSupported(): Boolean {
118118
}
119119

120120
fun isRadarInteractionEnabled(): Boolean {
121-
return extrasModule.isEnabled()
121+
return extrasModule.isAtLeastProEnabled()
122122
}
123123

124124
fun areNotificationExtrasEnabled(): Boolean {
125-
return extrasModule.isEnabled()
125+
return extrasModule.isAtLeastProEnabled()
126126
}
127127

128128
fun SettingsFragment.createPremiumPreference(): Preference {
129129
val premiumPref = Preference(requireContext()).apply {
130130
title = context.getString(R.string.pref_title_premium)
131-
summary = context.getString(R.string.message_premium_prompt)
131+
summary = context.getString(R.string.pref_summary_premium)
132132
setIcon(R.drawable.ic_star_24dp)
133133
order = 0
134134
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
@file:JvmMultifileClass
2+
@file:JvmName("PerfTrace")
3+
4+
package com.thewizrd.simpleweather.performance
5+
6+
import com.google.firebase.perf.metrics.Trace
7+
8+
class PerfTrace(private val name: String) {
9+
private val trace = Trace.create(name)
10+
11+
fun startTrace() {
12+
trace.start()
13+
}
14+
15+
fun stopTrace() {
16+
trace.stop()
17+
}
18+
19+
fun putAttribute(name: String, value: String) {
20+
trace.putAttribute(name, value)
21+
}
22+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.thewizrd.simpleweather.radar;
2+
3+
import android.content.Context;
4+
import android.os.Build;
5+
import android.os.Bundle;
6+
import android.view.ViewGroup;
7+
8+
import androidx.annotation.NonNull;
9+
import androidx.annotation.Nullable;
10+
import androidx.annotation.RequiresApi;
11+
12+
import com.google.android.gms.maps.GoogleMap;
13+
14+
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
15+
public class EmptyRadarViewProvider extends MapTileRadarViewProvider {
16+
public EmptyRadarViewProvider(@NonNull Context context, @NonNull ViewGroup rootView) {
17+
super(context, rootView);
18+
}
19+
20+
@Override
21+
public void onCreateView(@Nullable Bundle savedInstanceState) {
22+
super.onCreateView(savedInstanceState);
23+
if (getViewContainer().getChildCount() == 0) {
24+
getViewContainer().addView(getMapView());
25+
}
26+
}
27+
28+
@Override
29+
public void updateRadarView() {
30+
getMapView().getMapAsync(this);
31+
}
32+
33+
@Override
34+
public void onMapReady(@NonNull GoogleMap googleMap) {
35+
super.onMapReady(googleMap);
36+
}
37+
}

0 commit comments

Comments
 (0)