feat(collections): show loading spinner during stale-content reloads
Document reader and collection document list only showed a spinner on first load — refetching over already-visible content (reopening a document, remote-changes refresh) had no loading indicator at all.
This commit is contained in:
@@ -65,6 +65,16 @@ struct CollectionOverviewView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading)
|
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading)
|
||||||
|
// Corner spinner for reloads with stale data already on screen
|
||||||
|
// (remote-changes refresh, tab switch after the first load) —
|
||||||
|
// `documentList`'s own spinner only covers the empty-state case.
|
||||||
|
.overlay(alignment: .topTrailing) {
|
||||||
|
if viewModel.isLoading && !viewModel.documents.isEmpty {
|
||||||
|
ProgressView()
|
||||||
|
.controlSize(.small)
|
||||||
|
.padding(12)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// No `.navigationTitle` here — it renders its own native title bubble,
|
// No `.navigationTitle` here — it renders its own native title bubble,
|
||||||
// duplicating the leading toolbar item `ContentView_macOS` already
|
// duplicating the leading toolbar item `ContentView_macOS` already
|
||||||
|
|||||||
@@ -49,6 +49,17 @@ struct DocumentReaderView: View {
|
|||||||
.padding()
|
.padding()
|
||||||
}
|
}
|
||||||
// No `.navigationTitle` here either — same reason as CollectionOverviewView.
|
// No `.navigationTitle` here either — same reason as CollectionOverviewView.
|
||||||
|
// Corner spinner, not gated on `text.isEmpty`: `viewModel.text` starts
|
||||||
|
// pre-filled from the list/summary copy of the doc, so the full-page
|
||||||
|
// spinner above rarely fires on open — without this, the re-fetch in
|
||||||
|
// `loadFullContent()` looked like nothing was happening.
|
||||||
|
.overlay(alignment: .topTrailing) {
|
||||||
|
if viewModel.isLoading && !viewModel.text.isEmpty {
|
||||||
|
ProgressView()
|
||||||
|
.controlSize(.small)
|
||||||
|
.padding(12)
|
||||||
|
}
|
||||||
|
}
|
||||||
.task { await viewModel.loadFullContent() }
|
.task { await viewModel.loadFullContent() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user