mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-10-06 13:59:49 +02:00
Refactored all the other classes to support multi user. Clearing the app data is required before launching the app.
This commit is contained in:
@@ -1,29 +1,49 @@
|
||||
package SubredditDatabase;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import SubscribedSubredditDatabase.SubscribedSubredditData;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
@Entity(tableName = "subreddits")
|
||||
public class SubredditData extends SubscribedSubredditData {
|
||||
public class SubredditData {
|
||||
@PrimaryKey
|
||||
@NonNull
|
||||
@ColumnInfo(name = "id")
|
||||
private String id;
|
||||
@ColumnInfo(name = "name")
|
||||
private String name;
|
||||
@ColumnInfo(name = "icon")
|
||||
private String iconUrl;
|
||||
@ColumnInfo(name = "banner")
|
||||
private String bannerUrl;
|
||||
|
||||
@ColumnInfo(name = "description")
|
||||
private String description;
|
||||
|
||||
@ColumnInfo(name = "subscribers_count")
|
||||
private int nSubscribers;
|
||||
|
||||
public SubredditData(@NonNull String id, String name, String iconUrl, String bannerUrl, String description, int nSubscribers) {
|
||||
super(id, name, iconUrl);
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.iconUrl = iconUrl;
|
||||
this.bannerUrl = bannerUrl;
|
||||
this.description = description;
|
||||
this.nSubscribers = nSubscribers;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getIconUrl() {
|
||||
return iconUrl;
|
||||
}
|
||||
|
||||
public String getBannerUrl() {
|
||||
return bannerUrl;
|
||||
}
|
||||
|
@@ -1,17 +1,17 @@
|
||||
package SubredditDatabase;
|
||||
|
||||
import android.app.Application;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import android.os.AsyncTask;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
|
||||
public class SubredditRepository {
|
||||
private SubredditDao mSubredditDao;
|
||||
private LiveData<SubredditData> mSubredditLiveData;
|
||||
|
||||
SubredditRepository(Application application, String subredditName) {
|
||||
SubredditRoomDatabase db = SubredditRoomDatabase.getDatabase(application);
|
||||
mSubredditDao = db.subredditDao();
|
||||
|
||||
SubredditRepository(RedditDataRoomDatabase redditDataRoomDatabase, String subredditName) {
|
||||
mSubredditDao = redditDataRoomDatabase.subredditDao();
|
||||
mSubredditLiveData = mSubredditDao.getSubredditLiveDataByName(subredditName);
|
||||
}
|
||||
|
||||
|
@@ -1,26 +0,0 @@
|
||||
package SubredditDatabase;
|
||||
|
||||
import androidx.room.Database;
|
||||
import androidx.room.Room;
|
||||
import androidx.room.RoomDatabase;
|
||||
import android.content.Context;
|
||||
|
||||
@Database(entities = {SubredditData.class}, version = 1)
|
||||
public abstract class SubredditRoomDatabase extends RoomDatabase{
|
||||
private static SubredditRoomDatabase INSTANCE;
|
||||
|
||||
public abstract SubredditDao subredditDao();
|
||||
|
||||
public static SubredditRoomDatabase getDatabase(final Context context) {
|
||||
if(INSTANCE == null) {
|
||||
synchronized (SubredditRoomDatabase.class) {
|
||||
if(INSTANCE == null) {
|
||||
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
|
||||
SubredditRoomDatabase.class, "subreddits")
|
||||
.build();
|
||||
}
|
||||
}
|
||||
}
|
||||
return INSTANCE;
|
||||
}
|
||||
}
|
@@ -7,13 +7,15 @@ import androidx.lifecycle.ViewModel;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
|
||||
public class SubredditViewModel extends AndroidViewModel {
|
||||
private SubredditRepository mSubredditRepository;
|
||||
private LiveData<SubredditData> mSubredditLiveData;
|
||||
|
||||
public SubredditViewModel(Application application, String id) {
|
||||
public SubredditViewModel(Application application, RedditDataRoomDatabase redditDataRoomDatabase, String id) {
|
||||
super(application);
|
||||
mSubredditRepository = new SubredditRepository(application, id);
|
||||
mSubredditRepository = new SubredditRepository(redditDataRoomDatabase, id);
|
||||
mSubredditLiveData = mSubredditRepository.getSubredditLiveData();
|
||||
}
|
||||
|
||||
@@ -29,19 +31,20 @@ public class SubredditViewModel extends AndroidViewModel {
|
||||
|
||||
@NonNull
|
||||
private final Application mApplication;
|
||||
private final RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||
private final String mSubredditName;
|
||||
|
||||
private final String subredditName;
|
||||
|
||||
public Factory(@NonNull Application application, String subredditName) {
|
||||
public Factory(@NonNull Application application, RedditDataRoomDatabase redditDataRoomDatabase, String subredditname) {
|
||||
mApplication = application;
|
||||
this.subredditName = subredditName;
|
||||
mRedditDataRoomDatabase = redditDataRoomDatabase;
|
||||
mSubredditName = subredditname;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
|
||||
//noinspection unchecked
|
||||
return (T) new SubredditViewModel(mApplication, subredditName);
|
||||
return (T) new SubredditViewModel(mApplication, mRedditDataRoomDatabase, mSubredditName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user