diff --git a/src/dialogs.py b/src/dialogs.py index a504d57..3b28735 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -369,3 +369,31 @@ def attach_website(self, url): cancellable = None, callback = lambda dialog, task, url=url: attach_website_response(self, dialog, task, url) ) + +# Begging for money :3 + +def support_response(self, dialog, task): + res = dialog.choose_finish(task) + if res == 'later': return + elif res == 'support': + self.show_toast(_("Thank you!"), self.main_overlay) + os.system('xdg-open https://github.com/sponsors/Jeffser') + self.show_support = False + self.save_server_config() + +def support(self): + dialog = Adw.AlertDialog( + heading=_("Support"), + body=_("Are you enjoying Alpaca? Consider sponsoring the project!"), + close_response="nope" + ) + dialog.add_response("nope", _("Don't show again")) + dialog.set_response_appearance("nope", Adw.ResponseAppearance.DESTRUCTIVE) + dialog.add_response("later", _("Later")) + dialog.add_response("support", _("Support")) + dialog.set_response_appearance("support", Adw.ResponseAppearance.SUGGESTED) + dialog.choose( + parent = self, + cancellable = None, + callback = lambda dialog, task: support_response(self, dialog, task) + ) diff --git a/src/window.py b/src/window.py index 1b71844..15bb50b 100644 --- a/src/window.py +++ b/src/window.py @@ -21,7 +21,7 @@ import gi gi.require_version('GtkSource', '5') gi.require_version('GdkPixbuf', '2.0') from gi.repository import Adw, Gtk, Gdk, GLib, GtkSource, Gio, GdkPixbuf -import json, requests, threading, os, re, base64, sys, gettext, locale, subprocess, uuid, shutil, tarfile, tempfile, logging +import json, requests, threading, os, re, base64, sys, gettext, locale, subprocess, uuid, shutil, tarfile, tempfile, logging, random from time import sleep from io import BytesIO from PIL import Image @@ -60,6 +60,7 @@ class AlpacaWindow(Adw.ApplicationWindow): pulling_models = {} chats = {"chats": {_("New Chat"): {"messages": {}}}, "selected_chat": "New Chat", "order": []} attachments = {} + show_support = True #Override elements override_HSA_OVERRIDE_GFX_VERSION = Gtk.Template.Child() @@ -780,7 +781,7 @@ Generate a title following these rules: def save_server_config(self): with open(os.path.join(self.config_dir, "server.json"), "w+") as f: - json.dump({'remote_url': self.remote_url, 'remote_bearer_token': self.remote_bearer_token, 'run_remote': self.run_remote, 'local_port': local_instance.port, 'run_on_background': self.run_on_background, 'model_tweaks': self.model_tweaks, 'ollama_overrides': local_instance.overrides}, f, indent=6) + json.dump({'remote_url': self.remote_url, 'remote_bearer_token': self.remote_bearer_token, 'run_remote': self.run_remote, 'local_port': local_instance.port, 'run_on_background': self.run_on_background, 'model_tweaks': self.model_tweaks, 'ollama_overrides': local_instance.overrides, 'show_support': self.show_support}, f, indent=6) def verify_connection(self): try: @@ -1577,7 +1578,11 @@ Generate a title following these rules: if override in local_instance.overrides: element.set_text(local_instance.overrides[override]) - + #Support dialog + if 'show_support' not in data or data['show_support']: + if random.randint(0, 99) == 0: + dialogs.support(self) + if 'show_support' in data: self.show_support = data['show_support'] self.background_switch.set_active(self.run_on_background) self.set_hide_on_close(self.run_on_background) self.remote_connection_entry.set_text(self.remote_url)