Added throttle to the "loadItems()" function in the BrowseView view for the browse module.

This commit is contained in:
Javier Cicchelli 2022-12-18 14:38:29 +01:00
parent 6d1cf6f93e
commit 32c5fda8f1

View File

@ -80,16 +80,12 @@ public struct BrowseView: View {
isPresenting: $showCreateFolder, isPresenting: $showCreateFolder,
id: folder.id id: folder.id
) { ) {
Task { Task { await loadItems() }
await loadItems()
}
} }
.delete(item: $itemToDelete) { .delete(item: $itemToDelete) {
Task { Task { await loadItems() }
await loadItems()
}
} }
.task(id: folder) { .task {
await loadItems() await loadItems()
} }
} }
@ -125,8 +121,7 @@ private extension BrowseView {
} }
.listStyle(.inset) .listStyle(.inset)
.refreshable { .refreshable {
Task { await loadItems() Task { await loadItems() }
}
} }
case .empty: case .empty:
MessageView( MessageView(
@ -137,9 +132,7 @@ private extension BrowseView {
) )
case .error: case .error:
MessageView(type: .error) { MessageView(type: .error) {
Task { Task { await loadItems() }
await loadItems()
}
} }
} }
} }
@ -216,6 +209,9 @@ private extension BrowseView {
password: account.password password: account.password
) )
// Added some throttle (1 second) not to hide the loading indicator right away.
try await Task.sleep(nanoseconds: .Constants.secondInNanoseconds)
if loadedItems.isEmpty { if loadedItems.isEmpty {
status = .empty status = .empty
} else { } else {
@ -239,13 +235,21 @@ private extension BrowseView {
} }
} }
// MARK: - UInt64+Constants
private extension UInt64 {
enum Constants {
static let secondInNanoseconds = UInt64(1 * Double(NSEC_PER_SEC))
}
}
// MARK: - Previews // MARK: - Previews
struct BrowseView_Previews: PreviewProvider { struct BrowseView_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
NavigationView { NavigationView {
BrowseView(folder: .init( BrowseView(folder: .init(
id: UUID().uuidString, id: "1234567890",
name: "Some folder name" name: "Some folder name"
)) { )) {
// show profile closure. // show profile closure.