sidebar: small bugfix and linting

This commit is contained in:
Emendir
2025-11-28 18:46:14 +01:00
parent 33145d2a2f
commit fc35214d41

View File

@@ -1,4 +1,5 @@
# side_bar.py
from threading import Lock
from threading import Thread
from time import sleep
from enum import Enum
@@ -20,7 +21,7 @@ Builder.load_file(KV_FILE)
class AddCorrespondencePopupView(Popup):
def __init__(self, **kwargs):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.text_input_txbx = self.ids.text_input_txbx
self.join_conv_btn = self.ids.join_conv_btn
@@ -28,24 +29,22 @@ class AddCorrespondencePopupView(Popup):
self.scroll_view = self.ids.scroll_view
self.scroll_layout = self.ids.scroll_layout
from threading import Lock
class AddCorrespondencePopup(AddCorrespondencePopupView):
def __init__(self, main, profile: Profile, **kwargs):
def __init__(self, main, profile: Profile, **kwargs):
super().__init__(**kwargs)
self.main = main
self.profile = profile
self.join_conv_btn.bind(on_press=self.join_correspondence)
self.create_conv_btn.bind(on_press=self.create_correspondence)
self.side_bar_buttons_lock = Lock()
def create_correspondence(self, instance=None):
if self.side_bar_buttons_lock.locked():
return
with self.side_bar_buttons_lock:
task = CreateCorrespondenceTask(
self.main, self.profile, self
)
task = CreateCorrespondenceTask(self.main, self.profile, self)
self.scroll_layout.add_widget(task, 0)
def join_correspondence(self, *args, **kwargs):
@@ -55,10 +54,11 @@ class AddCorrespondencePopup(AddCorrespondencePopupView):
try:
invitation = json.loads(self.text_input_txbx.text)
except json.JSONDecodeError:
self.text_input_txbx.hint_text = "Invalid Invitation code.\nPaste invitation code here."
self.text_input_txbx.hint_text = (
"Invalid Invitation code.\nPaste invitation code here."
)
return
task = JoinCorrespondenceTask(
self.main, self.profile, invitation, self)
task = JoinCorrespondenceTask(self.main, self.profile, invitation, self)
self.scroll_layout.add_widget(task, 0)
# try:
# invitation = json.loads(self.text_input_txbx.text)
@@ -91,12 +91,13 @@ class TaskItemView(BoxLayout):
class TaskItem(TaskItemView):
task_description = "Generic Task"
def __init__(
self,
main,
profile: Profile,
popup_window: AddCorrespondencePopup | None = None,
**kwargs
**kwargs,
):
super().__init__(**kwargs)
self._terminate = False
@@ -117,12 +118,13 @@ class TaskItem(TaskItemView):
class CreateCorrespondenceTask(TaskItem):
task_description = "Create Correspondence"
def __init__(
self,
main,
profile: Profile,
popup_window: AddCorrespondencePopup | None = None,
**kwargs
**kwargs,
):
super().__init__(
main=main,
@@ -130,7 +132,6 @@ class CreateCorrespondenceTask(TaskItem):
popup_window=popup_window,
)
def run_task(self):
print("ENDRA: RUNNING TAST")
self.update_status(TaskStatus.in_progress)
@@ -140,35 +141,36 @@ class CreateCorrespondenceTask(TaskItem):
logger.info("Created correspondence!")
self.update_status(TaskStatus.succeeded)
except Exception as e:
error_message = (
f"{e}\n"
"CreateCorrespondenceTask: error running task"
)
error_message = f"{e}\nCreateCorrespondenceTask: error running task"
logger.error(error_message)
self.update_status(TaskStatus.error)
return
Clock.schedule_once(lambda dt:self.main.side_bar.reload_correspondences())
Clock.schedule_once(lambda dt: self.main.side_bar.reload_correspondences())
if self.popup_window and self.popup_window._is_open:
Clock.schedule_once(lambda dt:self.main.chat_page.load_correspondence(correspondence))
Clock.schedule_once(
lambda dt: self.main.chat_page.load_correspondence(correspondence)
)
self.popup_window.dismiss()
class JoinCorrespondenceTask(TaskItem):
task_description = "Join Correspondence"
def __init__(
self,
main,
profile: Profile,
invitation: str,
popup_window: AddCorrespondencePopup | None = None,
**kwargs
**kwargs,
):
self.invitation: str = invitation
super().__init__(
main=main,
profile=profile,
popup_window=popup_window,
)
self.invitation: str = invitation
def run_task(self):
self.update_status(TaskStatus.in_progress)
@@ -181,23 +183,24 @@ class JoinCorrespondenceTask(TaskItem):
except JoinFailureError:
pass
except Exception as e:
error_message = (
f"{e}\n"
"JoinCorrespondenceTask: error running task"
)
error_message = f"{e}\nJoinCorrespondenceTask: error running task"
import traceback
traceback.print_exc()
logger.error(error_message)
self.update_status(TaskStatus.error)
return
sleep(1)
Clock.schedule_once(lambda dt:self.main.side_bar.reload_correspondences())
Clock.schedule_once(lambda dt: self.main.side_bar.reload_correspondences())
if self.popup_window and self.popup_window._is_open:
Clock.schedule_once(lambda dt:self.main.chat_page.load_correspondence(correspondence))
Clock.schedule_once(
lambda dt: self.main.chat_page.load_correspondence(correspondence)
)
self.popup_window.dismiss()
class CorrespondenceItemView(BoxLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
@@ -230,17 +233,14 @@ class SideBarView(BoxLayout):
self.open_profiles_btn = self.ids.open_profiles_btn
self.add_corresp_btn = self.ids.add_corresp_btn
self.scroll_layout.bind(
minimum_height=self.scroll_layout.setter('height')
)
self.scroll_layout.bind(minimum_height=self.scroll_layout.setter("height"))
def remove_widget_from_scroll(self, index):
if 0 <= index < len(self.scroll_layout.children):
self.scroll_layout.remove_widget(
self.scroll_layout.children[index])
self.scroll_layout.remove_widget(self.scroll_layout.children[index])
def remove_scroll_widgets(self):
while (len(self.scroll_layout.children)):
while len(self.scroll_layout.children):
self.scroll_layout.remove_widget(self.scroll_layout.children[0])
@@ -257,7 +257,6 @@ class SideBar(SideBarView):
self.switch_profile(profile)
def switch_profile(self, profile: Profile):
self.profile = profile
self.reload_correspondences()
@@ -270,7 +269,8 @@ class SideBar(SideBarView):
active_correspondences = self.profile.get_active_correspondences()
for correspondence_id in active_correspondences:
self.add_correspondence_header(
self.profile.get_correspondence(correspondence_id))
self.profile.get_correspondence(correspondence_id)
)
def offer_add_correspondence(self, *args, **kwargs):
popup = AddCorrespondencePopup(
@@ -291,7 +291,5 @@ class SideBar(SideBarView):
dropdown.open(self.profile_controls_lyt)
def add_correspondence_header(self, correspondence):
widget = CorrespondenceItem(
main=self.main, correspondence=correspondence
)
widget = CorrespondenceItem(main=self.main, correspondence=correspondence)
self.scroll_layout.add_widget(widget)