Clean up story order pref storage. Will support easier changing of orders for new folder types (like Saved stories)

This commit is contained in:
dosiecki 2015-11-17 14:23:33 -08:00
parent fedba2870b
commit af5d082fb9
10 changed files with 42 additions and 112 deletions

View file

@ -45,16 +45,6 @@ public class AllSharedStoriesItemsList extends ItemsList {
return FeedSet.allSocialFeeds();
}
@Override
public StoryOrder getStoryOrder() {
return PrefsUtils.getStoryOrderForFolder(this, PrefConstants.ALL_SHARED_STORIES_FOLDER_NAME);
}
@Override
public void updateStoryOrderPreference(StoryOrder newValue) {
PrefsUtils.setStoryOrderForFolder(this, PrefConstants.ALL_SHARED_STORIES_FOLDER_NAME, newValue);
}
@Override
protected void updateReadFilterPreference(ReadFilter newValue) {
PrefsUtils.setReadFilterForFolder(this, PrefConstants.ALL_SHARED_STORIES_FOLDER_NAME, newValue);

View file

@ -60,16 +60,6 @@ public class AllStoriesItemsList extends ItemsList implements MarkAllReadDialogL
return true;
}
@Override
public StoryOrder getStoryOrder() {
return PrefsUtils.getStoryOrderForFolder(this, PrefConstants.ALL_STORIES_FOLDER_NAME);
}
@Override
public void updateStoryOrderPreference(StoryOrder newValue) {
PrefsUtils.setStoryOrderForFolder(this, PrefConstants.ALL_STORIES_FOLDER_NAME, newValue);
}
@Override
protected void updateReadFilterPreference(ReadFilter newValue) {
PrefsUtils.setReadFilterForFolder(this, PrefConstants.ALL_STORIES_FOLDER_NAME, newValue);

View file

@ -76,16 +76,6 @@ public class FeedItemsList extends ItemsList {
return true;
}
@Override
public StoryOrder getStoryOrder() {
return PrefsUtils.getStoryOrderForFeed(this, feed.feedId);
}
@Override
public void updateStoryOrderPreference(StoryOrder newValue) {
PrefsUtils.setStoryOrderForFeed(this, feed.feedId, newValue);
}
@Override
protected void updateReadFilterPreference(ReadFilter newValue) {
PrefsUtils.setReadFilterForFeed(this, feed.feedId, newValue);

View file

@ -65,16 +65,6 @@ public class FolderItemsList extends ItemsList implements MarkAllReadDialogListe
super.markItemListAsRead();
}
@Override
public StoryOrder getStoryOrder() {
return PrefsUtils.getStoryOrderForFolder(this, folderName);
}
@Override
public void updateStoryOrderPreference(StoryOrder newValue) {
PrefsUtils.setStoryOrderForFolder(this, folderName, newValue);
}
@Override
protected void updateReadFilterPreference(ReadFilter newValue) {
PrefsUtils.setReadFilterForFolder(this, folderName, newValue);

View file

@ -58,18 +58,6 @@ public class GlobalSharedStoriesItemsList extends ItemsList {
}
}
// Story order and read filter are fixed for global shared stories
@Override
public StoryOrder getStoryOrder() {
return StoryOrder.NEWEST;
}
@Override
public void updateStoryOrderPreference(StoryOrder newValue) {
// Not supported for global shared stories
}
@Override
protected void updateReadFilterPreference(ReadFilter newValue) {
// Not supported for global shared stories
@ -80,5 +68,4 @@ public class GlobalSharedStoriesItemsList extends ItemsList {
return ReadFilter.UNREAD;
}
}

View file

@ -123,8 +123,13 @@ public abstract class ItemsList extends NbActivity implements StoryOrderChangedL
return false;
}
// TODO: can all of these be replaced with PrefsUtils queries via FeedSet?
public abstract StoryOrder getStoryOrder();
public StoryOrder getStoryOrder() {
return PrefsUtils.getStoryOrder(this, fs);
}
protected void updateStoryOrderPreference(StoryOrder newOrder) {
PrefsUtils.updateStoryOrder(this, fs, newOrder);
}
protected abstract ReadFilter getReadFilter();
@ -168,8 +173,6 @@ public abstract class ItemsList extends NbActivity implements StoryOrderChangedL
itemListFragment.hasUpdated();
itemListFragment.scrollToTop();
}
public abstract void updateStoryOrderPreference(StoryOrder newValue);
@Override
public void readFilterChanged(ReadFilter newValue) {

View file

@ -58,17 +58,6 @@ public class ReadStoriesItemsList extends ItemsList {
}
}
@Override
public StoryOrder getStoryOrder() {
// dummy method. read stories don't have an order option
return StoryOrder.NEWEST;
}
@Override
public void updateStoryOrderPreference(StoryOrder newValue) {
// dummy method. read stories don't have an order option
}
@Override
protected void updateReadFilterPreference(ReadFilter newValue) {
// dummy method. read stories don't have an order option
@ -80,5 +69,4 @@ public class ReadStoriesItemsList extends ItemsList {
return ReadFilter.ALL;
}
}

