discord-jadx/app/src/main/java/androidx/lifecycle/ViewModelProvider.java

134 lines
5.3 KiB
Java

package androidx.lifecycle;
import android.app.Application;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import java.lang.reflect.InvocationTargetException;
public class ViewModelProvider {
private static final String DEFAULT_KEY = "androidx.lifecycle.ViewModelProvider.DefaultKey";
private final Factory mFactory;
private final ViewModelStore mViewModelStore;
public static class AndroidViewModelFactory extends NewInstanceFactory {
private static AndroidViewModelFactory sInstance;
private Application mApplication;
public AndroidViewModelFactory(@NonNull Application application) {
this.mApplication = application;
}
@NonNull
public static AndroidViewModelFactory getInstance(@NonNull Application application) {
if (sInstance == null) {
sInstance = new AndroidViewModelFactory(application);
}
return sInstance;
}
@Override // androidx.lifecycle.ViewModelProvider.NewInstanceFactory, androidx.lifecycle.ViewModelProvider.Factory
@NonNull
public <T extends ViewModel> T create(@NonNull Class<T> cls) {
if (!AndroidViewModel.class.isAssignableFrom(cls)) {
return (T) super.create(cls);
}
try {
return cls.getConstructor(Application.class).newInstance(this.mApplication);
} catch (NoSuchMethodException e) {
throw new RuntimeException("Cannot create an instance of " + cls, e);
} catch (IllegalAccessException e2) {
throw new RuntimeException("Cannot create an instance of " + cls, e2);
} catch (InstantiationException e3) {
throw new RuntimeException("Cannot create an instance of " + cls, e3);
} catch (InvocationTargetException e4) {
throw new RuntimeException("Cannot create an instance of " + cls, e4);
}
}
}
public interface Factory {
@NonNull
<T extends ViewModel> T create(@NonNull Class<T> cls);
}
public static abstract class KeyedFactory extends OnRequeryFactory implements Factory {
@Override // androidx.lifecycle.ViewModelProvider.Factory
@NonNull
public <T extends ViewModel> T create(@NonNull Class<T> cls) {
throw new UnsupportedOperationException("create(String, Class<?>) must be called on implementaions of KeyedFactory");
}
@NonNull
public abstract <T extends ViewModel> T create(@NonNull String str, @NonNull Class<T> cls);
}
public static class NewInstanceFactory implements Factory {
private static NewInstanceFactory sInstance;
@NonNull
public static NewInstanceFactory getInstance() {
if (sInstance == null) {
sInstance = new NewInstanceFactory();
}
return sInstance;
}
@Override // androidx.lifecycle.ViewModelProvider.Factory
@NonNull
public <T extends ViewModel> T create(@NonNull Class<T> cls) {
try {
return cls.newInstance();
} catch (InstantiationException e) {
throw new RuntimeException("Cannot create an instance of " + cls, e);
} catch (IllegalAccessException e2) {
throw new RuntimeException("Cannot create an instance of " + cls, e2);
}
}
}
public static class OnRequeryFactory {
public void onRequery(@NonNull ViewModel viewModel) {
}
}
public ViewModelProvider(@NonNull ViewModelStore viewModelStore, @NonNull Factory factory) {
this.mFactory = factory;
this.mViewModelStore = viewModelStore;
}
/* JADX INFO: this call moved to the top of the method (can break code semantics) */
public ViewModelProvider(@NonNull ViewModelStoreOwner viewModelStoreOwner) {
this(viewModelStoreOwner.getViewModelStore(), viewModelStoreOwner instanceof HasDefaultViewModelProviderFactory ? ((HasDefaultViewModelProviderFactory) viewModelStoreOwner).getDefaultViewModelProviderFactory() : NewInstanceFactory.getInstance());
}
public ViewModelProvider(@NonNull ViewModelStoreOwner viewModelStoreOwner, @NonNull Factory factory) {
this(viewModelStoreOwner.getViewModelStore(), factory);
}
@NonNull
@MainThread
public <T extends ViewModel> T get(@NonNull Class<T> cls) {
String canonicalName = cls.getCanonicalName();
if (canonicalName != null) {
return (T) get("androidx.lifecycle.ViewModelProvider.DefaultKey:" + canonicalName, cls);
}
throw new IllegalArgumentException("Local and anonymous classes can not be ViewModels");
}
@NonNull
@MainThread
public <T extends ViewModel> T get(@NonNull String str, @NonNull Class<T> cls) {
T t = (T) this.mViewModelStore.get(str);
if (cls.isInstance(t)) {
Factory factory = this.mFactory;
if (factory instanceof OnRequeryFactory) {
((OnRequeryFactory) factory).onRequery(t);
}
return t;
}
Factory factory2 = this.mFactory;
T t2 = factory2 instanceof KeyedFactory ? (T) ((KeyedFactory) factory2).create(str, cls) : (T) factory2.create(cls);
this.mViewModelStore.put(str, t2);
return t2;
}
}