mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-15 15:02:04 +00:00
fix: preserve account access compatibility
This commit is contained in:
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",
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user