I've got this all implemented now, thanks for all the help.
I did come across an error but it's a bit obscure and maybe working as intended as it would only show up in certain scenarios.
If "delete files that are not on the auto-sync list from device" is unticked but the "confirm deletion" is ticked. Like in the picture below.
And the deletes variable in PrepareSynchronisation is populated, the sync will error with the following message
Length cannot be less than zero.Parameter name: length
The solution is to just tick the deletes option, untick the confirm box and then untick the deletes option again.
Normally you wouldn't populate the deletes variable if the delete files setting was unchecked, I only came across the error because I hadn't put in code to check that setting yet and I'm doing a bit of a workaround to calculate deletes at the moment instead of doing it properly.
Like i said, maybe it's working as intended and I doubt it will matter if you just leave it as is but I figured I would mention it in case it might be causing other errors somewhere.