diff --git a/rtv/page.py b/rtv/page.py index c6efa38..f8ccf46 100644 --- a/rtv/page.py +++ b/rtv/page.py @@ -1,6 +1,8 @@ import curses -from .utils import Color, Symbol +import praw + +from .utils import Color, Symbol, display_message class Navigator(object): """ @@ -132,28 +134,32 @@ class BasePage(object): def upvote(self): data = self.content.get(self.nav.absolute_index) - if 'likes' not in data: - curses.flash() - - elif data['likes']: - data['object'].clear_vote() - data['likes'] = None - else: - data['object'].upvote() - data['likes'] = True + try: + if 'likes' not in data: + pass + elif data['likes']: + data['object'].clear_vote() + data['likes'] = None + else: + data['object'].upvote() + data['likes'] = True + except praw.errors.LoginOrScopeRequired: + display_message(self.stdscr, ['Login to vote']) def downvote(self): data = self.content.get(self.nav.absolute_index) - if 'likes' not in data: - curses.flash() - - if data['likes'] is False: - data['object'].clear_vote() - data['likes'] = None - else: - data['object'].downvote() - data['likes'] = False + try: + if 'likes' not in data: + pass + if data['likes'] is False: + data['object'].clear_vote() + data['likes'] = None + else: + data['object'].downvote() + data['likes'] = False + except praw.errors.LoginOrScopeRequired: + display_message(self.stdscr, ['Login to vote']) def draw(self): diff --git a/rtv/utils.py b/rtv/utils.py index df22de6..3309415 100644 --- a/rtv/utils.py +++ b/rtv/utils.py @@ -15,7 +15,8 @@ from .errors import EscapePressed HELP = """ Global Commands `UP/DOWN` or `j/k` : Scroll to the prev/next item - `r` or `F5` : Refresh the current page + `a/z` : Upvote/downvote the selected item + `r` : Refresh the current page `q` : Quit the program `o` : Open the selected item in the default web browser `?` : Show this help message @@ -315,4 +316,4 @@ def curses_session(): stdscr.keypad(0) curses.echo() curses.nocbreak() - curses.endwin() \ No newline at end of file + curses.endwin()