Skip to content

Commit 1a04082

Browse files
committed
Better handling of remote connection lost
1 parent f2e6f1a commit 1a04082

File tree

1 file changed

+39
-4
lines changed

1 file changed

+39
-4
lines changed

src/window.py

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -884,11 +884,46 @@ def restart_instance(self):
884884
if self.ollama_instance is not None: self.stop_instance()
885885
start_instance(self)
886886

887+
def reconnect_remote(self, dialog, task=None, entry=None):
888+
response = dialog.choose_finish(task)
889+
if not task or response == "connect":
890+
self.ollama_url = entry.get_text()
891+
self.remote_url = self.ollama_url
892+
if self.verify_connection() == False: self.connection_error()
893+
else:
894+
dialog.force_close()
895+
elif response == "local":
896+
self.run_remote = False
897+
self.ollama_url = f"http://127.0.0.1:{self.local_ollama_port}"
898+
self.start_instance()
899+
if self.verify_connection() == False: self.connection_error()
900+
else:
901+
self.remote_connection_switch.set_active(False)
902+
dialog.force_close()
903+
elif response == "close":
904+
self.destroy()
905+
887906
def connection_error(self):
888907
if self.run_remote:
889-
self.preferences_dialog.present(self)
890-
self.remote_connection_entry.set_css_classes(["error"])
891-
self.show_toast("error", 1, self.preferences_dialog)
908+
entry = Gtk.Entry(
909+
css_classes = ["error"],
910+
text = self.ollama_url
911+
)
912+
dialog = Adw.AlertDialog(
913+
heading=_("Connection Error"),
914+
body=_("The remote instance has disconnected"),
915+
extra_child=entry
916+
)
917+
entry.connect("activate", lambda entry, dialog=dialog: self.reconnect_remote(dialog=dialog, entry=entry))
918+
dialog.add_response("close", _("Close Alpaca"))
919+
dialog.add_response("local", _("Use local instance"))
920+
dialog.add_response("remote", _("Connect"))
921+
dialog.set_response_appearance("remote", Adw.ResponseAppearance.SUGGESTED)
922+
dialog.choose(
923+
parent = self,
924+
cancellable = None,
925+
callback = lambda dialog, task, entry=entry: self.reconnect_remote(dialog=dialog, task=task, entry=entry)
926+
)
892927
else:
893928
self.restart_instance()
894929
self.show_toast("error", 7, self.main_overlay)
@@ -1013,7 +1048,7 @@ def __init__(self, **kwargs):
10131048
self.ollama_url = f"http://127.0.0.1:{self.local_ollama_port}"
10141049
self.first_time_setup = True
10151050
self.welcome_dialog.present(self)
1016-
if self.verify_connection() is False: self.connection_error()
1051+
if self.verify_connection() is False and self.run_remote == False: self.connection_error()
10171052
self.update_list_available_models()
10181053
self.load_history()
10191054
self.update_chat_list()

0 commit comments

Comments
 (0)