Remove items in Fileprovider

After I receive an apns request. func enumerateItems(for observer: NSFileProviderEnumerationObserver, startingAt page: NSFileProviderPage) will be called. And I start fetch new items from my server. If new items have been deleted something that old items which already showed to the user contains. These have been deleted items will not disappear on the screen.

func enumerateItems(for observer: NSFileProviderEnumerationObserver, startingAt page: NSFileProviderPage) {

        task = Task {

            do {

                let flat = MediaItemReference.flat(enumeratedItemIdentifier == .rootContainer ? root : enumeratedItemIdentifier.rawValue)

                guard let uuid = UUID(uuidString: flat.identifier) else {

                    observer.finishEnumeratingWithError(FileProviderError.other)

                    return

                }

                let fileContents = try await WebApi.getSubForFileProvider(uuid)

                let refs = fileContents.map { fileContent -> MediaItemReference in

                    InfoPool.shared.set(fileContent.uuid.uuidString, value: fileContent)

                    return MediaItemReference(

                        identifier: fileContent.uuid.uuidString,

                        isDirectory: fileContent.isDictionary,

                        filename: fileContent.name,

                        father: uuid.uuidString)

                }

                let items = refs.map(FileProviderItem.init(reference:))

                observer.didEnumerate(items)

                observer.finishEnumerating(upTo: nil)

            } catch {

                print("=>", error.localizedDescription)

                observer.finishEnumeratingWithError(error)

            }

        }

    }
Answered by ZhuHaoyu in 703737022

Use isTrushed in Item

Accepted Answer

Use isTrushed in Item

Remove items in Fileprovider
 
 
Q