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

View File

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

View File

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