Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwurstsalat <mailtrash@posteo.de>2023-06-08 21:33:55 +0300
committerwurstsalat <mailtrash@posteo.de>2023-06-08 21:34:00 +0300
commit0f5af752c7eeb5ab47566f651586aef2d00103e4 (patch)
tree6477cd7cf4a9da503ba6752bac4b9c72282c5394
parentdfe0cd605211097f4ae07f2667e661137028112b (diff)
fix: CreateGroupchatWindow: Improve handling of MUC service availability
Fixes #11557
-rw-r--r--gajim/data/gui/groupchat_creation.ui17
-rw-r--r--gajim/gtk/builder.pyi1
-rw-r--r--gajim/gtk/groupchat_creation.py33
3 files changed, 37 insertions, 14 deletions
diff --git a/gajim/data/gui/groupchat_creation.ui b/gajim/data/gui/groupchat_creation.ui
index 89339b8ee..703cbe5a2 100644
--- a/gajim/data/gui/groupchat_creation.ui
+++ b/gajim/data/gui/groupchat_creation.ui
@@ -341,6 +341,23 @@
<property name="position">2</property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel" id="error_label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="wrap">True</property>
+ <property name="max-width-chars">38</property>
+ <style>
+ <class name="warning-color"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="left-attach">0</property>
diff --git a/gajim/gtk/builder.pyi b/gajim/gtk/builder.pyi
index 78f9d9e2a..ddae1dbfd 100644
--- a/gajim/gtk/builder.pyi
+++ b/gajim/gtk/builder.pyi
@@ -406,6 +406,7 @@ class GroupchatCreationBuilder(Builder):
private_radio: Gtk.RadioButton
public_radio: Gtk.RadioButton
address_entry: Gtk.Entry
+ error_label: Gtk.Label
spinner: Gtk.Spinner
create_button: Gtk.Button
diff --git a/gajim/gtk/groupchat_creation.py b/gajim/gtk/groupchat_creation.py
index 1fa837006..63e5f1b23 100644
--- a/gajim/gtk/groupchat_creation.py
+++ b/gajim/gtk/groupchat_creation.py
@@ -137,7 +137,10 @@ class CreateGroupchatWindow(Gtk.ApplicationWindow, EventHelper):
def _get_muc_service_jid(self) -> str:
assert self._account is not None
client = app.get_client(self._account)
- return str(client.get_module('MUC').service_jid or 'muc.example.com')
+ service_jid = client.get_module('MUC').service_jid
+ if service_jid is None:
+ return ''
+ return str(service_jid)
def _on_key_press(self, _widget: Gtk.Widget, event: Gdk.EventKey) -> None:
if event.keyval == Gdk.KEY_Escape:
@@ -153,9 +156,19 @@ class CreateGroupchatWindow(Gtk.ApplicationWindow, EventHelper):
self._account = model[iter_][0]
self._fill_placeholders()
+ self._validate_jid(self._ui.address_entry.get_text())
+
+ if not self._get_muc_service_jid():
+ self._set_warning(
+ _('Your server does not provide a group chat service. '
+ 'Please try with a different server.'))
+ self._ui.advanced_switch.set_active(True)
+ else:
+ self._ui.error_label.hide()
+
def _validate_jid(self, text: str) -> None:
if not text:
- self._set_warning_icon(False)
+ self._ui.error_label.hide()
self._ui.create_button.set_sensitive(False)
return
@@ -167,7 +180,7 @@ class CreateGroupchatWindow(Gtk.ApplicationWindow, EventHelper):
except ValueError:
self._set_warning(_('Invalid Address'))
else:
- self._set_warning_icon(False)
+ self._ui.error_label.hide()
self._ui.create_button.set_sensitive(True)
def _set_processing_state(self, enabled: bool) -> None:
@@ -178,18 +191,10 @@ class CreateGroupchatWindow(Gtk.ApplicationWindow, EventHelper):
self._ui.spinner.stop()
self._ui.grid.set_sensitive(not enabled)
- def _set_warning_icon(self, enabled: bool) -> None:
- icon = 'dialog-warning-symbolic' if enabled else None
- self._ui.address_entry.set_icon_from_icon_name(
- Gtk.EntryIconPosition.SECONDARY, icon)
-
- def _set_warning_tooltip(self, text: str) -> None:
- self._ui.address_entry.set_icon_tooltip_text(
- Gtk.EntryIconPosition.SECONDARY, text)
-
def _set_warning(self, text: str) -> None:
- self._set_warning_icon(True)
- self._set_warning_tooltip(text)
+ self._ui.error_label.set_text(text)
+ self._ui.error_label.show()
+ self._ui.advanced_switch.set_active(True)
self._ui.create_button.set_sensitive(False)
def _set_warning_from_error(self, error: StanzaError) -> None: