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,
id: folder.id
) {
Task {
await loadItems()
}
Task { await loadItems() }
}
.delete(item: $itemToDelete) {
Task {
await loadItems()
Task { await loadItems() }
}
}
.task(id: folder) {
.task {
await loadItems()
}
}
@ -125,8 +121,7 @@ private extension BrowseView {
}
.listStyle(.inset)
.refreshable {
Task { await loadItems()
}
Task { await loadItems() }
}
case .empty:
MessageView(
@ -137,9 +132,7 @@ private extension BrowseView {
)
case .error:
MessageView(type: .error) {
Task {
await loadItems()
}
Task { await loadItems() }
}
}
}
@ -216,6 +209,9 @@ private extension BrowseView {
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 {
status = .empty
} 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
struct BrowseView_Previews: PreviewProvider {
static var previews: some View {
NavigationView {
BrowseView(folder: .init(
id: UUID().uuidString,
id: "1234567890",
name: "Some folder name"
)) {
// show profile closure.