aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/conversation_content_view/subscription_notification.vala
diff options
context:
space:
mode:
authorfiaxh <git@lightrise.org>2020-02-21 02:49:53 +0100
committerfiaxh <git@lightrise.org>2020-02-22 02:58:36 +0100
commit4ed6204fc2879c52fe88caa5711dea37cd4ae201 (patch)
treeba6f0f8227694c95e53645a701ac4b4111b8698c /main/src/ui/conversation_content_view/subscription_notification.vala
parent01698959feaa9005c8a5f3439478431ab5837792 (diff)
downloaddino-4ed6204fc2879c52fe88caa5711dea37cd4ae201.tar.gz
dino-4ed6204fc2879c52fe88caa5711dea37cd4ae201.zip
Rename folders/files conversation_summary -> conversation_content_view
Diffstat (limited to 'main/src/ui/conversation_content_view/subscription_notification.vala')
-rw-r--r--main/src/ui/conversation_content_view/subscription_notification.vala55
1 files changed, 55 insertions, 0 deletions
diff --git a/main/src/ui/conversation_content_view/subscription_notification.vala b/main/src/ui/conversation_content_view/subscription_notification.vala
new file mode 100644
index 00000000..d493ff78
--- /dev/null
+++ b/main/src/ui/conversation_content_view/subscription_notification.vala
@@ -0,0 +1,55 @@
+using Gee;
+using Gtk;
+
+using Dino.Entities;
+
+namespace Dino.Ui.ConversationSummary {
+
+public class SubscriptionNotitication : Object {
+
+ private StreamInteractor stream_interactor;
+ private Conversation conversation;
+ private ConversationView conversation_view;
+
+ public SubscriptionNotitication(StreamInteractor stream_interactor) {
+ this.stream_interactor = stream_interactor;
+
+ stream_interactor.get_module(PresenceManager.IDENTITY).received_subscription_request.connect((jid, account) => {
+ Conversation relevant_conversation = stream_interactor.get_module(ConversationManager.IDENTITY).create_conversation(jid, account, Conversation.Type.CHAT);
+ stream_interactor.get_module(ConversationManager.IDENTITY).start_conversation(relevant_conversation);
+ if (conversation != null && account.equals(conversation.account) && jid.equals(conversation.counterpart)) {
+ show_notification();
+ }
+ });
+ }
+
+ public void init(Conversation conversation, ConversationView conversation_view) {
+ this.conversation = conversation;
+ this.conversation_view = conversation_view;
+
+ if (stream_interactor.get_module(PresenceManager.IDENTITY).exists_subscription_request(conversation.account, conversation.counterpart)) {
+ show_notification();
+ }
+ }
+
+ private void show_notification() {
+ Box box = new Box(Orientation.HORIZONTAL, 5) { visible=true };
+ Button accept_button = new Button() { label=_("Accept"), visible=true };
+ Button deny_button = new Button() { label=_("Deny"), visible=true };
+ GLib.Application app = GLib.Application.get_default();
+ accept_button.clicked.connect(() => {
+ app.activate_action("accept-subscription", conversation.id);
+ conversation_view.remove_notification(box);
+ });
+ deny_button.clicked.connect(() => {
+ app.activate_action("deny-subscription", conversation.id);
+ conversation_view.remove_notification(box);
+ });
+ box.add(new Label(_("This contact would like to add you to their contact list")) { margin_end=10, visible=true });
+ box.add(accept_button);
+ box.add(deny_button);
+ conversation_view.add_notification(box);
+ }
+}
+
+}