Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
PIM
KDE PIM Runtime
Commits
fe4c096c
Commit
fe4c096c
authored
Aug 18, 2020
by
Shashwat Jolly
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix conflict error bug when changing the same item
parent
bec28a94
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
31 additions
and
4 deletions
+31
-4
resources/etesync/calendartaskbasehandler.cpp
resources/etesync/calendartaskbasehandler.cpp
+6
-1
resources/etesync/contacthandler.cpp
resources/etesync/contacthandler.cpp
+4
-1
resources/etesync/etesyncclientstate.cpp
resources/etesync/etesyncclientstate.cpp
+19
-0
resources/etesync/etesyncclientstate.h
resources/etesync/etesyncclientstate.h
+1
-0
resources/etesync/etesyncresource.cpp
resources/etesync/etesyncresource.cpp
+1
-1
resources/etesync/etesyncresource.h
resources/etesync/etesyncresource.h
+0
-1
No files found.
resources/etesync/calendartaskbasehandler.cpp
View file @
fe4c096c
...
...
@@ -20,6 +20,8 @@
#include <AkonadiCore/AttributeFactory>
#include <AkonadiCore/CollectionColorAttribute>
#include <AkonadiCore/CollectionModifyJob>
#include <AkonadiCore/ItemFetchJob>
#include <AkonadiCore/ItemModifyJob>
#include <KCalendarCore/ICalFormat>
#include <KCalendarCore/MemoryCalendar>
#include <KLocalizedString>
...
...
@@ -237,9 +239,12 @@ void CalendarTaskBaseHandler::itemChanged(const Akonadi::Item &item,
return
;
}
// Using ItemModifyJob + changeProcessed() instead of changeCommitted to handle conflict error - ItemSync modifies local item payload
Item
newItem
(
item
);
newItem
.
setPayload
<
Incidence
::
Ptr
>
(
incidence
);
mResource
->
changeCommitted
(
newItem
);
Akonadi
::
ItemModifyJob
*
modifyJob
=
new
Akonadi
::
ItemModifyJob
(
newItem
);
modifyJob
->
disableRevisionCheck
();
mResource
->
changeProcessed
();
updateLocalCalendar
(
item
.
payload
<
Incidence
::
Ptr
>
());
}
...
...
resources/etesync/contacthandler.cpp
View file @
fe4c096c
...
...
@@ -241,9 +241,12 @@ void ContactHandler::itemChanged(const Akonadi::Item &item,
return
;
}
// Using ItemModifyJob + changeProcessed() instead of changeCommitted to handle conflict error - ItemSync modifies local item payload
Item
newItem
(
item
);
newItem
.
setPayload
<
KContacts
::
Addressee
>
(
contact
);
mResource
->
changeCommitted
(
newItem
);
Akonadi
::
ItemModifyJob
*
modifyJob
=
new
Akonadi
::
ItemModifyJob
(
newItem
);
modifyJob
->
disableRevisionCheck
();
mResource
->
changeProcessed
();
updateLocalContact
(
item
.
payload
<
KContacts
::
Addressee
>
());
}
...
...
resources/etesync/etesyncclientstate.cpp
View file @
fe4c096c
...
...
@@ -98,6 +98,25 @@ void EteSyncClientState::refreshToken()
tokenRefreshed
();
}
void
EteSyncClientState
::
refreshUserInfo
()
{
EteSyncUserInfoManagerPtr
userInfoManager
(
etesync_user_info_manager_new
(
mClient
.
get
()));
mUserInfo
=
etesync_user_info_manager_fetch
(
userInfoManager
.
get
(),
mUsername
);
if
(
!
mUserInfo
)
{
qCWarning
(
ETESYNC_LOG
)
<<
"initUserInfo() - User info obtained from server is NULL"
;
qCDebug
(
ETESYNC_LOG
)
<<
"EteSync error"
<<
QStringFromCharPtr
(
CharPtr
(
etesync_get_error_message
()));
return
;
}
EteSyncCryptoManagerPtr
userInfoCryptoManager
=
etesync_user_info_get_crypto_manager
(
mUserInfo
.
get
(),
mDerived
);
mKeypair
=
EteSyncAsymmetricKeyPairPtr
(
etesync_user_info_get_keypair
(
mUserInfo
.
get
(),
userInfoCryptoManager
.
get
()));
if
(
!
mKeypair
)
{
qCDebug
(
ETESYNC_LOG
)
<<
"Empty keypair"
;
qCDebug
(
ETESYNC_LOG
)
<<
"EteSync error"
<<
QStringFromCharPtr
(
CharPtr
(
etesync_get_error_message
()));
return
;
}
qCDebug
(
ETESYNC_LOG
)
<<
"Received keypair"
;
}
bool
EteSyncClientState
::
initUserInfo
()
{
mJournalManager
=
EteSyncJournalManagerPtr
(
etesync_journal_manager_new
(
mClient
.
get
()));
...
...
resources/etesync/etesyncclientstate.h
View file @
fe4c096c
...
...
@@ -35,6 +35,7 @@ public:
void
initAccount
(
const
QString
&
encryptionPassword
);
void
saveSettings
();
void
invalidateToken
();
void
refreshUserInfo
();
EteSync
*
client
()
const
{
...
...
resources/etesync/etesyncresource.cpp
View file @
fe4c096c
...
...
@@ -27,7 +27,6 @@
#include <AkonadiCore/CollectionFetchScope>
#include <AkonadiCore/CollectionModifyJob>
#include <AkonadiCore/EntityDisplayAttribute>
#include <AkonadiCore/ItemFetchJob>
#include <AkonadiCore/ItemFetchScope>
#include <KCalendarCore/Event>
#include <KCalendarCore/Todo>
...
...
@@ -118,6 +117,7 @@ void EteSyncResource::retrieveCollections()
setCollectionStreamingEnabled
(
true
);
mJournalsCache
.
clear
();
mClientState
->
refreshUserInfo
();
auto
job
=
new
JournalsFetchJob
(
mClientState
->
client
(),
this
);
connect
(
job
,
&
JournalsFetchJob
::
finished
,
this
,
&
EteSyncResource
::
slotCollectionsRetrieved
);
...
...
resources/etesync/etesyncresource.h
View file @
fe4c096c
...
...
@@ -64,7 +64,6 @@ protected:
Collection
createRootCollection
();
void
initialiseDirectory
(
const
QString
&
path
)
const
;
QString
baseDirectoryPath
()
const
;
bool
handleTokenError
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment