diff --git a/lib/permissions/special-roles.js b/lib/permissions/special-roles.js --- a/lib/permissions/special-roles.js +++ b/lib/permissions/special-roles.js @@ -28,18 +28,26 @@ }); function patchRoleInfoWithSpecialRole(role: RoleInfo): RoleInfo { + // We removed the `.isDefault` field from `RoleInfo`, but persisted + // `RoleInfo`s will still have the field until this migration. + // $FlowIgnore[prop-missing] + const { isDefault, ...roleSansIsDefault } = role; if (roleIsDefaultRole(role)) { return { - ...role, + ...roleSansIsDefault, specialRole: specialRoles.DEFAULT_ROLE, }; } else if (roleIsAdminRole(role)) { return { - ...role, + ...roleSansIsDefault, specialRole: specialRoles.ADMIN_ROLE, }; + } else { + return { + ...roleSansIsDefault, + specialRole: null, + }; } - return role; } function patchRawThreadInfoWithSpecialRole( diff --git a/lib/permissions/special-roles.test.js b/lib/permissions/special-roles.test.js --- a/lib/permissions/special-roles.test.js +++ b/lib/permissions/special-roles.test.js @@ -41,7 +41,7 @@ permissions: ['abc', 'def'], }; const patchedRole = patchRoleInfoWithSpecialRole(role); - expect(patchedRole.specialRole).toBe(undefined); + expect(patchedRole.specialRole).toBe(null); }); }); @@ -218,6 +218,6 @@ ); expect( patchedRawThreadInfos['256|83814'].roles['256|83815'].specialRole, - ).toBe(undefined); + ).toBe(null); }); });