aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/User
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2019-08-07 15:28:02 +0000
committerAlex Ning <chineseperson5@gmail.com>2019-08-07 15:28:02 +0000
commit425bc857cfe094d8b9be5815030ef3e6b0cf173d (patch)
treef1e4240531040bb20c9e840c123f03ce28a5f94e /app/src/main/java/User
parent7f2bc01180c284154fb69976122016c4638e9973 (diff)
downloadinfinity-for-reddit-425bc857cfe094d8b9be5815030ef3e6b0cf173d.tar
infinity-for-reddit-425bc857cfe094d8b9be5815030ef3e6b0cf173d.tar.gz
infinity-for-reddit-425bc857cfe094d8b9be5815030ef3e6b0cf173d.tar.bz2
infinity-for-reddit-425bc857cfe094d8b9be5815030ef3e6b0cf173d.tar.lz
infinity-for-reddit-425bc857cfe094d8b9be5815030ef3e6b0cf173d.tar.xz
infinity-for-reddit-425bc857cfe094d8b9be5815030ef3e6b0cf173d.tar.zst
infinity-for-reddit-425bc857cfe094d8b9be5815030ef3e6b0cf173d.zip
Refactored all the other classes to support multi user. Clearing the app data is required before launching the app.
Diffstat (limited to 'app/src/main/java/User')
-rw-r--r--app/src/main/java/User/UserData.java25
-rw-r--r--app/src/main/java/User/UserRepository.java11
-rw-r--r--app/src/main/java/User/UserRoomDatabase.java26
-rw-r--r--app/src/main/java/User/UserViewModel.java17
4 files changed, 36 insertions, 43 deletions
diff --git a/app/src/main/java/User/UserData.java b/app/src/main/java/User/UserData.java
index c334c289..b3f71029 100644
--- a/app/src/main/java/User/UserData.java
+++ b/app/src/main/java/User/UserData.java
@@ -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;
}
diff --git a/app/src/main/java/User/UserRepository.java b/app/src/main/java/User/UserRepository.java
index b9e36ea4..d781a694 100644
--- a/app/src/main/java/User/UserRepository.java
+++ b/app/src/main/java/User/UserRepository.java
@@ -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);
}
diff --git a/app/src/main/java/User/UserRoomDatabase.java b/app/src/main/java/User/UserRoomDatabase.java
deleted file mode 100644
index 7faa7e2c..00000000
--- a/app/src/main/java/User/UserRoomDatabase.java
+++ /dev/null
@@ -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;
- }
-}
diff --git a/app/src/main/java/User/UserViewModel.java b/app/src/main/java/User/UserViewModel.java
index aab98645..2c746cad 100644
--- a/app/src/main/java/User/UserViewModel.java
+++ b/app/src/main/java/User/UserViewModel.java
@@ -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);
}
}
}