From 3b20daf80750e432c95f24d1fba36f7099d6ba6b Mon Sep 17 00:00:00 2001 From: jeffser Date: Wed, 31 Jul 2024 19:42:46 -0600 Subject: [PATCH] Added bearer token entry to connection error dialog --- src/dialogs.py | 28 ++++++++++++++++++++-------- src/window.py | 8 ++++++-- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/dialogs.py b/src/dialogs.py index e6a3931..a504d57 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -172,26 +172,38 @@ def remove_attached_file(self, name): # RECONNECT REMOTE | WORKS -def reconnect_remote_response(self, dialog, task, entry): +def reconnect_remote_response(self, dialog, task, url_entry, bearer_entry): response = dialog.choose_finish(task) if not task or response == "remote": - self.connect_remote(entry.get_text()) + self.connect_remote(url_entry.get_text(), bearer_entry.get_text()) elif response == "local": self.connect_local() elif response == "close": self.destroy() -def reconnect_remote(self, current_url): - entry = Gtk.Entry( +def reconnect_remote(self, current_url, current_bearer_token): + entry_url = Gtk.Entry( css_classes = ["error"], - text = current_url + text = current_url, + placeholder_text = "URL" ) + entry_bearer_token = Gtk.Entry( + css_classes = ["error"] if current_bearer_token else None, + text = current_bearer_token, + placeholder_text = "Bearer Token (Optional)" + ) + container = Gtk.Box( + orientation = 1, + spacing = 10 + ) + container.append(entry_url) + container.append(entry_bearer_token) dialog = Adw.AlertDialog( heading=_("Connection Error"), body=_("The remote instance has disconnected"), - extra_child=entry + extra_child=container ) - entry.connect("activate", lambda entry, dialog: reconnect_remote_response(self, dialog, None, entry)) + #entry.connect("activate", lambda entry, dialog: reconnect_remote_response(self, dialog, None, entry)) dialog.add_response("close", _("Close Alpaca")) dialog.add_response("local", _("Use local instance")) dialog.add_response("remote", _("Connect")) @@ -199,7 +211,7 @@ def reconnect_remote(self, current_url): dialog.choose( parent = self, cancellable = None, - callback = lambda dialog, task, entry=entry: reconnect_remote_response(self, dialog, task, entry) + callback = lambda dialog, task, url_entry=entry_url, bearer_entry=entry_bearer_token: reconnect_remote_response(self, dialog, task, url_entry, bearer_entry) ) # CREATE MODEL | WORKS diff --git a/src/window.py b/src/window.py index 0f70f78..24e6162 100644 --- a/src/window.py +++ b/src/window.py @@ -290,6 +290,9 @@ class AlpacaWindow(Adw.ApplicationWindow): @Gtk.Template.Callback() def change_remote_url(self, entry): + if not entry.get_text().startswith("http"): + entry.set_text("http://{}".format(entry.get_text())) + return self.remote_url = entry.get_text() logger.debug(f"Changing remote url: {self.remote_url}") if self.run_remote: @@ -1234,9 +1237,10 @@ Generate a title following these rules: logger.debug("Showing preferences dialog") self.preferences_dialog.present(self) - def connect_remote(self, url): + def connect_remote(self, url, bearer_token): logger.debug(f"Connecting to remote: {url}") connection_handler.url = url + connection_handler.bearer_token = bearer_token self.remote_url = connection_handler.url self.remote_connection_entry.set_text(self.remote_url) if self.verify_connection() == False: self.connection_error() @@ -1253,7 +1257,7 @@ Generate a title following these rules: def connection_error(self): logger.error("Connection error") if self.run_remote: - dialogs.reconnect_remote(self, connection_handler.url) + dialogs.reconnect_remote(self, connection_handler.url, connection_handler.bearer_token) else: local_instance.reset() self.show_toast(_("There was an error with the local Ollama instance, so it has been reset"), self.main_overlay)