147 lines
6.1 KiB
Java
147 lines
6.1 KiB
Java
package com.discord.utilities.fcm;
|
|
|
|
import android.annotation.SuppressLint;
|
|
import com.discord.app.AppLog;
|
|
import com.discord.utilities.fcm.NotificationData;
|
|
import com.discord.utilities.logging.Logger;
|
|
import com.discord.utilities.persister.Persister;
|
|
import d0.z.d.m;
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
import java.util.HashMap;
|
|
import java.util.Iterator;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
import kotlin.Unit;
|
|
import kotlin.jvm.functions.Function1;
|
|
/* compiled from: NotificationCache.kt */
|
|
public final class NotificationCache {
|
|
public static final NotificationCache INSTANCE = new NotificationCache();
|
|
@SuppressLint({"StaticFieldLeak"})
|
|
private static final Persister<HashMap<String, NotificationData.DisplayPayload>> cache = new Persister<>("NOTIFICATION_BUNDLES_V4", new HashMap());
|
|
|
|
private NotificationCache() {
|
|
}
|
|
|
|
public final synchronized NotificationData.DisplayPayload get(long j) {
|
|
Object obj;
|
|
boolean z2;
|
|
NotificationData data;
|
|
Collection<NotificationData.DisplayPayload> values = cache.get().values();
|
|
m.checkNotNullExpressionValue(values, "cache.get().values");
|
|
Iterator<T> it = values.iterator();
|
|
while (true) {
|
|
if (!it.hasNext()) {
|
|
obj = null;
|
|
break;
|
|
}
|
|
obj = it.next();
|
|
NotificationData.DisplayPayload displayPayload = (NotificationData.DisplayPayload) obj;
|
|
if (displayPayload == null || (data = displayPayload.getData()) == null || data.getChannelId() != j) {
|
|
z2 = false;
|
|
continue;
|
|
} else {
|
|
z2 = true;
|
|
continue;
|
|
}
|
|
if (z2) {
|
|
break;
|
|
}
|
|
}
|
|
return (NotificationData.DisplayPayload) obj;
|
|
}
|
|
|
|
public final synchronized NotificationData.DisplayPayload getAndUpdate(NotificationData notificationData) {
|
|
NotificationData.DisplayPayload displayPayload;
|
|
m.checkNotNullParameter(notificationData, "data");
|
|
Persister<HashMap<String, NotificationData.DisplayPayload>> persister = cache;
|
|
HashMap<String, NotificationData.DisplayPayload> hashMap = new HashMap<>(persister.get());
|
|
displayPayload = hashMap.get(notificationData.getKey());
|
|
if (displayPayload == null) {
|
|
displayPayload = new NotificationData.DisplayPayload(notificationData);
|
|
hashMap.put(notificationData.getKey(), displayPayload);
|
|
}
|
|
NotificationData.DisplayPayload.update$default(displayPayload, notificationData, 0, 2, null);
|
|
persister.set(hashMap, true);
|
|
return displayPayload;
|
|
}
|
|
|
|
public final synchronized void remove(long j, boolean z2, Function1<? super Integer, Unit> function1) {
|
|
NotificationData data;
|
|
m.checkNotNullParameter(function1, "notificationRemovedCallback");
|
|
HashMap<String, NotificationData.DisplayPayload> hashMap = new HashMap<>(cache.get());
|
|
Iterator<NotificationData.DisplayPayload> it = hashMap.values().iterator();
|
|
boolean z3 = false;
|
|
while (it.hasNext()) {
|
|
NotificationData.DisplayPayload next = it.next();
|
|
if (!(next == null || (data = next.getData()) == null || data.getChannelId() != j)) {
|
|
if (!z2 || !next.getIgnoreNextClearForAck()) {
|
|
function1.invoke(Integer.valueOf(next.getId()));
|
|
it.remove();
|
|
} else {
|
|
next.setIgnoreNextClearForAck(false);
|
|
}
|
|
z3 = true;
|
|
}
|
|
}
|
|
cache.set(hashMap, z3);
|
|
}
|
|
|
|
public final synchronized void setIgnoreNextClearForAck(long j, boolean z2) {
|
|
boolean z3;
|
|
HashMap<String, NotificationData.DisplayPayload> hashMap = cache.get();
|
|
Set<Map.Entry<String, NotificationData.DisplayPayload>> entrySet = hashMap.entrySet();
|
|
m.checkNotNullExpressionValue(entrySet, "content.entries");
|
|
ArrayList arrayList = new ArrayList();
|
|
Iterator<T> it = entrySet.iterator();
|
|
while (it.hasNext()) {
|
|
Map.Entry entry = (Map.Entry) it.next();
|
|
String str = (String) entry.getKey();
|
|
if (str == null) {
|
|
str = "";
|
|
}
|
|
m.checkNotNullExpressionValue(str, "entry.key ?: \"\"");
|
|
NotificationData.DisplayPayload displayPayload = (NotificationData.DisplayPayload) entry.getValue();
|
|
if (displayPayload == null) {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("displayPayload value read from the ");
|
|
sb.append("NOTIFICATION_BUNDLES_V4 cache ");
|
|
sb.append("in " + INSTANCE.getClass().getSimpleName() + " is null ");
|
|
sb.append("for channelId: " + j + ' ');
|
|
StringBuilder sb2 = new StringBuilder();
|
|
sb2.append("and notification data type: ");
|
|
sb2.append(str);
|
|
sb.append(sb2.toString());
|
|
AppLog appLog = AppLog.g;
|
|
String sb3 = sb.toString();
|
|
m.checkNotNullExpressionValue(sb3, "warningMessage.toString()");
|
|
Logger.w$default(appLog, sb3, null, 2, null);
|
|
}
|
|
if (displayPayload != null) {
|
|
arrayList.add(displayPayload);
|
|
}
|
|
}
|
|
ArrayList<NotificationData.DisplayPayload> arrayList2 = new ArrayList();
|
|
Iterator it2 = arrayList.iterator();
|
|
while (true) {
|
|
boolean z4 = true;
|
|
z3 = false;
|
|
if (!it2.hasNext()) {
|
|
break;
|
|
}
|
|
Object next = it2.next();
|
|
NotificationData.DisplayPayload displayPayload2 = (NotificationData.DisplayPayload) next;
|
|
if (displayPayload2.getData().getChannelId() != j || displayPayload2.getIgnoreNextClearForAck() == z2) {
|
|
z4 = false;
|
|
}
|
|
if (z4) {
|
|
arrayList2.add(next);
|
|
}
|
|
}
|
|
for (NotificationData.DisplayPayload displayPayload3 : arrayList2) {
|
|
displayPayload3.setIgnoreNextClearForAck(z2);
|
|
z3 = true;
|
|
}
|
|
cache.set(hashMap, z3);
|
|
}
|
|
}
|