fix #LINQT-1512 do not return to conference list when cancel meeting creation

This commit is contained in:
Gaelle Braud 2025-01-03 17:04:40 +01:00
parent 783c0dbfd1
commit 06d00de59b
4 changed files with 26 additions and 17 deletions

View file

@ -562,7 +562,7 @@ void ConferenceInfoCore::writeIntoModel(std::shared_ptr<ConferenceInfoModel> mod
void ConferenceInfoCore::save() {
mustBeInMainThread(getClassName() + "::save()");
ConferenceInfoCore *thisCopy = new ConferenceInfoCore(*this); // Pointer to avoid multiple copies in lambdas
if (mConferenceInfoModel) {
if (mConferenceInfoModel && mConferenceInfoModel->getConferenceScheduler()) {
mConfInfoModelConnection->invokeToModel([this, thisCopy]() { // Copy values to avoid concurrency
mustBeInLinphoneThread(getClassName() + "::save()");
thisCopy->writeIntoModel(mConferenceInfoModel);
@ -634,6 +634,12 @@ void ConferenceInfoCore::undo() {
}
}
void ConferenceInfoCore::cancelCreation() {
if (mConferenceInfoModel) {
mConferenceInfoModel->setConferenceScheduler(nullptr);
}
}
//-------------------------------------------------------------------------------------------------
void ConferenceInfoCore::onInvitationsSent(const std::list<std::shared_ptr<linphone::Address>> &failedInvitations) {

View file

@ -128,6 +128,7 @@ public:
Q_INVOKABLE void save();
Q_INVOKABLE void undo();
Q_INVOKABLE void cancelCreation();
virtual void onInvitationsSent(const std::list<std::shared_ptr<linphone::Address>> &failedInvitations);
@ -153,7 +154,7 @@ signals:
void saveFailed();
void invitationsSent();
void removed(ConferenceInfoCore* confInfo);
void removed(ConferenceInfoCore *confInfo);
void lCancelConferenceInfo();
void lDeleteConferenceInfo(); // Remove completly this conference info from DB

View file

@ -58,20 +58,22 @@ void ConferenceInfoModel::setConferenceScheduler(const std::shared_ptr<Conferenc
mConferenceSchedulerModel->removeListener();
}
mConferenceSchedulerModel = model;
connect(mConferenceSchedulerModel.get(), &ConferenceSchedulerModel::stateChanged,
[this](linphone::ConferenceScheduler::State state) {
if (mConferenceSchedulerModel->getConferenceInfo())
mConferenceInfo = mConferenceSchedulerModel->getConferenceInfo()->clone();
if (state == linphone::ConferenceScheduler::State::Ready && mInviteEnabled) {
auto params = CoreModel::getInstance()->getCore()->createDefaultChatRoomParams();
// TODO : wait for new sdk api to send the invitations again
// mConferenceSchedulerModel->getMonitor()->sendInvitations(params);
}
emit schedulerStateChanged(state);
});
connect(mConferenceSchedulerModel.get(), &ConferenceSchedulerModel::invitationsSent, this,
&ConferenceInfoModel::invitationsSent);
mConferenceSchedulerModel->setSelf(mConferenceSchedulerModel);
if (mConferenceSchedulerModel) {
connect(mConferenceSchedulerModel.get(), &ConferenceSchedulerModel::stateChanged,
[this](linphone::ConferenceScheduler::State state) {
if (mConferenceSchedulerModel->getConferenceInfo())
mConferenceInfo = mConferenceSchedulerModel->getConferenceInfo()->clone();
if (state == linphone::ConferenceScheduler::State::Ready && mInviteEnabled) {
auto params = CoreModel::getInstance()->getCore()->createDefaultChatRoomParams();
// TODO : wait for new sdk api to send the invitations again
// mConferenceSchedulerModel->getMonitor()->sendInvitations(params);
}
emit schedulerStateChanged(state);
});
connect(mConferenceSchedulerModel.get(), &ConferenceSchedulerModel::invitationsSent, this,
&ConferenceInfoModel::invitationsSent);
mConferenceSchedulerModel->setSelf(mConferenceSchedulerModel);
}
}
}

View file

@ -275,7 +275,7 @@ AbstractMainPage {
} else {
meetingSetup.conferenceInfoGui.core.save()
mainWindow.showLoadingPopup(qsTr("Création de la réunion en cours ..."), true, function () {
leftPanelStackView.pop()
meetingSetup.conferenceInfoGui.core.cancelCreation()
})
}
}