Skip to content
Snippets Groups Projects
Commit 52405bb9 authored by Johann Jacobsohn's avatar Johann Jacobsohn
Browse files

debounce search by doi

parent 95f35397
No related branches found
No related tags found
No related merge requests found
......@@ -251,7 +251,7 @@ class Papersurfer:
"""Open submit paper dialog."""
self._pile = urwid.Pile(
[
PostDialog(self.mtm, close=self.h_close_dialog)
PostDialog(self.mtm, self.h_close_dialog, self.mainloop)
]
)
self._over = urwid.Overlay(
......@@ -322,7 +322,10 @@ class PostDialog(urwid.WidgetWrap):
[Submit] [Close]
"""
def __init__(self, mattermost, close):
def __init__(self, mattermost, close, loop):
self._loop = loop
self.alarm_handle = None
self.doi = None
self.msg = None
self.mattermost = mattermost
......@@ -371,11 +374,18 @@ class PostDialog(urwid.WidgetWrap):
return msg
def h_input(self, _, doi):
"""Handle doi input field."""
self.doi_result.set_text("... loading ...")
"""Handle doi input field and debounce."""
self.doi_result.set_text("")
self.doi = None
self.msg = None
self._loop.remove_alarm(self.alarm_handle)
self.alarm_handle = self._loop.set_alarm_in(.5, self.search_doi, doi)
def search_doi(self, _loop, doi):
"""Trigger search for paper ref by doi and update ui."""
self.doi_result.set_text("... loading ...")
self._loop.draw_screen()
if Doi().extract_doi(doi):
paper = Doi().get_info(doi)
if paper:
......@@ -386,6 +396,8 @@ class PostDialog(urwid.WidgetWrap):
self.doi_result.set_text(self.create_mgs(paper))
self.doi = doi
self.msg = self.create_mgs(paper)
else:
self.doi_result.set_text("Doi not found.")
return
self.doi_result.set_text("invalid doi")
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment