New feature: Subscribe or unsubscribe to a subreddit. Allow clear text traffic in Android Pie. Rewrite some code in lambda.

This commit is contained in:
Alex Ning
2019-01-07 19:03:49 +08:00
parent 9d729579bf
commit 38be0ba01f
23 changed files with 699 additions and 634 deletions

View File

@@ -14,11 +14,8 @@ public interface SubredditDao {
@Query("DELETE FROM subreddits")
void deleteAllSubreddits();
@Query("SELECT * from subreddits WHERE id = :id")
LiveData<SubredditData> getSubredditLiveDataById(String id);
@Query("SELECT * from subreddits WHERE name = :namePrefixed")
LiveData<SubredditData> getSubredditLiveDataByNamePrefixed(String namePrefixed);
LiveData<SubredditData> getSubredditLiveDataByName(String namePrefixed);
@Query("SELECT * from subreddits WHERE name = :namePrefixed LIMIT 1")
SubredditData getSubredditData(String namePrefixed);

View File

@@ -2,23 +2,13 @@ package SubredditDatabase;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
import SubscribedSubredditDatabase.SubscribedSubredditData;
@Entity(tableName = "subreddits")
public class SubredditData {
@PrimaryKey
@NonNull
@ColumnInfo(name = "id")
private String id;
@ColumnInfo(name = "name")
private String name;
@ColumnInfo(name = "icon_url")
private String iconUrl;
@ColumnInfo(name = "banner_url")
public class SubredditData extends SubscribedSubredditData {
@ColumnInfo(name = "banner")
private String bannerUrl;
@ColumnInfo(name = "description")
@@ -28,27 +18,12 @@ public class SubredditData {
private int nSubscribers;
public SubredditData(@NonNull String id, String name, String iconUrl, String bannerUrl, String description, int nSubscribers) {
this.id = id;
this.name = name;
this.iconUrl = iconUrl;
super(id, name, 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;
}

View File

@@ -8,14 +8,11 @@ public class SubredditRepository {
private SubredditDao mSubredditDao;
private LiveData<SubredditData> mSubredditLiveData;
SubredditRepository(Application application, String value, boolean isId) {
SubredditRepository(Application application, String subredditName) {
SubredditRoomDatabase db = SubredditRoomDatabase.getDatabase(application);
mSubredditDao = db.subredditDao();
if(isId) {
mSubredditLiveData = mSubredditDao.getSubredditLiveDataById(value);
} else {
mSubredditLiveData = mSubredditDao.getSubredditLiveDataByNamePrefixed(value);
}
mSubredditLiveData = mSubredditDao.getSubredditLiveDataByName(subredditName);
}
LiveData<SubredditData> getSubredditLiveData() {

View File

@@ -11,9 +11,9 @@ public class SubredditViewModel extends AndroidViewModel {
private SubredditRepository mSubredditRepository;
private LiveData<SubredditData> mSubredditLiveData;
SubredditViewModel(Application application, String id, boolean isId) {
SubredditViewModel(Application application, String id) {
super(application);
mSubredditRepository = new SubredditRepository(application, id, isId);
mSubredditRepository = new SubredditRepository(application, id);
mSubredditLiveData = mSubredditRepository.getSubredditLiveData();
}
@@ -30,19 +30,17 @@ public class SubredditViewModel extends AndroidViewModel {
@NonNull
private final Application mApplication;
private final String value;
private final boolean isId;
private final String subredditName;
public Factory(@NonNull Application application, String value, boolean isId) {
public Factory(@NonNull Application application, String subredditName) {
mApplication = application;
this.value = value;
this.isId = isId;
this.subredditName = subredditName;
}
@Override
public <T extends ViewModel> T create(Class<T> modelClass) {
//noinspection unchecked
return (T) new SubredditViewModel(mApplication, value, isId);
return (T) new SubredditViewModel(mApplication, subredditName);
}
}
}