fix: preserve account access compatibility

This commit is contained in:
Marc-André Bombeck committed 2026-08-05 23:58:26 +02:00
1 parent e4e773d543
commit 4923db6464
23 files changed
+288 -14

No files matched your search

@@ -27,6 +27,7 @@ const READ_ONLY: AccountAccessEntry = {
access: "read",
level: "read",
sections: null,
recordKind: "shared",
canWrite: false,
};
@@ -39,7 +40,7 @@ const WRITABLE: AccountAccessEntry = {
const MANAGING: AccountAccessEntry = {
...READ_ONLY,
access: "manage",
access: "write",
level: "manage",
canWrite: true,
};
@@ -64,6 +65,7 @@ describe("resolveRecordCapabilities", () => {
// apart from a real one.
level: null,
sections: null,
recordKind: "self",
});
expect(resolveRecordCapabilities(undefined)).toEqual(
resolveRecordCapabilities(null),
@@ -78,6 +80,7 @@ describe("resolveRecordCapabilities", () => {
canManage: false,
level: "read",
sections: null,
recordKind: "shared",
});
});
@@ -91,6 +94,7 @@ describe("resolveRecordCapabilities", () => {
canManage: false,
level: "write",
sections: null,
recordKind: "shared",
});
});
@@ -121,6 +125,7 @@ describe("resolveRecordCapabilities", () => {
canManage: false,
level: "manage",
sections: null,
recordKind: "shared",
});
});
+7
View File
@@ -34,6 +34,7 @@ import type { AccountAccess } from "@/lib/sharing/account-access-view";
export const NO_ACCOUNT_ACCESS: AccountAccess = {
accounts: [],
active: null,
recordKind: "self",
canSwitch: false,
};
@@ -347,6 +348,12 @@ function coerceAccountAccess(value: unknown): AccountAccess {
return {
accounts: block.accounts,
active: block.active ?? null,
recordKind:
block.recordKind === "self" ||
block.recordKind === "shared" ||
block.recordKind === "managed"
? block.recordKind
: "self",
canSwitch: block.canSwitch === true,
};
}
+4
View File
@@ -98,6 +98,8 @@ export interface RecordCapabilities {
* nothing; it is a real answer and reads as one.
*/
sections: AccountAccessEntry["sections"];
/** The server-resolved kind of the record currently in view. */
recordKind: AccountAccessEntry["recordKind"] | "self";
}
/**
@@ -122,6 +124,7 @@ export function resolveRecordCapabilities(
// to tell those apart would have to guess.
level: null,
sections: null,
recordKind: "self",
};
}
return {
@@ -131,6 +134,7 @@ export function resolveRecordCapabilities(
canManage: false,
level: active.level,
sections: active.sections,
recordKind: active.recordKind,
};
}