55import Foundation
66import NextcloudKit
77
8+ public protocol NCMetadataTransfersSuccessDelegate : AnyObject {
9+ func metadataTransferWillFlush( hasLivePhotos: Bool )
10+ func metadataTransferDidFlush( hasLivePhotos: Bool )
11+ }
12+
813actor NCMetadataTranfersSuccess {
914 private var tranfersSuccess : [ tableMetadata ] = [ ]
1015 private let utility = NCUtility ( )
16+ private var delegates : [ NCMetadataTransfersSuccessDelegate ] = [ ]
17+
18+ // Adds a new delegate
19+ func addDelegate( _ delegate: NCMetadataTransfersSuccessDelegate ) {
20+ delegates. append ( delegate)
21+ }
22+
23+ // Removes a delegate
24+ func removeDelegate( _ delegate: NCMetadataTransfersSuccessDelegate ) {
25+ delegates. removeAll { $0 as AnyObject === delegate as AnyObject }
26+ }
1127
1228 func append( metadata: tableMetadata , ocId: String , date: Date ? , etag: String ? ) async {
1329 metadata. ocId = ocId
@@ -55,14 +71,17 @@ actor NCMetadataTranfersSuccess {
5571
5672 func flush( ) async {
5773 let metadatas : [ tableMetadata ] = tranfersSuccess
74+ let hasLivePhotos = await NCManageDatabase . shared. hasLivePhotos ( )
5875 tranfersSuccess. removeAll ( keepingCapacity: true )
5976
60- NotificationCenter . default. postOnMainThread ( name: NCGlobal . shared. notificationCenterMetadataTranfersSuccessFlush)
61-
6277 var metadatasLocalFiles : [ tableMetadata ] = [ ]
6378 var metadatasLivePhoto : [ tableMetadata ] = [ ]
6479 var autoUploads : [ tableAutoUploadTransfer ] = [ ]
6580
81+ for delegate in delegates {
82+ delegate. metadataTransferWillFlush ( hasLivePhotos: hasLivePhotos)
83+ }
84+
6685 for metadata in metadatas {
6786 let results = await NCNetworking . shared. helperMetadataSuccess ( metadata: metadata)
6887 if let localFile = results. localFile {
@@ -99,6 +118,7 @@ actor NCMetadataTranfersSuccess {
99118 for metadata in metadatas {
100119 delegate. transferChange ( status: NCGlobal . shared. networkingStatusUploaded,
101120 account: metadata. account,
121+ fileName: metadata. fileName,
102122 serverUrl: metadata. serverUrl,
103123 selector: metadata. sessionSelector,
104124 ocId: metadata. ocId,
@@ -108,6 +128,10 @@ actor NCMetadataTranfersSuccess {
108128 }
109129 }
110130
131+ for delegate in delegates {
132+ delegate. metadataTransferDidFlush ( hasLivePhotos: hasLivePhotos)
133+ }
134+
111135 nkLog ( tag: NCGlobal . shared. logTagMetadataTransfers, message: " Flush successful ( \( metadatas. count) ) " , consoleOnly: true )
112136 }
113137}
0 commit comments