View file

@ -58,19 +58,9 @@ public class SavedStoriesItemsList extends ItemsList {
}
}
// Note: the following four methods are required by our parent spec but are not
// relevant since saved stories have no read/unread status nor ordering.
// Note: the following two methods are required by our parent spec but are not
// relevant since saved stories have no read/unread status.
@Override
public StoryOrder getStoryOrder() {
return PrefsUtils.getStoryOrderForFolder(this, PrefConstants.ALL_STORIES_FOLDER_NAME);
}
@Override
public void updateStoryOrderPreference(StoryOrder newValue) {
PrefsUtils.setStoryOrderForFolder(this, PrefConstants.ALL_STORIES_FOLDER_NAME, newValue);
}
@Override
protected void updateReadFilterPreference(ReadFilter newValue) {
PrefsUtils.setReadFilterForFolder(this, PrefConstants.ALL_STORIES_FOLDER_NAME, newValue);

View file

@ -51,16 +51,6 @@ public class SocialFeedItemsList extends ItemsList {
return true;
}
@Override
public StoryOrder getStoryOrder() {
return PrefsUtils.getStoryOrderForFeed(this, socialFeed.userId);
}
@Override
public void updateStoryOrderPreference(StoryOrder newValue) {
PrefsUtils.setStoryOrderForFeed(this, socialFeed.userId, newValue);
}
@Override
protected void updateReadFilterPreference(ReadFilter newValue) {
PrefsUtils.setReadFilterForFeed(this, socialFeed.userId, newValue);

View file

@ -392,38 +392,50 @@ public class PrefsUtils {
public static StoryOrder getStoryOrder(Context context, FeedSet fs) {
if (fs.isAllNormal()) {
return getStoryOrderForFolder(context, PrefConstants.ALL_STORIES_FOLDER_NAME);
}
if (fs.getSingleFeed() != null) {
} else if (fs.getSingleFeed() != null) {
return getStoryOrderForFeed(context, fs.getSingleFeed());
}
if (fs.getMultipleFeeds() != null) {
} else if (fs.getMultipleFeeds() != null) {
return getStoryOrderForFolder(context, fs.getFolderName());
}
if (fs.isAllSocial()) {
} else if (fs.isAllSocial()) {
return getStoryOrderForFolder(context, PrefConstants.ALL_SHARED_STORIES_FOLDER_NAME);
}
if (fs.getSingleSocialFeed() != null) {
} else if (fs.getSingleSocialFeed() != null) {
return getStoryOrderForFeed(context, fs.getSingleSocialFeed().getKey());
}
if (fs.getMultipleSocialFeeds() != null) {
} else if (fs.getMultipleSocialFeeds() != null) {
throw new IllegalArgumentException( "requests for multiple social feeds not supported" );
}
if (fs.isAllRead()) {
} else if (fs.isAllRead()) {
// dummy value, not really used
return StoryOrder.NEWEST;
}
if (fs.isAllSaved()) {
} else if (fs.isAllSaved()) {
return getStoryOrderForFolder(context, PrefConstants.SAVED_STORIES_FOLDER_NAME);
}
if (fs.isGlobalShared()) {
} else if (fs.isGlobalShared()) {
return StoryOrder.NEWEST;
} else {
throw new IllegalArgumentException( "unknown type of feed set" );
}
}
throw new IllegalArgumentException( "unknown type of feed set" );
public static void updateStoryOrder(Context context, FeedSet fs, StoryOrder newOrder) {
if (fs.isAllNormal()) {
setStoryOrderForFolder(context, PrefConstants.ALL_STORIES_FOLDER_NAME, newOrder);
} else if (fs.getSingleFeed() != null) {
setStoryOrderForFeed(context, fs.getSingleFeed(), newOrder);
} else if (fs.getMultipleFeeds() != null) {
setStoryOrderForFolder(context, fs.getFolderName(), newOrder);
} else if (fs.isAllSocial()) {
setStoryOrderForFolder(context, PrefConstants.ALL_SHARED_STORIES_FOLDER_NAME, newOrder);
} else if (fs.getSingleSocialFeed() != null) {
setStoryOrderForFeed(context, fs.getSingleSocialFeed().getKey(), newOrder);
} else if (fs.getMultipleSocialFeeds() != null) {
throw new IllegalArgumentException( "multiple social feeds not supported" );
} else if (fs.isAllRead()) {
throw new IllegalArgumentException( "AllRead FeedSet type has fixed ordering" );
} else if (fs.isAllSaved()) {
setStoryOrderForFolder(context, PrefConstants.SAVED_STORIES_FOLDER_NAME, newOrder);
} else if (fs.isGlobalShared()) {
throw new IllegalArgumentException( "GlobalShared FeedSet type has fixed ordering" );
} else {
throw new IllegalArgumentException( "unknown type of feed set" );
}
}
public static ReadFilter getReadFilter(Context context, FeedSet fs) {