Skip to content

Commit eb8d893

Browse files
committed
fix(android): correct lint issues for various API mis-use
Highlights: - enforce CallSuper so TaskExecutors will always clean up correctly - enforce Locale translation in string manipulaton (Fixes #3917)
1 parent 70aba4b commit eb8d893

File tree

10 files changed

+29
-17
lines changed

10 files changed

+29
-17
lines changed

packages/app/android/src/reactnative/java/io/invertase/firebase/common/ReactNativeFirebaseModule.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,18 @@
1919

2020
import android.app.Activity;
2121
import android.content.Context;
22-
import com.facebook.react.bridge.*;
23-
import io.invertase.firebase.interfaces.ContextProvider;
24-
import io.invertase.firebase.common.TaskExecutorService;
22+
import androidx.annotation.CallSuper;
23+
import androidx.annotation.NonNull;
2524

26-
import javax.annotation.Nonnull;
2725
import java.util.HashMap;
2826
import java.util.Map;
2927
import java.util.concurrent.ExecutorService;
3028

29+
import com.facebook.react.bridge.*;
30+
31+
import io.invertase.firebase.interfaces.ContextProvider;
32+
import io.invertase.firebase.common.TaskExecutorService;
33+
3134
public class ReactNativeFirebaseModule extends ReactContextBaseJavaModule implements ContextProvider {
3235
private final TaskExecutorService executorService;
3336

@@ -67,6 +70,7 @@ public static void rejectPromiseWithCodeAndMessage(
6770
}
6871

6972
@Override
73+
@CallSuper
7074
public void initialize() {
7175
super.initialize();
7276
}
@@ -75,24 +79,25 @@ public ReactContext getContext() {
7579
return getReactApplicationContext();
7680
}
7781

78-
public ExecutorService getExecutor() {
82+
public final ExecutorService getExecutor() {
7983
return executorService.getExecutor();
8084
}
8185

82-
public ExecutorService getTransactionalExecutor() {
86+
public final ExecutorService getTransactionalExecutor() {
8387
return executorService.getTransactionalExecutor();
8488
}
8589

86-
public ExecutorService getTransactionalExecutor(String identifier) {
90+
public final ExecutorService getTransactionalExecutor(String identifier) {
8791
return executorService.getTransactionalExecutor(identifier);
8892
}
8993

9094
@Override
95+
@CallSuper
9196
public void onCatalystInstanceDestroy() {
9297
executorService.shutdown();
9398
}
9499

95-
public void removeEventListeningExecutor(String identifier) {
100+
public final void removeEventListeningExecutor(String identifier) {
96101
String executorName = executorService.getExecutorName(true, identifier);
97102
executorService.removeExecutor(executorName);
98103
}
@@ -105,12 +110,13 @@ public Activity getActivity() {
105110
return getCurrentActivity();
106111
}
107112

108-
@Nonnull
113+
@NonNull
109114
@Override
110115
public String getName() {
111116
return "RNFB" + moduleName + "Module";
112117
}
113118

119+
@NonNull
114120
@Override
115121
public Map<String, Object> getConstants() {
116122
return new HashMap<>();

packages/app/android/src/reactnative/java/io/invertase/firebase/common/SharedUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public static WritableMap getExceptionMap(Exception exception) {
9999

100100
public static String timestampToUTC(long timestamp) {
101101
long millisTimestamp = timestamp * 1000;
102-
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
102+
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ROOT);
103103
format.setTimeZone(TimeZone.getTimeZone("UTC"));
104104
return format.format(millisTimestamp);
105105
}

packages/auth/android/src/main/java/io/invertase/firebase/auth/ReactNativeFirebaseAuthModule.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import java.util.HashMap;
6262
import java.util.Iterator;
6363
import java.util.List;
64+
import java.util.Locale;
6465
import java.util.Map;
6566
import java.util.Objects;
6667
import java.util.concurrent.TimeUnit;
@@ -1885,7 +1886,7 @@ private WritableMap getJSError(Exception exception) {
18851886
}
18861887

18871888
code = code
1888-
.toLowerCase()
1889+
.toLowerCase(Locale.ROOT)
18891890
.replace("error_", "")
18901891
.replace('_', '-');
18911892
error.putString("code", code);

packages/database/android/src/main/java/io/invertase/firebase/database/UniversalFirebaseDatabaseCommon.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ static void addEmulatorConfig(String appName, String dbURL, String host, int por
9595
String configKey = appName + dbURL;
9696
HashMap<String, Object> emulatorConfig = new HashMap<>();
9797
emulatorConfig.put("host", host);
98-
emulatorConfig.put("port", new Integer(port));
98+
emulatorConfig.put("port", Integer.valueOf(port));
9999
emulatorConfigs.put(configKey, emulatorConfig);
100100
}
101101

packages/dynamic-links/android/src/main/java/io/invertase/firebase/dynamiclinks/ReactNativeFirebaseDynamicLinksModule.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public class ReactNativeFirebaseDynamicLinksModule extends ReactNativeFirebaseMo
7272
public void onCatalystInstanceDestroy() {
7373
getReactApplicationContext().removeActivityEventListener(this);
7474
getReactApplicationContext().addLifecycleEventListener(this);
75+
super.onCatalystInstanceDestroy();
7576
}
7677

7778
@ReactMethod

packages/firestore/android/src/reactnative/java/io/invertase/firebase/firestore/ReactNativeFirebaseFirestoreTransactionModule.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public void onCatalystInstanceDestroy() {
5656
}
5757

5858
transactionHandlers.clear();
59+
super.onCatalystInstanceDestroy();
5960
}
6061

6162
@ReactMethod

packages/storage/android/src/main/java/io/invertase/firebase/storage/ReactNativeFirebaseStorageCommon.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import com.google.firebase.storage.StorageReference;
3636
import com.google.firebase.storage.StorageTask;
3737

38+
import java.util.Locale;
3839
import java.util.Map;
3940
import java.util.Objects;
4041

@@ -143,7 +144,7 @@ static StorageMetadata buildMetadataFromMap(ReadableMap metadataMap, @Nullable U
143144

144145
if (mimeType == null) {
145146
String fileExt = MimeTypeMap.getFileExtensionFromUrl(file.toString());
146-
mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExt.toLowerCase());
147+
mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExt.toLowerCase(Locale.ROOT));
147148
}
148149

149150
if (mimeType != null) {

packages/storage/android/src/main/java/io/invertase/firebase/storage/ReactNativeFirebaseStorageModule.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public class ReactNativeFirebaseStorageModule extends ReactNativeFirebaseModule
5454
@Override
5555
public void onCatalystInstanceDestroy() {
5656
ReactNativeFirebaseStorageTask.destroyAllTasks();
57+
super.onCatalystInstanceDestroy();
5758
}
5859

5960
/**

tests/android/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ subprojects {
106106
abortOnError = true
107107
warningsAsErrors false
108108
lintConfig file('./lint.xml')
109+
ignore 'UnknownNullness', 'SyntheticAccessor', 'LogConditional'
109110
checkReleaseBuilds = true
110111
checkAllWarnings true
111112
showAll true

tests/android/lint.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@
2121
<issue id="NewIssueId" severity="ignore"/>
2222
-->
2323
<lint>
24+
<issue id="DefaultLocale" severity="fatal" />
2425
<issue id="NewApi" severity="fatal" />
2526
<issue id="HardcodedText" severity="fatal" />
2627
<issue id="InlinedApi" severity="fatal" />
28+
<issue id="MissingSuperCall" severity="ignore" />
2729
<issue id="StringFormatCount" severity="fatal" />
2830
<issue id="StringFormatMatches" severity="fatal" />
2931
<issue id="StringFormatInvalid" severity="fatal" />
30-
<issue id="UnusedResources" severity="ignore" />
32+
<issue id="UseValueOf" severity="fatal" />
3133
<issue id="ViewConstructor" severity="fatal" />
3234
<issue id="ViewHolder" severity="fatal" />
3335
<issue id="ViewTag" severity="fatal" />
@@ -42,6 +44,7 @@
4244
<issue id="RtlSymmetry" severity="ignore" />
4345

4446
<!-- <issue id="UseCompatTextViewDrawableXml" severity="ignore" /> -->
47+
<issue id="UnusedResources" severity="ignore" />
4548
<issue id="UnknownNullness" severity="ignore" />
4649
<issue id="SyntheticAccessor" severity="ignore" />
4750
<!-- FIXME need to remove WRITE_EXTERNAL_STORAGE from storage -->
@@ -91,7 +94,6 @@
9194
<issue id="ButtonOrder" severity="ignore" />
9295
<issue id="ButtonStyle" severity="ignore" />
9396
<issue id="ByteOrderMark" severity="ignore" />
94-
<issue id="MissingSuperCall" severity="ignore" />
9597
<issue id="AdapterViewChildren" severity="ignore" />
9698
<issue id="ScrollViewCount" severity="ignore" />
9799
<issue id="PermissionImpliesUnsupportedChromeOsHardware" severity="ignore" />
@@ -183,15 +185,13 @@
183185
<issue id="InvalidPackage" severity="ignore" />
184186
<issue id="DrawAllocation" severity="ignore" />
185187
<issue id="UseSparseArrays" severity="ignore" />
186-
<issue id="UseValueOf" severity="ignore" />
187188
<issue id="JavascriptInterface" severity="ignore" />
188189
<issue id="JobSchedulerService" severity="ignore" />
189190
<issue id="KeyboardInaccessibleWidget" severity="ignore" />
190191
<issue id="LabelFor" severity="ignore" />
191192
<issue id="InconsistentLayout" severity="ignore" />
192193
<issue id="InflateParams" severity="ignore" />
193194
<issue id="StaticFieldLeak" severity="ignore" />
194-
<issue id="DefaultLocale" severity="ignore" />
195195
<issue id="LocaleFolder" severity="ignore" />
196196
<issue id="GetLocales" severity="ignore" />
197197
<issue id="InvalidResourceFolder" severity="ignore" />

0 commit comments

Comments
 (0)