Files
Daniel Elliott c080f0d97f Add Discord community version (64-bit only)
- Added realracing3-community.apk (71.57 MB)
- Removed 32-bit support (armeabi-v7a)
- Only includes arm64-v8a libraries
- Decompiled source code included
- Added README-community.md with analysis
2026-02-18 15:48:36 -08:00

153 lines
8.6 KiB
Java

package com.google.firebase.crashlytics.internal.settings;
import android.content.Context;
import android.content.SharedPreferences;
import com.google.android.gms.tasks.SuccessContinuation;
import com.google.android.gms.tasks.Task;
import com.google.android.gms.tasks.TaskCompletionSource;
import com.google.android.gms.tasks.Tasks;
import com.google.firebase.crashlytics.internal.Logger;
import com.google.firebase.crashlytics.internal.common.CommonUtils;
import com.google.firebase.crashlytics.internal.common.CurrentTimeProvider;
import com.google.firebase.crashlytics.internal.common.DataCollectionArbiter;
import com.google.firebase.crashlytics.internal.common.DeliveryMechanism;
import com.google.firebase.crashlytics.internal.common.IdManager;
import com.google.firebase.crashlytics.internal.common.SystemCurrentTimeProvider;
import com.google.firebase.crashlytics.internal.network.HttpRequestFactory;
import com.google.firebase.crashlytics.internal.persistence.FileStore;
import java.util.Locale;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicReference;
import org.json.JSONObject;
/* loaded from: classes3.dex */
public class SettingsController implements SettingsProvider {
public final CachedSettingsIo cachedSettingsIo;
public final Context context;
public final CurrentTimeProvider currentTimeProvider;
public final DataCollectionArbiter dataCollectionArbiter;
public final AtomicReference settings;
public final SettingsJsonParser settingsJsonParser;
public final SettingsRequest settingsRequest;
public final SettingsSpiCall settingsSpiCall;
public final AtomicReference settingsTask;
public SettingsController(Context context, SettingsRequest settingsRequest, CurrentTimeProvider currentTimeProvider, SettingsJsonParser settingsJsonParser, CachedSettingsIo cachedSettingsIo, SettingsSpiCall settingsSpiCall, DataCollectionArbiter dataCollectionArbiter) {
AtomicReference atomicReference = new AtomicReference();
this.settings = atomicReference;
this.settingsTask = new AtomicReference(new TaskCompletionSource());
this.context = context;
this.settingsRequest = settingsRequest;
this.currentTimeProvider = currentTimeProvider;
this.settingsJsonParser = settingsJsonParser;
this.cachedSettingsIo = cachedSettingsIo;
this.settingsSpiCall = settingsSpiCall;
this.dataCollectionArbiter = dataCollectionArbiter;
atomicReference.set(DefaultSettingsJsonTransform.defaultSettings(currentTimeProvider));
}
public static SettingsController create(Context context, String str, IdManager idManager, HttpRequestFactory httpRequestFactory, String str2, String str3, FileStore fileStore, DataCollectionArbiter dataCollectionArbiter) {
String installerPackageName = idManager.getInstallerPackageName();
SystemCurrentTimeProvider systemCurrentTimeProvider = new SystemCurrentTimeProvider();
return new SettingsController(context, new SettingsRequest(str, idManager.getModelName(), idManager.getOsBuildVersionString(), idManager.getOsDisplayVersionString(), idManager, CommonUtils.createInstanceIdFrom(CommonUtils.getMappingFileId(context), str, str3, str2), str3, str2, DeliveryMechanism.determineFrom(installerPackageName).getId()), systemCurrentTimeProvider, new SettingsJsonParser(systemCurrentTimeProvider), new CachedSettingsIo(fileStore), new DefaultSettingsSpiCall(String.format(Locale.US, "https://firebase-settings.crashlytics.com/spi/v2/platforms/android/gmp/%s/settings", str), httpRequestFactory), dataCollectionArbiter);
}
@Override // com.google.firebase.crashlytics.internal.settings.SettingsProvider
public Task getSettingsAsync() {
return ((TaskCompletionSource) this.settingsTask.get()).getTask();
}
@Override // com.google.firebase.crashlytics.internal.settings.SettingsProvider
public Settings getSettingsSync() {
return (Settings) this.settings.get();
}
public Task loadSettingsData(Executor executor) {
return loadSettingsData(SettingsCacheBehavior.USE_CACHE, executor);
}
public Task loadSettingsData(SettingsCacheBehavior settingsCacheBehavior, Executor executor) {
Settings cachedSettingsData;
if (!buildInstanceIdentifierChanged() && (cachedSettingsData = getCachedSettingsData(settingsCacheBehavior)) != null) {
this.settings.set(cachedSettingsData);
((TaskCompletionSource) this.settingsTask.get()).trySetResult(cachedSettingsData);
return Tasks.forResult(null);
}
Settings cachedSettingsData2 = getCachedSettingsData(SettingsCacheBehavior.IGNORE_CACHE_EXPIRATION);
if (cachedSettingsData2 != null) {
this.settings.set(cachedSettingsData2);
((TaskCompletionSource) this.settingsTask.get()).trySetResult(cachedSettingsData2);
}
return this.dataCollectionArbiter.waitForDataCollectionPermission(executor).onSuccessTask(executor, new SuccessContinuation() { // from class: com.google.firebase.crashlytics.internal.settings.SettingsController.1
@Override // com.google.android.gms.tasks.SuccessContinuation
public Task then(Void r5) {
JSONObject invoke = SettingsController.this.settingsSpiCall.invoke(SettingsController.this.settingsRequest, true);
if (invoke != null) {
Settings parseSettingsJson = SettingsController.this.settingsJsonParser.parseSettingsJson(invoke);
SettingsController.this.cachedSettingsIo.writeCachedSettings(parseSettingsJson.expiresAtMillis, invoke);
SettingsController.this.logSettings(invoke, "Loaded settings: ");
SettingsController settingsController = SettingsController.this;
settingsController.setStoredBuildInstanceIdentifier(settingsController.settingsRequest.instanceId);
SettingsController.this.settings.set(parseSettingsJson);
((TaskCompletionSource) SettingsController.this.settingsTask.get()).trySetResult(parseSettingsJson);
}
return Tasks.forResult(null);
}
});
}
public final Settings getCachedSettingsData(SettingsCacheBehavior settingsCacheBehavior) {
Settings settings = null;
try {
if (!SettingsCacheBehavior.SKIP_CACHE_LOOKUP.equals(settingsCacheBehavior)) {
JSONObject readCachedSettings = this.cachedSettingsIo.readCachedSettings();
if (readCachedSettings != null) {
Settings parseSettingsJson = this.settingsJsonParser.parseSettingsJson(readCachedSettings);
if (parseSettingsJson != null) {
logSettings(readCachedSettings, "Loaded cached settings: ");
long currentTimeMillis = this.currentTimeProvider.getCurrentTimeMillis();
if (!SettingsCacheBehavior.IGNORE_CACHE_EXPIRATION.equals(settingsCacheBehavior) && parseSettingsJson.isExpired(currentTimeMillis)) {
Logger.getLogger().v("Cached settings have expired.");
}
try {
Logger.getLogger().v("Returning cached settings.");
settings = parseSettingsJson;
} catch (Exception e) {
e = e;
settings = parseSettingsJson;
Logger.getLogger().e("Failed to get cached settings", e);
return settings;
}
} else {
Logger.getLogger().e("Failed to parse cached settings data.", null);
}
} else {
Logger.getLogger().d("No cached settings data found.");
}
}
} catch (Exception e2) {
e = e2;
}
return settings;
}
public final void logSettings(JSONObject jSONObject, String str) {
Logger.getLogger().d(str + jSONObject.toString());
}
public final String getStoredBuildInstanceIdentifier() {
return CommonUtils.getSharedPrefs(this.context).getString("existing_instance_identifier", "");
}
public final boolean setStoredBuildInstanceIdentifier(String str) {
SharedPreferences.Editor edit = CommonUtils.getSharedPrefs(this.context).edit();
edit.putString("existing_instance_identifier", str);
edit.apply();
return true;
}
public boolean buildInstanceIdentifierChanged() {
return !getStoredBuildInstanceIdentifier().equals(this.settingsRequest.instanceId);
}
}