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() { void LdapModel::save() {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
auto core = CoreModel::getInstance()->getCore();
int oldTimeout = 5; int oldTimeout = 5;
int oldLimit = 50; int oldLimit = 50;
int oldMinChars = 0; int oldMinChars = 0;
@ -54,16 +55,19 @@ void LdapModel::save() {
oldTimeout = mLdap->getTimeout(); oldTimeout = mLdap->getTimeout();
oldLimit = mLdap->getLimit(); oldLimit = mLdap->getLimit();
oldMinChars = mLdap->getMinCharacters(); 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); // 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->setTimeout(oldTimeout);
mLdap->setLimit(oldLimit); mLdap->setLimit(oldLimit);
mLdap->setMinCharacters(oldMinChars); mLdap->setMinCharacters(oldMinChars);
CoreModel::getInstance()->getCore()->addRemoteContactDirectory(mLdap); core->addRemoteContactDirectory(mLdap);
lDebug() << log().arg("LDAP Server saved"); lDebug() << log().arg("LDAP Server saved");
mLdapParamsClone = mLdap->getLdapParams(); mLdapParamsClone = mLdap->getLdapParams();
// Clean cache to take account new searches
auto ldapFriendList = core->getFriendListByName("ldap_friends");
if (ldapFriendList) core->removeFriendList(ldapFriendList);
emit saved(); emit saved();
} }

View file

@ -96,6 +96,10 @@ void CoreModel::start() {
mCore->setUserAgent(Utils::appStringToCoreString(userAgent), LINPHONESDK_VERSION); mCore->setUserAgent(Utils::appStringToCoreString(userAgent), LINPHONESDK_VERSION);
mCore->start(); mCore->start();
setPathAfterStart(); 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); mCore->enableFriendListSubscription(true);
// TODO : get this from settings // TODO : get this from settings
auto videoPolicy = mCore->getVideoActivationPolicy()->clone(); auto videoPolicy = mCore->getVideoActivationPolicy()->clone();

View file

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