Fix qml errors.

Remove ldap friends cache to avoid being desynchronized with ldap servers.
This commit is contained in:
Julien Wadel 2025-01-08 16:47:19 +01:00
parent 30f08bac93
commit 56176b27f0
3 changed files with 22 additions and 14 deletions

View file

@ -47,6 +47,7 @@ LdapModel::~LdapModel() {
void LdapModel::save() {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
auto core = CoreModel::getInstance()->getCore();
int oldTimeout = 5;
int oldLimit = 50;
int oldMinChars = 0;
@ -54,16 +55,19 @@ void LdapModel::save() {
oldTimeout = mLdap->getTimeout();
oldLimit = mLdap->getLimit();
oldMinChars = mLdap->getMinCharacters();
CoreModel::getInstance()->getCore()->removeRemoteContactDirectory(
core->removeRemoteContactDirectory(
mLdap); // Need to do remove/add when updating, as setParams on existing one also adds it to core.
}
mLdap = CoreModel::getInstance()->getCore()->createLdapRemoteContactDirectory(mLdapParamsClone);
mLdap = core->createLdapRemoteContactDirectory(mLdapParamsClone);
mLdap->setTimeout(oldTimeout);
mLdap->setLimit(oldLimit);
mLdap->setMinCharacters(oldMinChars);
CoreModel::getInstance()->getCore()->addRemoteContactDirectory(mLdap);
core->addRemoteContactDirectory(mLdap);
lDebug() << log().arg("LDAP Server saved");
mLdapParamsClone = mLdap->getLdapParams();
// Clean cache to take account new searches
auto ldapFriendList = core->getFriendListByName("ldap_friends");
if (ldapFriendList) core->removeFriendList(ldapFriendList);
emit saved();
}

View file

@ -96,6 +96,10 @@ void CoreModel::start() {
mCore->setUserAgent(Utils::appStringToCoreString(userAgent), LINPHONESDK_VERSION);
mCore->start();
setPathAfterStart();
// Remove ldap friends cache list. If not, old stored friends will take priority on merge and will not be updated
// from new LDAP requests..
auto ldapFriendList = mCore->getFriendListByName("ldap_friends");
if (ldapFriendList) mCore->removeFriendList(ldapFriendList);
mCore->enableFriendListSubscription(true);
// TODO : get this from settings
auto videoPolicy = mCore->getVideoActivationPolicy()->clone();

View file

@ -578,7 +578,7 @@ AbstractMainPage {
}
Text {
Layout.fillWidth: true
text: mainItem.selectedConference ? mainItem.selectedConference.core?.subject : ""
text: mainItem.selectedConference && mainItem.selectedConference.core? mainItem.selectedConference.core.subject : ""
maximumLineCount: 1
font {
pixelSize: 20 * DefaultStyle.dp
@ -669,7 +669,7 @@ AbstractMainPage {
id: linkButton
Layout.fillWidth: true
font.bold: shadowEnabled
text: mainItem.selectedConference ? mainItem.selectedConference.core?.uri : ""
text: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.uri : ""
textSize: 14 * DefaultStyle.dp
textWeight: 400 * DefaultStyle.dp
underline: true
@ -717,11 +717,11 @@ AbstractMainPage {
source: AppIcons.clock
}
Text {
text: mainItem.selectedConference
? UtilsCpp.toDateString(mainItem.selectedConference.core?.dateTime)
+ " | " + UtilsCpp.toDateHourString(mainItem.selectedConference.core?.dateTime)
text: mainItem.selectedConference && mainItem.selectedConference.core
? UtilsCpp.toDateString(mainItem.selectedConference.core.dateTime)
+ " | " + UtilsCpp.toDateHourString(mainItem.selectedConference.core.dateTime)
+ " - "
+ UtilsCpp.toDateHourString(mainItem.selectedConference.core?.endDateTime)
+ UtilsCpp.toDateHourString(mainItem.selectedConference.core.endDateTime)
: ''
font {
pixelSize: 14 * DefaultStyle.dp
@ -737,7 +737,7 @@ AbstractMainPage {
source: AppIcons.globe
}
Text {
text: qsTr("Time zone: ") + (mainItem.selectedConference ? (mainItem.selectedConference.core?.timeZoneModel.displayName + ", " + mainItem.selectedConference.core.timeZoneModel.countryName) : "")
text: qsTr("Time zone: ") + (mainItem.selectedConference && mainItem.selectedConference.core ? (mainItem.selectedConference.core.timeZoneModel.displayName + ", " + mainItem.selectedConference.core.timeZoneModel.countryName) : "")
font {
pixelSize: 14 * DefaultStyle.dp
capitalization: Font.Capitalize
@ -757,7 +757,7 @@ AbstractMainPage {
colorizationColor: DefaultStyle.main2_600
}
Text {
text: mainItem.selectedConference ? mainItem.selectedConference.core?.description : ""
text: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.description : ""
Layout.fillWidth: true
font {
pixelSize: 14 * DefaultStyle.dp
@ -778,10 +778,10 @@ AbstractMainPage {
Avatar {
Layout.preferredWidth: 45 * DefaultStyle.dp
Layout.preferredHeight: 45 * DefaultStyle.dp
_address: mainItem.selectedConference ? mainItem.selectedConference.core?.organizerAddress : ""
_address: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.organizerAddress : ""
}
Text {
text: mainItem.selectedConference ? mainItem.selectedConference.core?.organizerName : ""
text: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.organizerName : ""
font {
pixelSize: 14 * DefaultStyle.dp
capitalization: Font.Capitalize
@ -806,7 +806,7 @@ AbstractMainPage {
id: participantList
Layout.preferredHeight: Math.min(184 * DefaultStyle.dp, contentHeight)
Layout.fillWidth: true
model: mainItem.selectedConference ? mainItem.selectedConference.core?.participants : []
model: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.participants : []
clip: true
delegate: RowLayout {
height: 56 * DefaultStyle.dp