Files
rr3-apk/decompiled-community/sources/com/firemint/realracing/LocalNotificationsCenter.java
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

294 lines
12 KiB
Java

package com.firemint.realracing;
import android.annotation.TargetApi;
import android.app.AlarmManager;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import androidx.core.app.NotificationCompat;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import org.json.JSONArray;
import org.json.JSONObject;
/* loaded from: classes2.dex */
public class LocalNotificationsCenter {
public static final String EXTRA_FIRE_TIME = "firetime";
public static final String EXTRA_ID = "id";
public static final String EXTRA_LAUNCH_URL = "deepLinkUrl";
public static final String EXTRA_LAUNCH_URL_MP_INVITE = "MultiplayerInvite";
public static final String EXTRA_LAUNCH_URL_RT_ADMIN = "RaceTeamsAdmin";
public static final String EXTRA_MESSAGE = "message";
public static final String EXTRA_REMINDER = "reminder";
private static final String FILENAME = "notifications.dat";
private static final boolean LOG_ENABLED = false;
private static final String LOG_TAG = "LocalNotificationsCntr";
private static HashMap<LocalNotification, PendingIntent> mNotificationsIntent = new HashMap<>();
/* JADX INFO: Access modifiers changed from: private */
public static void LogError(String str) {
}
private static void LogInfo(String str) {
}
public static class LocalNotification {
public long mDelayTime;
public int mId;
public String mMessage;
public int mReminderRemain = -1;
public String mURL;
public JSONObject Serialise() {
JSONObject jSONObject = new JSONObject();
try {
jSONObject.put("id", this.mId);
jSONObject.put("firetime", this.mDelayTime);
jSONObject.put("message", this.mMessage);
jSONObject.put("deepLinkUrl", this.mURL);
jSONObject.put("reminder", this.mReminderRemain);
} catch (Exception e) {
LocalNotificationsCenter.LogError(e.getMessage());
}
return jSONObject;
}
public void Serialise(JSONObject jSONObject) {
try {
this.mId = jSONObject.optInt("id");
this.mDelayTime = jSONObject.optLong("firetime");
this.mMessage = jSONObject.optString("message");
this.mURL = jSONObject.optString("deepLinkUrl");
this.mReminderRemain = jSONObject.optInt("reminder");
} catch (Exception e) {
LocalNotificationsCenter.LogError(e.getMessage());
}
}
public LocalNotification(JSONObject jSONObject) {
Serialise(jSONObject);
}
public LocalNotification(int i, String str, String str2) {
this.mId = i;
this.mMessage = str;
this.mURL = str2;
}
}
public static boolean AreNotificationsSupported() {
if (MainActivity.instance != null) {
return !MainActivity.getIsAndroidTv();
}
return false;
}
@TargetApi(19)
public static PendingIntent CreateNotificationIntent(LocalNotification localNotification) {
Context GetContext = AppProxy.GetContext();
Intent intent = new Intent(GetContext, (Class<?>) LocalNotificationBroadcastReceiver.class);
intent.setType("type" + localNotification.mMessage + "-" + localNotification.mDelayTime);
intent.putExtra("message", localNotification.mMessage);
intent.putExtra("id", localNotification.mId);
int i = localNotification.mReminderRemain;
if (i != -1) {
intent.putExtra("reminder", i);
}
if (localNotification.mURL.length() > 0) {
intent.putExtra("deepLinkUrl", localNotification.mURL);
}
return PendingIntent.getBroadcast(GetContext, 0, intent, 201326592);
}
@TargetApi(19)
public static void showNotification(int i, String str, long j, String str2) {
if (str2 == null) {
str2 = "";
}
LocalNotification localNotification = new LocalNotification(i, str, str2);
localNotification.mDelayTime = System.currentTimeMillis() + (1000 * j);
LogInfo("showNotification id: " + i + " delay: " + j + " msg: " + str);
StringBuilder sb = new StringBuilder();
sb.append("showNotification current time: ");
sb.append(System.currentTimeMillis());
LogInfo(sb.toString());
LogInfo("showNotification fire time: " + localNotification.mDelayTime);
LogInfo("showNotification url: " + str2);
if (i == 1) {
localNotification.mReminderRemain = 2 - ((int) Math.floor((System.currentTimeMillis() - Platform.getAppInstallTime()) / 172800000));
}
showNotification(localNotification);
}
/* JADX WARN: Removed duplicated region for block: B:14:0x0051 */
/* JADX WARN: Removed duplicated region for block: B:17:? A[RETURN, SYNTHETIC] */
@android.annotation.TargetApi(19)
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public static void showNotification(com.firemint.realracing.LocalNotificationsCenter.LocalNotification r5) {
/*
boolean r0 = AreNotificationsSupported()
if (r0 == 0) goto L56
if (r5 != 0) goto L9
goto L56
L9:
android.app.PendingIntent r0 = CreateNotificationIntent(r5)
android.content.Context r1 = com.firemint.realracing.AppProxy.GetContext() // Catch: java.lang.Exception -> L2c
java.lang.String r2 = "alarm"
java.lang.Object r1 = r1.getSystemService(r2) // Catch: java.lang.Exception -> L2c
android.app.AlarmManager r1 = (android.app.AlarmManager) r1 // Catch: java.lang.Exception -> L2c
int r2 = android.os.Build.VERSION.SDK_INT // Catch: java.lang.Exception -> L2c
r3 = 33
r4 = 1
if (r2 < r3) goto L2e
boolean r2 = com.firemint.realracing.LocalNotificationsCenter$$ExternalSyntheticApiModelOutline0.m(r1) // Catch: java.lang.Exception -> L2c
if (r2 != 0) goto L2e
long r2 = r5.mDelayTime // Catch: java.lang.Exception -> L2c
r1.set(r4, r2, r0) // Catch: java.lang.Exception -> L2c
goto L4c
L2c:
r1 = move-exception
goto L34
L2e:
long r2 = r5.mDelayTime // Catch: java.lang.Exception -> L2c
r1.setExact(r4, r2, r0) // Catch: java.lang.Exception -> L2c
goto L4c
L34:
java.lang.StringBuilder r2 = new java.lang.StringBuilder
r2.<init>()
java.lang.String r3 = "showNotification: failed to set alarm: "
r2.append(r3)
java.lang.String r1 = r1.toString()
r2.append(r1)
java.lang.String r1 = r2.toString()
LogError(r1)
L4c:
int r1 = r5.mId
r2 = 2
if (r1 == r2) goto L56
java.util.HashMap<com.firemint.realracing.LocalNotificationsCenter$LocalNotification, android.app.PendingIntent> r1 = com.firemint.realracing.LocalNotificationsCenter.mNotificationsIntent
r1.put(r5, r0)
L56:
return
*/
throw new UnsupportedOperationException("Method not decompiled: com.firemint.realracing.LocalNotificationsCenter.showNotification(com.firemint.realracing.LocalNotificationsCenter$LocalNotification):void");
}
public static void CancelAllNotifications() {
LogInfo("CancelAllNotifications: start");
if (mNotificationsIntent.size() <= 0) {
LoadNotifications(false);
}
Context GetContext = AppProxy.GetContext();
((NotificationManager) GetContext.getSystemService("notification")).cancelAll();
Iterator<T> it = mNotificationsIntent.keySet().iterator();
while (it.hasNext()) {
CancelNotification((LocalNotification) it.next());
}
mNotificationsIntent.clear();
SaveNotifications();
LogInfo("CancelAllNotifications: end");
SerialiseNotificationsHelper.ClearAll(GetContext);
}
public static void CancelNotification(LocalNotification localNotification) {
Context GetContext = AppProxy.GetContext();
NotificationManager notificationManager = (NotificationManager) GetContext.getSystemService("notification");
AlarmManager alarmManager = (AlarmManager) GetContext.getSystemService(NotificationCompat.CATEGORY_ALARM);
PendingIntent pendingIntent = mNotificationsIntent.get(localNotification);
if (pendingIntent == null) {
pendingIntent = CreateNotificationIntent(localNotification);
}
try {
LogInfo("Cancelling notification: " + localNotification.mId);
notificationManager.cancel(localNotification.mId);
if (pendingIntent != null) {
alarmManager.cancel(pendingIntent);
pendingIntent.cancel();
}
} catch (Exception e) {
LogError("CancelNotification: failed to cancel alarm: " + e.toString());
}
}
public static void CancelNotification(int i, String str) {
Context GetContext = AppProxy.GetContext();
AlarmManager alarmManager = (AlarmManager) GetContext.getSystemService(NotificationCompat.CATEGORY_ALARM);
Intent intent = new Intent(GetContext, (Class<?>) LocalNotificationBroadcastReceiver.class);
intent.setType("type" + str);
PendingIntent broadcast = PendingIntent.getBroadcast(GetContext, 0, intent, 335544320);
try {
((NotificationManager) GetContext.getSystemService("notification")).cancel(i);
alarmManager.cancel(broadcast);
} catch (Exception e) {
LogError("CancelNotification: failed to cancel alarm: " + e.toString());
}
}
public static void SaveNotifications() {
SaveNotifications(mNotificationsIntent.keySet());
}
public static void SaveNotifications(Iterable<LocalNotification> iterable) {
LogInfo("SaveNotifications() Num:" + mNotificationsIntent.size());
try {
JSONArray jSONArray = new JSONArray();
Iterator<LocalNotification> it = iterable.iterator();
while (it.hasNext()) {
jSONArray.put(it.next().Serialise());
}
FileOutputStream fileOutputStream = new FileOutputStream(new File(Platform.getExternalStorageDir(AppProxy.GetContext()), FILENAME));
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(jSONArray.toString());
objectOutputStream.close();
fileOutputStream.close();
} catch (Exception e) {
LogError("SaveNotifications failed: " + e.toString());
}
}
public static void LoadNotifications(boolean z) {
for (LocalNotification localNotification : LoadNotifications()) {
if (z) {
showNotification(localNotification);
} else {
mNotificationsIntent.put(localNotification, null);
}
}
}
public static Iterable<LocalNotification> LoadNotifications() {
ArrayList arrayList = new ArrayList();
LogInfo("LoadNotifications()");
try {
File file = new File(Platform.getExternalStorageDir(AppProxy.GetContext()), FILENAME);
if (file.exists()) {
LogInfo("Found saved file. Loading information");
FileInputStream fileInputStream = new FileInputStream(file);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
String str = (String) objectInputStream.readObject();
objectInputStream.close();
fileInputStream.close();
JSONArray jSONArray = new JSONArray(str);
for (int i = 0; i < jSONArray.length(); i++) {
arrayList.add(new LocalNotification(jSONArray.getJSONObject(i)));
}
} else {
LogError("File not found");
}
} catch (Exception e) {
LogError("LoadNotifications failed: " + e.toString());
}
return arrayList;
}
}