aboutsummaryrefslogtreecommitdiff
path: root/libdino
diff options
context:
space:
mode:
authoreerielili <lionel@les-miquelots.net>2023-10-08 11:51:30 +0000
committerGitHub <noreply@github.com>2023-10-08 13:51:30 +0200
commit86b101900c28a09ebc6bcbf212f9969f70ce51b7 (patch)
treec21a63b1e14537e010de609017180bcec0465af3 /libdino
parent8cb195a2749b0335c8d5fefc2d4fb78023cffe71 (diff)
downloaddino-86b101900c28a09ebc6bcbf212f9969f70ce51b7.tar.gz
dino-86b101900c28a09ebc6bcbf212f9969f70ce51b7.zip
Start conversation if closed when receiving an audio or video call (#1485)
* Start conversation if closed when receiving an audio or video call * Fix starting conversation on new calls, move setting conversation.last_active --------- Co-authored-by: fiaxh <git@lightrise.org>
Diffstat (limited to 'libdino')
-rw-r--r--libdino/src/application.vala2
-rw-r--r--libdino/src/service/calls.vala5
-rw-r--r--libdino/src/service/conversation_manager.vala7
3 files changed, 8 insertions, 6 deletions
diff --git a/libdino/src/application.vala b/libdino/src/application.vala
index 727b6131..0fcee731 100644
--- a/libdino/src/application.vala
+++ b/libdino/src/application.vala
@@ -39,12 +39,12 @@ public interface Application : GLib.Application {
PresenceManager.start(stream_interactor);
CounterpartInteractionManager.start(stream_interactor);
BlockingManager.start(stream_interactor);
+ Calls.start(stream_interactor, db);
ConversationManager.start(stream_interactor, db);
MucManager.start(stream_interactor);
AvatarManager.start(stream_interactor, db);
RosterManager.start(stream_interactor, db);
FileManager.start(stream_interactor, db);
- Calls.start(stream_interactor, db);
CallStore.start(stream_interactor, db);
ContentItemStore.start(stream_interactor, db);
ChatInteraction.start(stream_interactor);
diff --git a/libdino/src/service/calls.vala b/libdino/src/service/calls.vala
index ebaf8d03..eca7e223 100644
--- a/libdino/src/service/calls.vala
+++ b/libdino/src/service/calls.vala
@@ -61,8 +61,6 @@ namespace Dino {
call_state.initiate_groupchat_call.begin(conversation.counterpart);
}
- conversation.last_active = call.time;
-
call_outgoing(call, call_state, conversation);
return call_state;
@@ -221,7 +219,6 @@ namespace Dino {
Conversation conversation = stream_interactor.get_module(ConversationManager.IDENTITY).create_conversation(call.counterpart.bare_jid, account, Conversation.Type.CHAT);
stream_interactor.get_module(CallStore.IDENTITY).add_call(call, conversation);
- conversation.last_active = call.time;
var call_state = new CallState(call, stream_interactor);
connect_call_state_signals(call_state);
@@ -294,7 +291,6 @@ namespace Dino {
Conversation? conversation = stream_interactor.get_module(ConversationManager.IDENTITY).get_conversation(inviter_jid.bare_jid, account);
if (conversation == null) return null;
stream_interactor.get_module(CallStore.IDENTITY).add_call(call, conversation);
- conversation.last_active = call.time;
CallState call_state = new CallState(call, stream_interactor);
connect_call_state_signals(call_state);
@@ -465,7 +461,6 @@ namespace Dino {
Conversation? conversation = stream_interactor.get_module(ConversationManager.IDENTITY).approx_conversation_for_stanza(from_jid, to_jid, account, message_stanza.type_);
if (conversation == null) return;
- conversation.last_active = call_state.call.time;
if (call_state.call.direction == Call.DIRECTION_INCOMING) {
call_incoming(call_state.call, call_state, conversation, video_requested, multiparty);
diff --git a/libdino/src/service/conversation_manager.vala b/libdino/src/service/conversation_manager.vala
index 59ccbac4..f966ccc7 100644
--- a/libdino/src/service/conversation_manager.vala
+++ b/libdino/src/service/conversation_manager.vala
@@ -29,6 +29,8 @@ public class ConversationManager : StreamInteractionModule, Object {
stream_interactor.account_removed.connect(on_account_removed);
stream_interactor.get_module(MessageProcessor.IDENTITY).received_pipeline.connect(new MessageListener(stream_interactor));
stream_interactor.get_module(MessageProcessor.IDENTITY).message_sent.connect(handle_sent_message);
+ stream_interactor.get_module(Calls.IDENTITY).call_incoming.connect(handle_new_call);
+ stream_interactor.get_module(Calls.IDENTITY).call_outgoing.connect(handle_new_call);
}
public Conversation create_conversation(Jid jid, Account account, Conversation.Type? type = null) {
@@ -194,6 +196,11 @@ public class ConversationManager : StreamInteractionModule, Object {
}
}
+ private void handle_new_call(Call call, CallState state, Conversation conversation) {
+ conversation.last_active = call.time;
+ start_conversation(conversation);
+ }
+
private void add_conversation(Conversation conversation) {
if (!conversations[conversation.account].has_key(conversation.counterpart)) {
conversations[conversation.account][conversation.counterpart] = new ArrayList<Conversation>(Conversation.equals_func);