Daniel Brötzmann pushed to branch master at gajim / gajim


Commits:
0f5af752 by wurstsalat at 2023-06-08T20:34:00+02:00
fix: CreateGroupchatWindow: Improve handling of MUC service availability

Fixes #11557

- - - - -


3 changed files:

- gajim/data/gui/groupchat_creation.ui
- gajim/gtk/builder.pyi
- gajim/gtk/groupchat_creation.py


Changes:

=====================================
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>


=====================================
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
 


=====================================
gajim/gtk/groupchat_creation.py
=====================================
@@ -137,7 +137,10 @@ def _fill_placeholders(self) -> None:
     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 @@ def _on_account_combo_changed(self, combo: Gtk.ComboBox) 
-> None:
             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 @@ def _validate_jid(self, text: str) -> None:
         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 @@ def _set_processing_state(self, enabled: bool) -> None:
             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:



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/0f5af752c7eeb5ab47566f651586aef2d00103e4

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/0f5af752c7eeb5ab47566f651586aef2d00103e4
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to