discord-jadx/app/src/main/java/com/discord/utilities/mg_recycler/DragAndDropAdapter.java

118 lines
4.1 KiB
Java

package com.discord.utilities.mg_recycler;
import androidx.recyclerview.widget.RecyclerView;
import com.discord.utilities.mg_recycler.DragAndDropAdapter.Payload;
import com.discord.utilities.mg_recycler.DragAndDropHelper;
import d0.d0.f;
import d0.t.c0;
import d0.t.n;
import d0.t.o;
import d0.z.d.m;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import kotlin.ranges.IntRange;
/* compiled from: DragAndDropAdapter.kt */
public abstract class DragAndDropAdapter<T extends Payload> extends MGRecyclerAdapterSimple<T> implements DragAndDropHelper.Adapter {
private List<T> dataCopy = new ArrayList();
private Map<String, Integer> origPositions = new HashMap();
/* compiled from: DragAndDropAdapter.kt */
public interface Payload extends MGRecyclerDataPayload {
int getPosition();
}
/* JADX INFO: super call moved to the top of the method (can break code semantics) */
public DragAndDropAdapter(RecyclerView recyclerView) {
super(recyclerView, false);
m.checkNotNullParameter(recyclerView, "recyclerView");
}
private final void computeOriginalPositions(List<? extends T> list) {
this.origPositions.clear();
IntRange indices = n.getIndices(list);
ArrayList<Payload> arrayList = new ArrayList(o.collectionSizeOrDefault(indices, 10));
Iterator<Integer> it = indices.iterator();
while (it.hasNext()) {
arrayList.add((Payload) list.get(((c0) it).nextInt()));
}
for (Payload payload : arrayList) {
this.origPositions.put(payload.getKey(), Integer.valueOf(payload.getPosition()));
}
}
/* JADX DEBUG: Multi-variable search result rejected for r2v0, resolved type: java.util.List<? extends T extends com.discord.utilities.mg_recycler.DragAndDropAdapter$Payload> */
/* JADX WARN: Multi-variable type inference failed */
private final void setAndCopyData(List<? extends T> list) {
super.setData(list);
this.dataCopy = new ArrayList(list);
}
public Map<String, Integer> computeChangedPositions() {
HashMap hashMap = new HashMap();
int size = this.dataCopy.size();
for (int i = 0; i < size; i++) {
String key = this.dataCopy.get(i).getKey();
Integer num = this.origPositions.get(key);
if (num == null || i != num.intValue()) {
hashMap.put(key, Integer.valueOf(i));
}
}
return hashMap;
}
public final List<T> getDataCopy() {
return this.dataCopy;
}
public final Map<String, Integer> getOrigPositions() {
return this.origPositions;
}
public final boolean isMoveWithinBounds(int i, int i2) {
if (this.dataCopy.isEmpty()) {
return false;
}
IntRange until = f.until(0, this.dataCopy.size());
return until.contains(i) && until.contains(i2);
}
@Override // com.discord.utilities.mg_recycler.DragAndDropHelper.Adapter
public void onDrop() {
if (!this.dataCopy.isEmpty()) {
Map<String, Integer> computeChangedPositions = computeChangedPositions();
if (!computeChangedPositions.isEmpty()) {
onNewPositions(computeChangedPositions);
}
}
}
@Override // com.discord.utilities.mg_recycler.DragAndDropHelper.Adapter
public void onItemMove(int i, int i2) {
this.dataCopy.remove(i);
this.dataCopy.add(i2, this.dataCopy.get(i));
setAndCopyData(this.dataCopy);
}
public abstract void onNewPositions(Map<String, Integer> map);
@Override // com.discord.utilities.mg_recycler.MGRecyclerAdapterSimple
public void setData(List<? extends T> list) {
m.checkNotNullParameter(list, "data");
computeOriginalPositions(list);
setAndCopyData(list);
}
public final void setDataCopy(List<T> list) {
m.checkNotNullParameter(list, "<set-?>");
this.dataCopy = list;
}
public final void setOrigPositions(Map<String, Integer> map) {
m.checkNotNullParameter(map, "<set-?>");
this.origPositions = map;
}
}