-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: followers settings schema and behavior #1211
Conversation
Codecov ReportPatch coverage:
Additional details and impacted files@@ Coverage Diff @@
## master #1211 +/- ##
==========================================
Coverage 100.00% 100.00%
==========================================
Files 732 738 +6
Lines 13110 13227 +117
Branches 2237 2257 +20
==========================================
+ Hits 13110 13227 +117
☔ View full report in Codecov by Sentry. |
@@ -30,6 +30,19 @@ export const HubItemEntitySchema: IConfigurationSchema = { | |||
categories: ENTITY_CATEGORIES_SCHEMA, | |||
isDiscussable: ENTITY_IS_DISCUSSABLE_SCHEMA, | |||
_thumbnail: ENTITY_IMAGE_SCHEMA, | |||
_followers: { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does _followers
need to be on the base schema, or should it only exist on SiteSchema
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a good callout - I put it here because although the concept of a followers group only exists for sites today, I think the idea is that any item-backed entity could have a followers group in the future. That's also why I've added the IWithFollowers
and IWithFollowersBehavior
to the IHubItemEntity
and HubItemEntity
respectively rather than just to the HubSite
.
With that said, if you think it would make more sense to keep this scoped to sites until followers are actually implemented for other entities, I can move it for now
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks makes sense to leave it for potential future use cases. Looks good!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We will add followers for Initiative and Project - the only reason it's on now Site is b/c that was/is synonymous with "Initiative".
@@ -403,10 +403,15 @@ export class HubSite | |||
* @returns | |||
*/ | |||
toEditor(editorContext: IEntityEditorContext = {}): IHubSiteEditor { | |||
// Cast the entity to it's editor | |||
// 1. Cast entity to editor |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
btw- these incremental comments are great - I'm going to start doing this
packages/common/src/sites/_internal/capabilities/capabilityToFeatureMap.ts
Show resolved
Hide resolved
@@ -25,6 +26,8 @@ export function upgradeSiteSchema(model: IModel) { | |||
model = _ensureTelemetry<IModel>(model); | |||
model = _migrateFeedConfig(model); | |||
model = _migrateEventListCardConfigs(model); | |||
model = migrateLegacyCapabilitiesToFeatures(model); | |||
|
|||
// WARNING - If you are writing a site schema migration, | |||
// you probably need to apply it to site drafts as well! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI capabilities
are also in the DRAFT ->
"data.values.capabilities", |
I think we need to address this... although I'm not deep enough in this to really know the impacts
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for bringing this up. I discussed it with Jupe and we think drafts are a larger issue. We've added a meeting to the calendar to discuss. Going to get this merged in, and we can circle back to address drafts holistically.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great - only thing is to assess if/how/where we integrate the migration into the Draft system. As noted, this is not an issue for the Version system, but that's not in production yet.
# @esri/hub-common [14.15.0](https://github.com/Esri/hub.js/compare/@esri/[email protected]...@esri/[email protected]) (2023-09-18) ### Features * followers settings schema and behavior ([#1211](#1211)) ([a8be73b](a8be73b))
# [26.1.0](https://github.com/Esri/hub.js/compare/@esri/[email protected]...@esri/[email protected]) (2023-10-08) ### Bug Fixes * update groups link from teams to groups ([#1262](#1262)) ([26dd47a](26dd47a)) * **hub-discussions:** add author and editor to isearchchannels ([#1257](#1257)) ([5d22e8b](5d22e8b)) * add featured content to initiatives edit ([#1208](#1208)) ([a3f0361](a3f0361)) * add Project to wellKnownColletions ([#1254](#1254)) ([82eb6a1](82eb6a1)) * added default empty quotes for computeProps ([#1204](#1204)) ([3c83e4a](3c83e4a)) * auto-populating groups in project creation ([#1225](#1225)) ([0b9465f](0b9465f)) * checkPermission and checkPrivileges first check isAuthenticated ([#1227](#1227)) ([b292131](b292131)) * ensure featured content catalogs are returned as an array ([#1207](#1207)) ([d28b56f](d28b56f)) * properly deserialize trustedOrgs from context ([#1256](#1256)) ([760b4ff](760b4ff)) * **hub-common:** content location should be of type extent, not polygon ([#1228](#1228)) ([c5539f4](c5539f4)) * **hub-common:** fix fetchHubContent does not support slugs ([#1216](#1216)) ([d3a4eba](d3a4eba)) * **hub-common:** re-adds the discussion permissions to validPermissions array ([#1223](#1223)) ([9db7245](9db7245)) * **hub-common:** workspace route for content is /workspace/content/:id not /workspace/contents/:id ([#1250](#1250)) ([f2c6679](f2c6679)) * uiSchema translation keys ([#1224](#1224)) ([a55292f](a55292f)) ### Features * **hub-common:** adds followers group discussion settings on site wo… ([#1251](#1251)) ([e0beb59](e0beb59)) * Add Initiative and Project Associations ([#1213](#1213)) ([7cb0298](7cb0298)) * add links hash for project, initiative, and group entities ([#1226](#1226)) ([aba8f7b](aba8f7b)) * add new polling util ([#1265](#1265)) ([e36c142](e36c142)) * add option to enrich an entity ([#1220](#1220)) ([0b57ff5](0b57ff5)) * add supporting groups to sites property map ([#1205](#1205)) ([2d473d6](2d473d6)) * add workspaceRelative to enrichGroupSearchResult ([#1206](#1206)) ([f6d2016](f6d2016)) * addGroupMembers ([#1230](#1230)) ([3a7c900](3a7c900)) * adds entity discussion settings ([#1221](#1221)) ([5e25a43](5e25a43)) * adds getChannelUsersQuery method, bumps to @esri/arcgis-rest-port… ([#1210](#1210)) ([320d6d8](320d6d8)) * collaborator pane for content workspace ([#1259](#1259)) ([e00e624](e00e624)) * initiative template entity ([#1229](#1229)) ([f5a995a](f5a995a)) * initiative template workspace ([#1246](#1246)) ([cb385e5](cb385e5)) * scaffold solution template entity ([#1253](#1253)) ([54d1fe6](54d1fe6)) * **hub-common:** add application type content edit link ([#1217](#1217)) ([82ceec4](82ceec4)) * **hub-common:** add blocked as a possible PostStatus ([#1222](#1222)) ([11c8a58](11c8a58)) * **hub-common:** add content settings schemas and derive props from server definitions ([#1209](#1209)) ([1721285](1721285)) * **hub-common:** add hub:[entity]:manage permission for all entities ([#1202](#1202)) ([71191b7](71191b7)) * **hub-discussions:** adding ability to update the groups of a channel ([#1218](#1218)) ([7bc2117](7bc2117)) * followers settings schema and behavior ([#1211](#1211)) ([a8be73b](a8be73b)) * item extent now selectable, savable, and reflects in old and new view ([#1212](#1212)) ([5dbe3bb](5dbe3bb)) * partnered orgs added to context ([#1214](#1214)) ([7979571](7979571)) * refactor entity schema implementation ([#1203](#1203)) ([88cdd2b](88cdd2b))
# [14.1.0](https://github.com/Esri/hub.js/compare/@esri/[email protected]...@esri/[email protected]) (2023-10-08) ### Bug Fixes * update groups link from teams to groups ([#1262](#1262)) ([26dd47a](26dd47a)) * **hub-discussions:** add author and editor to isearchchannels ([#1257](#1257)) ([5d22e8b](5d22e8b)) * account for index values that are 0 in card view models ([#1196](#1196)) ([bbc1928](bbc1928)) * add featured content to initiatives edit ([#1208](#1208)) ([a3f0361](a3f0361)) * add Project to wellKnownColletions ([#1254](#1254)) ([82eb6a1](82eb6a1)) * add shareContent group permission and minor hub group clean up ([#1194](#1194)) ([9a90b6d](9a90b6d)) * added default empty quotes for computeProps ([#1204](#1204)) ([3c83e4a](3c83e4a)) * auto-populating groups in project creation ([#1225](#1225)) ([0b9465f](0b9465f)) * checkPermission and checkPrivileges first check isAuthenticated ([#1227](#1227)) ([b292131](b292131)) * ensure featured content catalogs are returned as an array ([#1207](#1207)) ([d28b56f](d28b56f)) * properly deserialize trustedOrgs from context ([#1256](#1256)) ([760b4ff](760b4ff)) * **hub-common:** content location should be of type extent, not polygon ([#1228](#1228)) ([c5539f4](c5539f4)) * **hub-common:** fix fetchHubContent does not support slugs ([#1216](#1216)) ([d3a4eba](d3a4eba)) * **hub-common:** re-adds the discussion permissions to validPermissions array ([#1223](#1223)) ([9db7245](9db7245)) * **hub-common:** workspace route for content is /workspace/content/:id not /workspace/contents/:id ([#1250](#1250)) ([f2c6679](f2c6679)) * rollback stat migration ([#1193](#1193)) ([8465e15](8465e15)) * shouldClearEmptyFields now accounts for licenseInfo ([#1198](#1198)) ([3f4eb47](3f4eb47)) * uiSchema translation keys ([#1224](#1224)) ([a55292f](a55292f)) * **hub-discussions:** user can read channel if group is non-discussable ([#1201](#1201)) ([28d61f3](28d61f3)) ### Features * **hub-common:** adds followers group discussion settings on site wo… ([#1251](#1251)) ([e0beb59](e0beb59)) * add feature and entity flagging into checkPermission ([#1187](#1187)) ([b040283](b040283)) * Add Initiative and Project Associations ([#1213](#1213)) ([7cb0298](7cb0298)) * add invite users to hub group ([#1197](#1197)) ([014b2bd](014b2bd)) * add links hash for project, initiative, and group entities ([#1226](#1226)) ([aba8f7b](aba8f7b)) * add member role badges to user card model ([#1195](#1195)) ([e09608d](e09608d)) * add new polling util ([#1265](#1265)) ([e36c142](e36c142)) * add option to enrich an entity ([#1220](#1220)) ([0b57ff5](0b57ff5)) * add supporting groups to sites property map ([#1205](#1205)) ([2d473d6](2d473d6)) * add workspaceRelative to enrichGroupSearchResult ([#1206](#1206)) ([f6d2016](f6d2016)) * addGroupMembers ([#1230](#1230)) ([3a7c900](3a7c900)) * adding license picker to content workspace ([#1192](#1192)) ([312b333](312b333)) * adds entity discussion settings ([#1221](#1221)) ([5e25a43](5e25a43)) * adds getChannelUsersQuery method, bumps to @esri/arcgis-rest-port… ([#1210](#1210)) ([320d6d8](320d6d8)) * collaborator pane for content workspace ([#1259](#1259)) ([e00e624](e00e624)) * initiative template entity ([#1229](#1229)) ([f5a995a](f5a995a)) * initiative template workspace ([#1246](#1246)) ([cb385e5](cb385e5)) * scaffold solution template entity ([#1253](#1253)) ([54d1fe6](54d1fe6)) * **hub-common:** add application type content edit link ([#1217](#1217)) ([82ceec4](82ceec4)) * **hub-common:** add blocked as a possible PostStatus ([#1222](#1222)) ([11c8a58](11c8a58)) * **hub-common:** add content settings schemas and derive props from server definitions ([#1209](#1209)) ([1721285](1721285)) * **hub-common:** add getResultSiteRelativeLink so Hub Page results can have slugs in siteRelative l ([#1200](#1200)) ([27e0740](27e0740)) * **hub-common:** add hub:[entity]:manage permission for all entities ([#1202](#1202)) ([71191b7](71191b7)) * **hub-common:** add icon for Discussion content type ([#1185](#1185)) ([7ae927a](7ae927a)) * **hub-discussions:** adding ability to update the groups of a channel ([#1218](#1218)) ([7bc2117](7bc2117)) * followers settings schema and behavior ([#1211](#1211)) ([a8be73b](a8be73b)) * item extent now selectable, savable, and reflects in old and new view ([#1212](#1212)) ([5dbe3bb](5dbe3bb)) * partnered orgs added to context ([#1214](#1214)) ([7979571](7979571)) * refactor entity schema implementation ([#1203](#1203)) ([88cdd2b](88cdd2b)) * **hub-common:** add unified "links" hash as an optional property for all entities ([#1199](#1199)) ([ba14502](ba14502)) * site's followers pane permissions ([#1186](#1186)) ([90feec7](90feec7)) * ungate dashboard from projects ([#1188](#1188)) ([658b936](658b936))
# [14.1.0](https://github.com/Esri/hub.js/compare/@esri/[email protected]...@esri/[email protected]) (2023-10-08) ### Bug Fixes * update groups link from teams to groups ([#1262](#1262)) ([26dd47a](26dd47a)) * **hub-discussions:** add author and editor to isearchchannels ([#1257](#1257)) ([5d22e8b](5d22e8b)) * account for index values that are 0 in card view models ([#1196](#1196)) ([bbc1928](bbc1928)) * add featured content to initiatives edit ([#1208](#1208)) ([a3f0361](a3f0361)) * add Project to wellKnownColletions ([#1254](#1254)) ([82eb6a1](82eb6a1)) * add shareContent group permission and minor hub group clean up ([#1194](#1194)) ([9a90b6d](9a90b6d)) * added default empty quotes for computeProps ([#1204](#1204)) ([3c83e4a](3c83e4a)) * auto-populating groups in project creation ([#1225](#1225)) ([0b9465f](0b9465f)) * checkPermission and checkPrivileges first check isAuthenticated ([#1227](#1227)) ([b292131](b292131)) * ensure featured content catalogs are returned as an array ([#1207](#1207)) ([d28b56f](d28b56f)) * properly deserialize trustedOrgs from context ([#1256](#1256)) ([760b4ff](760b4ff)) * **hub-common:** content location should be of type extent, not polygon ([#1228](#1228)) ([c5539f4](c5539f4)) * **hub-common:** fix fetchHubContent does not support slugs ([#1216](#1216)) ([d3a4eba](d3a4eba)) * **hub-common:** re-adds the discussion permissions to validPermissions array ([#1223](#1223)) ([9db7245](9db7245)) * **hub-common:** workspace route for content is /workspace/content/:id not /workspace/contents/:id ([#1250](#1250)) ([f2c6679](f2c6679)) * shouldClearEmptyFields now accounts for licenseInfo ([#1198](#1198)) ([3f4eb47](3f4eb47)) * uiSchema translation keys ([#1224](#1224)) ([a55292f](a55292f)) * **hub-discussions:** user can read channel if group is non-discussable ([#1201](#1201)) ([28d61f3](28d61f3)) ### Features * **hub-common:** adds followers group discussion settings on site wo… ([#1251](#1251)) ([e0beb59](e0beb59)) * Add Initiative and Project Associations ([#1213](#1213)) ([7cb0298](7cb0298)) * add invite users to hub group ([#1197](#1197)) ([014b2bd](014b2bd)) * add links hash for project, initiative, and group entities ([#1226](#1226)) ([aba8f7b](aba8f7b)) * add member role badges to user card model ([#1195](#1195)) ([e09608d](e09608d)) * add new polling util ([#1265](#1265)) ([e36c142](e36c142)) * add option to enrich an entity ([#1220](#1220)) ([0b57ff5](0b57ff5)) * add supporting groups to sites property map ([#1205](#1205)) ([2d473d6](2d473d6)) * add workspaceRelative to enrichGroupSearchResult ([#1206](#1206)) ([f6d2016](f6d2016)) * addGroupMembers ([#1230](#1230)) ([3a7c900](3a7c900)) * adding license picker to content workspace ([#1192](#1192)) ([312b333](312b333)) * adds entity discussion settings ([#1221](#1221)) ([5e25a43](5e25a43)) * adds getChannelUsersQuery method, bumps to @esri/arcgis-rest-port… ([#1210](#1210)) ([320d6d8](320d6d8)) * collaborator pane for content workspace ([#1259](#1259)) ([e00e624](e00e624)) * initiative template entity ([#1229](#1229)) ([f5a995a](f5a995a)) * initiative template workspace ([#1246](#1246)) ([cb385e5](cb385e5)) * scaffold solution template entity ([#1253](#1253)) ([54d1fe6](54d1fe6)) * **hub-common:** add application type content edit link ([#1217](#1217)) ([82ceec4](82ceec4)) * **hub-common:** add blocked as a possible PostStatus ([#1222](#1222)) ([11c8a58](11c8a58)) * **hub-common:** add content settings schemas and derive props from server definitions ([#1209](#1209)) ([1721285](1721285)) * **hub-common:** add getResultSiteRelativeLink so Hub Page results can have slugs in siteRelative l ([#1200](#1200)) ([27e0740](27e0740)) * **hub-common:** add hub:[entity]:manage permission for all entities ([#1202](#1202)) ([71191b7](71191b7)) * **hub-discussions:** adding ability to update the groups of a channel ([#1218](#1218)) ([7bc2117](7bc2117)) * followers settings schema and behavior ([#1211](#1211)) ([a8be73b](a8be73b)) * item extent now selectable, savable, and reflects in old and new view ([#1212](#1212)) ([5dbe3bb](5dbe3bb)) * partnered orgs added to context ([#1214](#1214)) ([7979571](7979571)) * refactor entity schema implementation ([#1203](#1203)) ([88cdd2b](88cdd2b)) * **hub-common:** add unified "links" hash as an optional property for all entities ([#1199](#1199)) ([ba14502](ba14502))
# [14.1.0](https://github.com/Esri/hub.js/compare/@esri/[email protected]...@esri/[email protected]) (2023-10-08) ### Bug Fixes * update groups link from teams to groups ([#1262](#1262)) ([26dd47a](26dd47a)) * **hub-discussions:** add author and editor to isearchchannels ([#1257](#1257)) ([5d22e8b](5d22e8b)) * account for index values that are 0 in card view models ([#1196](#1196)) ([bbc1928](bbc1928)) * add featured content to initiatives edit ([#1208](#1208)) ([a3f0361](a3f0361)) * add Project to wellKnownColletions ([#1254](#1254)) ([82eb6a1](82eb6a1)) * add shareContent group permission and minor hub group clean up ([#1194](#1194)) ([9a90b6d](9a90b6d)) * added default empty quotes for computeProps ([#1204](#1204)) ([3c83e4a](3c83e4a)) * auto-populating groups in project creation ([#1225](#1225)) ([0b9465f](0b9465f)) * checkPermission and checkPrivileges first check isAuthenticated ([#1227](#1227)) ([b292131](b292131)) * ensure featured content catalogs are returned as an array ([#1207](#1207)) ([d28b56f](d28b56f)) * properly deserialize trustedOrgs from context ([#1256](#1256)) ([760b4ff](760b4ff)) * **hub-common:** content location should be of type extent, not polygon ([#1228](#1228)) ([c5539f4](c5539f4)) * **hub-common:** fix fetchHubContent does not support slugs ([#1216](#1216)) ([d3a4eba](d3a4eba)) * **hub-common:** re-adds the discussion permissions to validPermissions array ([#1223](#1223)) ([9db7245](9db7245)) * **hub-common:** workspace route for content is /workspace/content/:id not /workspace/contents/:id ([#1250](#1250)) ([f2c6679](f2c6679)) * rollback stat migration ([#1193](#1193)) ([8465e15](8465e15)) * shouldClearEmptyFields now accounts for licenseInfo ([#1198](#1198)) ([3f4eb47](3f4eb47)) * uiSchema translation keys ([#1224](#1224)) ([a55292f](a55292f)) * **hub-discussions:** user can read channel if group is non-discussable ([#1201](#1201)) ([28d61f3](28d61f3)) ### Features * **hub-common:** adds followers group discussion settings on site wo… ([#1251](#1251)) ([e0beb59](e0beb59)) * add feature and entity flagging into checkPermission ([#1187](#1187)) ([b040283](b040283)) * Add Initiative and Project Associations ([#1213](#1213)) ([7cb0298](7cb0298)) * add invite users to hub group ([#1197](#1197)) ([014b2bd](014b2bd)) * add links hash for project, initiative, and group entities ([#1226](#1226)) ([aba8f7b](aba8f7b)) * add member role badges to user card model ([#1195](#1195)) ([e09608d](e09608d)) * add new polling util ([#1265](#1265)) ([e36c142](e36c142)) * add option to enrich an entity ([#1220](#1220)) ([0b57ff5](0b57ff5)) * add supporting groups to sites property map ([#1205](#1205)) ([2d473d6](2d473d6)) * add workspaceRelative to enrichGroupSearchResult ([#1206](#1206)) ([f6d2016](f6d2016)) * addGroupMembers ([#1230](#1230)) ([3a7c900](3a7c900)) * adding license picker to content workspace ([#1192](#1192)) ([312b333](312b333)) * adds entity discussion settings ([#1221](#1221)) ([5e25a43](5e25a43)) * adds getChannelUsersQuery method, bumps to @esri/arcgis-rest-port… ([#1210](#1210)) ([320d6d8](320d6d8)) * collaborator pane for content workspace ([#1259](#1259)) ([e00e624](e00e624)) * initiative template entity ([#1229](#1229)) ([f5a995a](f5a995a)) * initiative template workspace ([#1246](#1246)) ([cb385e5](cb385e5)) * scaffold solution template entity ([#1253](#1253)) ([54d1fe6](54d1fe6)) * **hub-common:** add application type content edit link ([#1217](#1217)) ([82ceec4](82ceec4)) * **hub-common:** add blocked as a possible PostStatus ([#1222](#1222)) ([11c8a58](11c8a58)) * **hub-common:** add content settings schemas and derive props from server definitions ([#1209](#1209)) ([1721285](1721285)) * **hub-common:** add getResultSiteRelativeLink so Hub Page results can have slugs in siteRelative l ([#1200](#1200)) ([27e0740](27e0740)) * **hub-common:** add hub:[entity]:manage permission for all entities ([#1202](#1202)) ([71191b7](71191b7)) * **hub-common:** add icon for Discussion content type ([#1185](#1185)) ([7ae927a](7ae927a)) * **hub-discussions:** adding ability to update the groups of a channel ([#1218](#1218)) ([7bc2117](7bc2117)) * followers settings schema and behavior ([#1211](#1211)) ([a8be73b](a8be73b)) * item extent now selectable, savable, and reflects in old and new view ([#1212](#1212)) ([5dbe3bb](5dbe3bb)) * partnered orgs added to context ([#1214](#1214)) ([7979571](7979571)) * refactor entity schema implementation ([#1203](#1203)) ([88cdd2b](88cdd2b)) * **hub-common:** add unified "links" hash as an optional property for all entities ([#1199](#1199)) ([ba14502](ba14502)) * site's followers pane permissions ([#1186](#1186)) ([90feec7](90feec7)) * ungate dashboard from projects ([#1188](#1188)) ([658b936](658b936))
7621
Description
IWithFollowersBehavior
which exposesgetFollowers
andsetFollowersAccess
on all item-backed entitiesSiteUiSchemaFollowers
and adds thetoEditor/fromEditor
logicconvertFeaturesToLegacyCapabilities
andmigrateLegacyCapabilitiesToFeatures
functions that get executed when we callupdateSite
andfetchSite
respectively - this allows us to start leveraging the permissions system/features for existing site capabilities while maintaining functionality in the current applicationpeerDependencies
as needed. CRITICAL our automated release system can not be counted on to updatepeerDependencies
so we must do it manually in our PRs when needed. See the updating peerDependencies section of the release instructions for more details.