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,13 +1,18 @@
|
||||
package User;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import SubscribedUserDatabase.SubscribedUserData;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
@Entity(tableName = "users")
|
||||
public class UserData extends SubscribedUserData {
|
||||
public class UserData {
|
||||
@PrimaryKey
|
||||
@NonNull
|
||||
@ColumnInfo(name = "name")
|
||||
private String name;
|
||||
@ColumnInfo(name = "icon")
|
||||
private String iconUrl;
|
||||
@ColumnInfo(name = "banner")
|
||||
private String banner;
|
||||
@ColumnInfo(name = "karma")
|
||||
@@ -20,7 +25,8 @@ public class UserData extends SubscribedUserData {
|
||||
private boolean canBeFollowed;
|
||||
|
||||
public UserData(@NonNull String name, String iconUrl, String banner, int karma, boolean isGold, boolean isFriend, boolean canBeFollowed) {
|
||||
super(name, iconUrl);
|
||||
this.name = name;
|
||||
this.iconUrl = iconUrl;
|
||||
this.banner = banner;
|
||||
this.karma = karma;
|
||||
this.isGold = isGold;
|
||||
@@ -28,6 +34,15 @@ public class UserData extends SubscribedUserData {
|
||||
this.canBeFollowed = canBeFollowed;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getIconUrl() {
|
||||
return iconUrl;
|
||||
}
|
||||
|
||||
public String getBanner() {
|
||||
return banner;
|
||||
}
|
||||
|
@@ -1,16 +1,17 @@
|
||||
package User;
|
||||
|
||||
import android.app.Application;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import android.os.AsyncTask;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
|
||||
public class UserRepository {
|
||||
private UserDao mUserDao;
|
||||
private LiveData<UserData> mUserLiveData;
|
||||
|
||||
UserRepository(Application application, String userName) {
|
||||
mUserDao = UserRoomDatabase.getDatabase(application).userDao();
|
||||
|
||||
UserRepository(RedditDataRoomDatabase redditDataRoomDatabase, String userName) {
|
||||
mUserDao = redditDataRoomDatabase.userDao();
|
||||
mUserLiveData = mUserDao.getUserLiveData(userName);
|
||||
}
|
||||
|
||||
|
@@ -1,26 +0,0 @@
|
||||
package User;
|
||||
|
||||
import androidx.room.Database;
|
||||
import androidx.room.Room;
|
||||
import androidx.room.RoomDatabase;
|
||||
import android.content.Context;
|
||||
|
||||
@Database(entities = {UserData.class}, version = 1)
|
||||
public abstract class UserRoomDatabase extends RoomDatabase {
|
||||
private static UserRoomDatabase INSTANCE;
|
||||
|
||||
public abstract UserDao userDao();
|
||||
|
||||
public static UserRoomDatabase getDatabase(final Context context) {
|
||||
if(INSTANCE == null) {
|
||||
synchronized (UserRoomDatabase.class) {
|
||||
if(INSTANCE == null) {
|
||||
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
|
||||
UserRoomDatabase.class, "users")
|
||||
.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 UserViewModel extends AndroidViewModel {
|
||||
private UserRepository mSubredditRepository;
|
||||
private LiveData<UserData> mUserLiveData;
|
||||
|
||||
public UserViewModel(Application application, String id) {
|
||||
public UserViewModel(Application application, RedditDataRoomDatabase redditDataRoomDatabase, String id) {
|
||||
super(application);
|
||||
mSubredditRepository = new UserRepository(application, id);
|
||||
mSubredditRepository = new UserRepository(redditDataRoomDatabase, id);
|
||||
mUserLiveData = mSubredditRepository.getUserLiveData();
|
||||
}
|
||||
|
||||
@@ -29,18 +31,19 @@ public class UserViewModel extends AndroidViewModel {
|
||||
|
||||
@NonNull
|
||||
private final Application mApplication;
|
||||
private final RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||
private final String mUsername;
|
||||
|
||||
private final String userName;
|
||||
|
||||
public Factory(@NonNull Application application, String userName) {
|
||||
public Factory(@NonNull Application application, RedditDataRoomDatabase redditDataRoomDatabase, String username) {
|
||||
mApplication = application;
|
||||
this.userName = userName;
|
||||
mRedditDataRoomDatabase = redditDataRoomDatabase;
|
||||
mUsername = username;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends ViewModel> T create(Class<T> modelClass) {
|
||||
//noinspection unchecked
|
||||
return (T) new UserViewModel(mApplication, userName);
|
||||
return (T) new UserViewModel(mApplication, mRedditDataRoomDatabase, mUsername);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user