@@ -107,28 +107,35 @@ class SyncingService {
107
107
108
108
/// Handle downloading, uploading or deleting of attachments
109
109
Future <void > handleSync (Iterable <Attachment > attachments) async {
110
- if (isProcessing == true ) {
111
- return ;
112
- }
113
-
114
- isProcessing = true ;
115
-
116
- for (Attachment attachment in attachments) {
117
- if (AttachmentState .queuedDownload.index == attachment.state) {
118
- log.info ('Downloading ${attachment .filename }' );
119
- await downloadAttachment (attachment);
120
- }
121
- if (AttachmentState .queuedUpload.index == attachment.state) {
122
- log.info ('Uploading ${attachment .filename }' );
123
- await uploadAttachment (attachment);
110
+ if (isProcessing == true ) {
111
+ return ;
124
112
}
125
- if (AttachmentState .queuedDelete.index == attachment.state) {
126
- log.info ('Deleting ${attachment .filename }' );
127
- await deleteAttachment (attachment);
113
+
114
+ try {
115
+ isProcessing = true ;
116
+
117
+ for (Attachment attachment in attachments) {
118
+ if (AttachmentState .queuedDownload.index == attachment.state) {
119
+ log.info ('Downloading ${attachment .filename }' );
120
+ await downloadAttachment (attachment);
121
+ }
122
+ if (AttachmentState .queuedUpload.index == attachment.state) {
123
+ log.info ('Uploading ${attachment .filename }' );
124
+ await uploadAttachment (attachment);
125
+ }
126
+ if (AttachmentState .queuedDelete.index == attachment.state) {
127
+ log.info ('Deleting ${attachment .filename }' );
128
+ await deleteAttachment (attachment);
129
+ }
128
130
}
131
+ } catch (error) {
132
+ log.severe (error);
133
+ rethrow ;
134
+ } finally {
135
+ // if anything throws an exception
136
+ // reset the ability to sync again
137
+ isProcessing = false ;
129
138
}
130
-
131
- isProcessing = false ;
132
139
}
133
140
134
141
/// Watcher for changes to attachments table
0 commit comments