(core) clean up snapshot list when access rules are in effect

Summary:
When access rules are in effect on a document, non-owners currently
don't have access to snapshots. Previously when the document history
tab is opened in this situation, an error toast would appear, along
with a small message that was hard to see in dark mode. This change
removes the toast and improves the message somewhat.

Test Plan: updated test

Reviewers: jarek

Reviewed By: jarek

Differential Revision: https://phab.getgrist.com/D4218
test-server-reset
Paul Fitzpatrick 2 months ago
parent e380fcfa90
commit 67afd74817

@ -74,12 +74,24 @@ export class DocHistory extends Disposable implements IDomComponent {
docApi.getSnapshots().then(result =>
snapshots.isDisposed() || snapshots.set(result.snapshots)).catch(err => {
snapshotsDenied.set(true);
reportError(err);
// "cannot confirm access" is what we expect if snapshots
// are denied because of access rules.
if (!String(err).match(/cannot confirm access/)) {
reportError(err);
}
});
return dom(
'div',
{tabIndex: '-1'}, // Voodoo needed to allow copying text.
dom.maybe(snapshotsDenied, () => cssSnapshotDenied(
t("Snapshots are unavailable."),
dom(
'p',
t("Snapshots are unavailable."),
),
dom(
'p',
t("Only owners have access to snapshots for documents with access rules."),
),
testId('doc-history-error'))),
// Note that most recent snapshots are first.
dom.domComputed(snapshots, (snapshotList) => snapshotList.map((snapshot, index) => {
@ -128,6 +140,8 @@ const cssSnapshot = styled('div', `
const cssSnapshotDenied = styled('div', `
margin: 8px 16px;
text-align: center;
color: ${theme.text};
`);
const cssSnapshotTime = styled('div', `

@ -1715,7 +1715,7 @@ export class ActiveDoc extends EventEmitter {
public async getSnapshots(docSession: OptDocSession, skipMetadataCache?: boolean): Promise<DocSnapshots> {
if (await this._granularAccess.hasNuancedAccess(docSession)) {
throw new Error('cannot confirm access to snapshots');
throw new Error('cannot confirm access to snapshots because of access rules');
}
return this._docManager.storageManager.getSnapshots(this.docName, skipMetadataCache);
}

Loading…
Cancel
Save