mirror of
https://github.com/etesync/android
synced 2025-05-13 20:38:50 +00:00
SyncManager: correctly set the item's UID in the metadata.
We were only populating the uid after setting it in the metadata so we were always setting null in the metadata which was causing errors.
This commit is contained in:
parent
6459d71ab6
commit
00a1a223d0
@ -107,7 +107,7 @@ class LocalContact : AndroidContact, LocalAddress {
|
|||||||
this.eTag = eTag
|
this.eTag = eTag
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun prepareForUpload(fileName_: String?) {
|
override fun legacyPrepareForUpload(fileName_: String?) {
|
||||||
val uid = UUID.randomUUID().toString()
|
val uid = UUID.randomUUID().toString()
|
||||||
|
|
||||||
val values = ContentValues(2)
|
val values = ContentValues(2)
|
||||||
@ -119,6 +119,16 @@ class LocalContact : AndroidContact, LocalAddress {
|
|||||||
this.fileName = fileName
|
this.fileName = fileName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun prepareForUpload(fileName: String, uid: String) {
|
||||||
|
val values = ContentValues(2)
|
||||||
|
values.put(AndroidContact.COLUMN_FILENAME, fileName)
|
||||||
|
values.put(AndroidContact.COLUMN_UID, uid)
|
||||||
|
addressBook.provider?.update(rawContactSyncURI(), values, null, null)
|
||||||
|
|
||||||
|
contact?.uid = uid
|
||||||
|
this.fileName = fileName
|
||||||
|
}
|
||||||
|
|
||||||
override fun populateData(mimeType: String, row: ContentValues) {
|
override fun populateData(mimeType: String, row: ContentValues) {
|
||||||
when (mimeType) {
|
when (mimeType) {
|
||||||
CachedGroupMembership.CONTENT_ITEM_TYPE -> cachedGroupMemberships.add(row.getAsLong(CachedGroupMembership.GROUP_ID))
|
CachedGroupMembership.CONTENT_ITEM_TYPE -> cachedGroupMemberships.add(row.getAsLong(CachedGroupMembership.GROUP_ID))
|
||||||
|
@ -133,7 +133,7 @@ class LocalEvent : AndroidEvent, LocalResource<Event> {
|
|||||||
|
|
||||||
/* custom queries */
|
/* custom queries */
|
||||||
|
|
||||||
override fun prepareForUpload(fileName_: String?) {
|
override fun legacyPrepareForUpload(fileName_: String?) {
|
||||||
var uid: String? = null
|
var uid: String? = null
|
||||||
val c = calendar.provider.query(eventSyncURI(), arrayOf(COLUMN_UID), null, null, null)
|
val c = calendar.provider.query(eventSyncURI(), arrayOf(COLUMN_UID), null, null, null)
|
||||||
if (c.moveToNext())
|
if (c.moveToNext())
|
||||||
@ -156,6 +156,16 @@ class LocalEvent : AndroidEvent, LocalResource<Event> {
|
|||||||
event.uid = uid
|
event.uid = uid
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun prepareForUpload(fileName: String, uid: String) {
|
||||||
|
val values = ContentValues(2)
|
||||||
|
values.put(Events._SYNC_ID, fileName)
|
||||||
|
values.put(COLUMN_UID, uid)
|
||||||
|
calendar.provider.update(eventSyncURI(), values, null, null)
|
||||||
|
|
||||||
|
event?.uid = uid
|
||||||
|
this.fileName = fileName
|
||||||
|
}
|
||||||
|
|
||||||
override fun resetDeleted() {
|
override fun resetDeleted() {
|
||||||
val values = ContentValues(1)
|
val values = ContentValues(1)
|
||||||
values.put(CalendarContract.Events.DELETED, 0)
|
values.put(CalendarContract.Events.DELETED, 0)
|
||||||
|
@ -156,7 +156,7 @@ class LocalGroup : AndroidGroup, LocalAddress {
|
|||||||
batch.commit()
|
batch.commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun prepareForUpload(fileName_: String?) {
|
override fun legacyPrepareForUpload(fileName_: String?) {
|
||||||
val uid = UUID.randomUUID().toString()
|
val uid = UUID.randomUUID().toString()
|
||||||
|
|
||||||
val values = ContentValues(2)
|
val values = ContentValues(2)
|
||||||
@ -168,6 +168,16 @@ class LocalGroup : AndroidGroup, LocalAddress {
|
|||||||
this.fileName = fileName
|
this.fileName = fileName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun prepareForUpload(fileName: String, uid: String) {
|
||||||
|
val values = ContentValues(2)
|
||||||
|
values.put(AndroidGroup.COLUMN_FILENAME, fileName)
|
||||||
|
values.put(AndroidGroup.COLUMN_UID, uid)
|
||||||
|
addressBook.provider?.update(groupSyncUri(), values, null, null)
|
||||||
|
|
||||||
|
contact?.uid = uid
|
||||||
|
this.fileName = fileName
|
||||||
|
}
|
||||||
|
|
||||||
override fun resetDeleted() {
|
override fun resetDeleted() {
|
||||||
val values = ContentValues(1)
|
val values = ContentValues(1)
|
||||||
values.put(Groups.DELETED, 0)
|
values.put(Groups.DELETED, 0)
|
||||||
|
@ -20,8 +20,9 @@ interface LocalResource<in TData: Any> {
|
|||||||
|
|
||||||
fun delete(): Int
|
fun delete(): Int
|
||||||
|
|
||||||
// FIXME: The null is for legacy
|
fun legacyPrepareForUpload(fileName: String?)
|
||||||
fun prepareForUpload(fileName: String?)
|
|
||||||
|
fun prepareForUpload(fileName: String, uid: String)
|
||||||
|
|
||||||
fun clearDirty(eTag: String?)
|
fun clearDirty(eTag: String?)
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ class LocalTask : AndroidTask, LocalResource<Task> {
|
|||||||
|
|
||||||
/* custom queries */
|
/* custom queries */
|
||||||
|
|
||||||
override fun prepareForUpload(fileName_: String?) {
|
override fun legacyPrepareForUpload(fileName_: String?) {
|
||||||
var uid: String? = null
|
var uid: String? = null
|
||||||
val c = taskList.provider.client.query(taskSyncURI(), arrayOf(COLUMN_UID), null, null, null)
|
val c = taskList.provider.client.query(taskSyncURI(), arrayOf(COLUMN_UID), null, null, null)
|
||||||
if (c.moveToNext())
|
if (c.moveToNext())
|
||||||
@ -118,6 +118,16 @@ class LocalTask : AndroidTask, LocalResource<Task> {
|
|||||||
task.uid = uid
|
task.uid = uid
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun prepareForUpload(fileName: String, uid: String) {
|
||||||
|
val values = ContentValues(2)
|
||||||
|
values.put(TaskContract.Tasks._SYNC_ID, fileName)
|
||||||
|
values.put(COLUMN_UID, uid)
|
||||||
|
taskList.provider.client.update(taskSyncURI(), values, null, null)
|
||||||
|
|
||||||
|
task?.uid = uid
|
||||||
|
this.fileName = fileName
|
||||||
|
}
|
||||||
|
|
||||||
override fun resetDeleted() {
|
override fun resetDeleted() {
|
||||||
val values = ContentValues(1)
|
val values = ContentValues(1)
|
||||||
values.put(TaskContract.Tasks._DELETED, 0)
|
values.put(TaskContract.Tasks._DELETED, 0)
|
||||||
|
@ -651,12 +651,13 @@ constructor(protected val context: Context, protected val account: Account, prot
|
|||||||
item = cacheItem.item
|
item = cacheItem.item
|
||||||
itemUpdateMtime(item)
|
itemUpdateMtime(item)
|
||||||
} else {
|
} else {
|
||||||
|
val uid = UUID.randomUUID().toString()
|
||||||
val meta = ItemMetadata()
|
val meta = ItemMetadata()
|
||||||
meta.name = local.uuid!!
|
meta.name = uid
|
||||||
meta.setMtime(System.currentTimeMillis())
|
meta.mtime = System.currentTimeMillis()
|
||||||
item = itemMgr.create(meta, "")
|
item = itemMgr.create(meta, "")
|
||||||
|
|
||||||
local.prepareForUpload(item.uid)
|
local.prepareForUpload(item.uid, uid)
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -773,7 +774,7 @@ constructor(protected val context: Context, protected val account: Account, prot
|
|||||||
if (isLegacy) {
|
if (isLegacy) {
|
||||||
// It's done later for non-legacy
|
// It's done later for non-legacy
|
||||||
Logger.log.fine("Entry deleted before ever syncing - genarting a UUID")
|
Logger.log.fine("Entry deleted before ever syncing - genarting a UUID")
|
||||||
local.prepareForUpload(null)
|
local.legacyPrepareForUpload(null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -812,7 +813,7 @@ constructor(protected val context: Context, protected val account: Account, prot
|
|||||||
}
|
}
|
||||||
|
|
||||||
Logger.log.fine("Found local record without file name; generating file name/UID if necessary")
|
Logger.log.fine("Found local record without file name; generating file name/UID if necessary")
|
||||||
local.prepareForUpload(null)
|
local.legacyPrepareForUpload(null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user