Convert ViewModelFactory to kotlin

This commit is contained in:
Paul Hawke 2024-11-29 10:39:13 -06:00
parent dac3657536
commit 4ddb36ac63
2 changed files with 26 additions and 41 deletions

View file

@ -1,41 +0,0 @@
package fr.free.nrw.commons.profile.leaderboard;
import androidx.annotation.NonNull;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import fr.free.nrw.commons.auth.SessionManager;
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient;
import javax.inject.Inject;
/**
* This class extends the ViewModelProvider.Factory and creates a ViewModelFactory class
* for leaderboardListViewModel
*/
public class ViewModelFactory implements ViewModelProvider.Factory {
private OkHttpJsonApiClient okHttpJsonApiClient;
private SessionManager sessionManager;
@Inject
public ViewModelFactory(OkHttpJsonApiClient okHttpJsonApiClient, SessionManager sessionManager) {
this.okHttpJsonApiClient = okHttpJsonApiClient;
this.sessionManager = sessionManager;
}
/**
* Creats a new LeaderboardListViewModel
* @param modelClass
* @param <T>
* @return
*/
@NonNull
@Override
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
if (modelClass.isAssignableFrom(LeaderboardListViewModel.class)) {
return (T) new LeaderboardListViewModel(okHttpJsonApiClient, sessionManager);
}
throw new IllegalArgumentException("Unknown class name");
}
}

View file

@ -0,0 +1,26 @@
package fr.free.nrw.commons.profile.leaderboard
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import fr.free.nrw.commons.auth.SessionManager
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient
import javax.inject.Inject
/**
* This class extends the ViewModelProvider.Factory and creates a ViewModelFactory class
* for leaderboardListViewModel
*/
class ViewModelFactory @Inject constructor(
private val okHttpJsonApiClient: OkHttpJsonApiClient,
private val sessionManager: SessionManager
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T =
if (modelClass.isAssignableFrom(LeaderboardListViewModel::class.java)) {
LeaderboardListViewModel(okHttpJsonApiClient, sessionManager) as T
} else {
throw IllegalArgumentException("Unknown class name")
}
}