Skip to content

Commit

Permalink
fix: migrate sharing object (#2830)
Browse files Browse the repository at this point in the history
* fix(program): migrate program access step from legacy sharing

* fix: more defensive in transform legeacy sharing

* fix: sharing in list

* fix: remove references to old sharing props

* fix: undo webpack change

* fix: add translation for icons

* fix: sort sharing object, more defensive
  • Loading branch information
Birkbjo authored Apr 25, 2024
1 parent d0165cf commit a806c8f
Show file tree
Hide file tree
Showing 12 changed files with 275 additions and 145 deletions.
6 changes: 3 additions & 3 deletions src/App/appStateStore.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ async function getCurrentUserOrganisationUnits(disableCache = false) {

const d2 = await getInstance();
const organisationUnitsCollection = await d2.currentUser.getOrganisationUnits({
fields: ':all,displayName,path,publicAccess,access,children[id,displayName,path,children::isNotEmpty,publicAccess,access]',
fields: ':all,displayName,path,access,children[id,displayName,path,children::isNotEmpty,sharing,access]',
paging: false
});

Expand All @@ -79,8 +79,8 @@ async function getCurrentUserOrganisationUnits(disableCache = false) {
level: 1,
paging: false,
fields: [
'id,displayName,path,publicAccess,access,lastUpdated',
'children[id,displayName,publicAccess,access,path,children::isNotEmpty]',
'id,displayName,path,sharing,access,lastUpdated',
'children[id,displayName,sharing,access,path,children::isNotEmpty]',
].join(','),
});

Expand Down
5 changes: 1 addition & 4 deletions src/EditModel/event-program/epics.js
Original file line number Diff line number Diff line change
Expand Up @@ -148,9 +148,6 @@ function loadEventProgramMetadataByProgramId(programPayload) {
'notificationTemplates[:owner]',
'programTrackedEntityAttributes',
'user[id,name]',
'publicAccess',
'userGroupAccesses',
'userAccesses',
'categoryCombo[id,name]'
].join(',');

Expand All @@ -159,7 +156,7 @@ function loadEventProgramMetadataByProgramId(programPayload) {
const queryParams = {
fields: ':owner,displayName',
'programs:filter': `id:eq:${programId}`,
'programs:fields': `${programFields},programStages[:owner, publicAccess, userGroupAccesses, userAccesses, user[id,name],displayName,attributeValues[:all,attribute[id,name,displayName]],programStageDataElements[:owner,renderType,dataElement[id,displayName,valueType,optionSet,domainType]],notificationTemplates[:owner,displayName],dataEntryForm[:owner],programStageSections[:owner,displayName,dataElements[id,displayName]]]`,
'programs:fields': `${programFields},programStages[:owner,user[id,name],displayName,attributeValues[:all,attribute[id,name,displayName]],programStageDataElements[:owner,renderType,dataElement[id,displayName,valueType,optionSet,domainType]],notificationTemplates[:owner,displayName],dataEntryForm[:owner],programStageSections[:owner,displayName,dataElements[id,displayName]]]`,
'dataElements:fields': 'id,displayName,valueType,optionSet',
'dataElements:filter': 'domainType:eq:TRACKER',
'trackedEntityAttributes:fields': 'id,displayName,valueType,optionSet,unique'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,21 +27,11 @@ const hasDirtyProgramNotifications = state => programNotificationsSelector(state
const hasDirtyDataEntryForms = compose(some(checkIfDirty), values, dataEntryFormsSelector);
const hasDirtyProgramSections = compose(some(checkIfDirty), values, programSectionsSelector);

/* Sharing settings was removed from :owner properties in 2.36
In programs we are using metadata API (instead of /sharing-api),
so we still need to include these properties
*/
const modelToJsonWithSharingProperties = model => {
const ownerProperties = model.modelDefinition.getOwnedPropertyNames()
const sharingProperties = ['publicAccess', 'userAccesses', 'userGroupAccesses']
return getJSONForProperties(model, ownerProperties.concat(sharingProperties))
}

const handleDataEntryForm = state => payload => {
if (isProgramDirty(state)) {
const withPrograms = {
...payload,
programs: [programSelector(state)].map(modelToJsonWithSharingProperties)
programs: [programSelector(state)].map(modelToJson)
}

//For custom-form
Expand All @@ -65,7 +55,7 @@ const handleProgramStages = state => payload => {
if (isProgramStageDirty(state)) {
return {
...payload,
programStages: programStagesSelector(state).map(modelToJsonWithSharingProperties)
programStages: programStagesSelector(state).map(modelToJson)
}
}

Expand Down
10 changes: 7 additions & 3 deletions src/EditModel/event-program/program-access/ProgramAccess.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,16 @@ const styles = {
}
};

const ProgramNotSavedMessage = () => (
<div>Save the program in order to access sharing settings</div>
const ProgramNotSavedMessage = (_, { d2 } ) => (
<div>{d2.i18n.getTranslation('save_the_program_in_order_to_access_sharing_settings')}</div>
);

ProgramNotSavedMessage.contextTypes = {
d2: PropTypes.object,
}

const ProgramStagesAccessHOC = branch(
props => !props.model.dataValues.publicAccess,
props => !props.model.dataValues.sharing,
renderComponent(ProgramNotSavedMessage)
)(ProgramStagesAccess);

Expand Down
Loading

0 comments on commit a806c8f

Please sign in to comment.