diff options
author | Alex Ning <chineseperson5@gmail.com> | 2019-08-07 15:28:02 +0000 |
---|---|---|
committer | Alex Ning <chineseperson5@gmail.com> | 2019-08-07 15:28:02 +0000 |
commit | 425bc857cfe094d8b9be5815030ef3e6b0cf173d (patch) | |
tree | f1e4240531040bb20c9e840c123f03ce28a5f94e /app/src/main/java/User | |
parent | 7f2bc01180c284154fb69976122016c4638e9973 (diff) | |
download | infinity-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.java | 25 | ||||
-rw-r--r-- | app/src/main/java/User/UserRepository.java | 11 | ||||
-rw-r--r-- | app/src/main/java/User/UserRoomDatabase.java | 26 | ||||
-rw-r--r-- | app/src/main/java/User/UserViewModel.java | 17 |
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); } } } |