No longer leave submission/subscription page when entering an invalid subreddit.

This commit is contained in:
Michael Lazar
2016-08-05 23:06:15 -07:00
parent 6328407c32
commit 66854522ff
3 changed files with 42 additions and 25 deletions

View File

@@ -5,7 +5,7 @@ import time
import curses
from . import docs
from .content import SubmissionContent
from .content import SubmissionContent, SubredditContent
from .page import Page, PageController, logged_in
from .objects import Navigator, Color, Command
from .exceptions import TemporaryFileError
@@ -27,7 +27,7 @@ class SubmissionPage(Page):
self.content = SubmissionContent(submission, term.loader)
# Start at the submission post, which is indexed as -1
self.nav = Navigator(self.content.get, page_index=-1)
self.subreddit_name = None
self.selected_subreddit = None
@SubmissionController.register(Command('SUBMISSION_TOGGLE_COMMENT'))
def toggle_comment(self):
@@ -74,7 +74,11 @@ class SubmissionPage(Page):
name = self.term.prompt_input('Enter page: /')
if name is not None:
self.subreddit_name = name
with self.term.loader('Loading page'):
content = SubredditContent.from_name(
self.reddit, name, self.term.loader)
if not self.term.loader.exception:
self.selected_subreddit = content
self.active = False
@SubmissionController.register(Command('SUBMISSION_OPEN_IN_BROWSER'))

View File

@@ -30,7 +30,7 @@ class SubredditPage(Page):
self.controller = SubredditController(self, keymap=config.keymap)
self.content = SubredditContent.from_name(reddit, name, term.loader)
self.nav = Navigator(self.content.get)
self._toggled_subreddit = None
self.toggled_subreddit = None
@SubredditController.register(Command('REFRESH'))
def refresh_content(self, order=None, name=None):
@@ -83,9 +83,9 @@ class SubredditPage(Page):
if self.content.name != '/r/front':
target = '/r/front'
self._toggled_subreddit = self.content.name
self.toggled_subreddit = self.content.name
else:
target = self._toggled_subreddit
target = self.toggled_subreddit
# target still may be empty string if this command hasn't yet been used
if target is not None:
@@ -111,9 +111,9 @@ class SubredditPage(Page):
if data.get('url_type') == 'selfpost':
self.config.history.add(data['url_full'])
if page.subreddit_name is not None:
self.refresh_content(order='ignore',
name=page.subreddit_name)
if page.selected_subreddit is not None:
self.content = page.selected_subreddit
self.nav = Navigator(self.content.get)
else:
self.refresh_content()
@@ -173,9 +173,9 @@ class SubredditPage(Page):
page.loop()
if page.subreddit_name is not None:
self.refresh_content(order='ignore',
name=page.subreddit_name)
if page.selected_subreddit is not None:
self.content = page.selected_subreddit
self.nav = Navigator(self.content.get)
else:
self.refresh_content()
@@ -194,9 +194,11 @@ class SubredditPage(Page):
# When the user has chosen a subreddit in the subscriptions list,
# refresh content with the selected subreddit
if page.subreddit_name is not None:
self.refresh_content(order='ignore',
name=page.subreddit_name)
if page.selected_subreddit is not None:
self.content = page.selected_subreddit
self.nav = Navigator(self.content.get)
else:
self.refresh_content()
@SubredditController.register(Command('SUBREDDIT_OPEN_MULTIREDDITS'))
@logged_in
@@ -213,9 +215,11 @@ class SubredditPage(Page):
# When the user has chosen a subreddit in the subscriptions list,
# refresh content with the selected subreddit
if page.subreddit_name is not None:
self.refresh_content(order='ignore',
name=page.subreddit_name)
if page.selected_subreddit is not None:
self.content = page.selected_subreddit
self.nav = Navigator(self.content.get)
else:
self.refresh_content()
def _draw_item(self, win, data, inverted):

View File

@@ -4,7 +4,7 @@ from __future__ import unicode_literals
import curses
from .page import Page, PageController
from .content import SubscriptionContent
from .content import SubscriptionContent, SubredditContent
from .objects import Color, Navigator, Command
@@ -22,7 +22,7 @@ class SubscriptionPage(Page):
reddit, term.loader, content_type)
self.nav = Navigator(self.content.get)
self.content_type = content_type
self.subreddit_name = None
self.selected_subreddit = None
@SubscriptionController.register(Command('REFRESH'))
def refresh_content(self, order=None, name=None):
@@ -45,14 +45,23 @@ class SubscriptionPage(Page):
name = self.term.prompt_input('Enter page: /')
if name is not None:
self.subreddit_name = name
with self.term.loader('Loading page'):
content = SubredditContent.from_name(
self.reddit, name, self.term.loader)
if not self.term.loader.exception:
self.selected_subreddit = content
self.active = False
@SubscriptionController.register(Command('SUBSCRIPTION_SELECT'))
def select_subreddit(self):
"Store the selected subreddit and return to the subreddit page"
self.subreddit_name = self.content.get(self.nav.absolute_index)['name']
name = self.content.get(self.nav.absolute_index)['name']
with self.term.loader('Loading page'):
content = SubredditContent.from_name(
self.reddit, name, self.term.loader)
if not self.term.loader.exception:
self.selected_subreddit = content
self.active = False
@SubscriptionController.register(Command('SUBSCRIPTION_EXIT'))