about summary refs log tree commit diff
path: root/nixpkgs-overlays/patches/dino/0001-add-an-option-to-enable-omemo-by-default-in-new-conv.patch
blob: 030c165d87b823b5aad1e41d0da408365d4d6340 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
From cee5e27b157081a3ce55869bd5f649560a6127ea Mon Sep 17 00:00:00 2001
From: lumi <lumi@pew.im>
Date: Thu, 17 Oct 2019 16:43:40 +0200
Subject: [PATCH] add an option to enable omemo by default in new conversations

---
 libdino/src/entity/settings.vala              | 10 ++++++++++
 libdino/src/service/conversation_manager.vala |  5 +++++
 main/data/settings_dialog.ui                  | 12 ++++++++++++
 main/src/ui/settings_dialog.vala              |  3 +++
 4 files changed, 30 insertions(+)

diff --git a/libdino/src/entity/settings.vala b/libdino/src/entity/settings.vala
index bf1ebed..f9cd734 100644
--- a/libdino/src/entity/settings.vala
+++ b/libdino/src/entity/settings.vala
@@ -11,6 +11,7 @@ public class Settings : Object {
         send_marker_ = col_to_bool_or_default("send_marker", true);
         notifications_ = col_to_bool_or_default("notifications", true);
         convert_utf8_smileys_ = col_to_bool_or_default("convert_utf8_smileys", true);
+        omemo_default_ = col_to_bool_or_default("omemo_default", false);
     }
 
     private bool col_to_bool_or_default(string key, bool def) {
@@ -53,6 +54,15 @@ public class Settings : Object {
             convert_utf8_smileys_ = value;
         }
     }
+
+    private bool omemo_default_;
+    public bool omemo_default {
+        get { return omemo_default_; }
+        set {
+            db.settings.insert().or("REPLACE").value(db.settings.key, "omemo_default").value(db.settings.value, value.to_string()).perform();
+            omemo_default_ = value;
+        }
+    }
 }
 
 }
diff --git a/libdino/src/service/conversation_manager.vala b/libdino/src/service/conversation_manager.vala
index c473ea7..e980e08 100644
--- a/libdino/src/service/conversation_manager.vala
+++ b/libdino/src/service/conversation_manager.vala
@@ -8,6 +8,8 @@ public class ConversationManager : StreamInteractionModule, Object {
     public static ModuleIdentity<ConversationManager> IDENTITY = new ModuleIdentity<ConversationManager>("conversation_manager");
     public string id { get { return IDENTITY.id; } }
 
+    private Dino.Entities.Settings settings = Dino.Application.get_default().settings;
+
     public signal void conversation_activated(Conversation conversation);
     public signal void conversation_deactivated(Conversation conversation);
 
@@ -46,6 +48,9 @@ public class ConversationManager : StreamInteractionModule, Object {
 
         // Create a new converation
         Conversation conversation = new Conversation(jid, account, type);
+        if (settings.omemo_default) {
+            conversation.encryption = Encryption.OMEMO;
+        }
         add_conversation(conversation);
         conversation.persist(db);
         return conversation;
diff --git a/main/data/settings_dialog.ui b/main/data/settings_dialog.ui
index c76f347..23ee7b8 100644
--- a/main/data/settings_dialog.ui
+++ b/main/data/settings_dialog.ui
@@ -65,6 +65,18 @@
                                 <property name="height">1</property>
                             </packing>
                         </child>
+                        <child>
+                          <object class="GtkCheckButton" id="omemo_default_checkbutton">
+                            <property name="label" translatable="yes">Enable OMEMO by default</property>
+                            <property name="visible">True</property>
+                          </object>
+                          <packing>
+                              <property name="left_attach">0</property>
+                              <property name="top_attach">4</property>
+                              <property name="width">1</property>
+                              <property name="height">1</property>
+                          </packing>
+                        </child>
                     </object>
                 </child>
             </object>
diff --git a/main/src/ui/settings_dialog.vala b/main/src/ui/settings_dialog.vala
index 68c711d..6401a2d 100644
--- a/main/src/ui/settings_dialog.vala
+++ b/main/src/ui/settings_dialog.vala
@@ -9,6 +9,7 @@ class SettingsDialog : Dialog {
     [GtkChild] private CheckButton marker_checkbutton;
     [GtkChild] private CheckButton notification_checkbutton;
     [GtkChild] private CheckButton emoji_checkbutton;
+    [GtkChild] private CheckButton omemo_default_checkbutton;
 
     Dino.Entities.Settings settings = Dino.Application.get_default().settings;
 
@@ -19,11 +20,13 @@ class SettingsDialog : Dialog {
         marker_checkbutton.active = settings.send_marker;
         notification_checkbutton.active = settings.notifications;
         emoji_checkbutton.active = settings.convert_utf8_smileys;
+        omemo_default_checkbutton.active = settings.omemo_default;
 
         typing_checkbutton.toggled.connect(() => { settings.send_typing = typing_checkbutton.active; } );
         marker_checkbutton.toggled.connect(() => { settings.send_marker = marker_checkbutton.active; } );
         notification_checkbutton.toggled.connect(() => { settings.notifications = notification_checkbutton.active; } );
         emoji_checkbutton.toggled.connect(() => { settings.convert_utf8_smileys = emoji_checkbutton.active; });
+        omemo_default_checkbutton.toggled.connect(() => { settings.omemo_default = omemo_default_checkbutton.active; });
     }
 }
 
-- 
2.23.0