diff --git a/wherehows-web/app/components/dataset-authors.ts b/wherehows-web/app/components/dataset-authors.ts index 94e52a2169..21bd9ead58 100644 --- a/wherehows-web/app/components/dataset-authors.ts +++ b/wherehows-web/app/components/dataset-authors.ts @@ -12,15 +12,11 @@ import { ownerAlreadyExists, confirmOwner, updateOwner, - minRequiredConfirmedOwners + minRequiredConfirmedOwners, + validConfirmedOwners, + isRequiredMinOwnersNotConfirmed } from 'wherehows-web/constants/datasets/owner'; -import { - isRequiredMinOwnersNotConfirmed, - OwnerIdType, - OwnerSource, - OwnerType, - validConfirmedOwners -} from 'wherehows-web/utils/api/datasets/owners'; +import { OwnerIdType, OwnerSource, OwnerType } from 'wherehows-web/utils/api/datasets/owners'; import Notifications, { NotificationEvent } from 'wherehows-web/services/notifications'; /** diff --git a/wherehows-web/app/constants/datasets/owner.ts b/wherehows-web/app/constants/datasets/owner.ts index ae97deeacb..3a63b78077 100644 --- a/wherehows-web/app/constants/datasets/owner.ts +++ b/wherehows-web/app/constants/datasets/owner.ts @@ -1,7 +1,7 @@ +import { set } from '@ember/object'; import { IOwner } from 'wherehows-web/typings/api/datasets/owners'; import { OwnerIdType, OwnerSource, OwnerType, OwnerUrnNamespace } from 'wherehows-web/utils/api/datasets/owners'; -import { isListUnique } from 'wherehows-web/utils/array'; -import { set } from '@ember/object'; +import { arrayFilter, isListUnique } from 'wherehows-web/utils/array'; /** * Initial user name for candidate owners @@ -10,7 +10,7 @@ import { set } from '@ember/object'; const defaultOwnerUserName = 'New Owner'; /** - * The minimum required number of owners + * The minimum required number of owners with a confirmed status * @type {number} */ const minRequiredConfirmedOwners = 2; @@ -90,6 +90,7 @@ function updateOwner( */ const confirmOwner = (owner: IOwner, confirmedBy: string): IOwner['confirmedBy'] => set(owner, 'confirmedBy', confirmedBy || null); + /** * Defines the default properties for a newly created IOwner instance *@type {IOwner} @@ -109,10 +110,34 @@ const defaultOwnerProps: IOwner = { isActive: true }; +/** + * Given an IOwner object, determines if it qualifies as a valid confirmed owner + * @param {IOwner} + * @return {boolean} + */ +const isValidConfirmedOwner = ({ confirmedBy, type, idType, isActive }: IOwner): boolean => + !!confirmedBy && type === OwnerType.Owner && idType === OwnerIdType.User && isActive; + +/** + * Filters out a list of valid confirmed owners in a list of owners + * @type {(array: Array = []) => Array} + */ +const validConfirmedOwners = arrayFilter(isValidConfirmedOwner); + +/** + * Checks that the required minimum number of confirmed users is met with the type Owner and idType User + * @param {Array} owners the list of owners to check + * @return {boolean} + */ +const isRequiredMinOwnersNotConfirmed = (owners: Array = []): boolean => + validConfirmedOwners(owners).length < minRequiredConfirmedOwners; + export { defaultOwnerProps, defaultOwnerUserName, minRequiredConfirmedOwners, + validConfirmedOwners, + isRequiredMinOwnersNotConfirmed, ownerAlreadyExists, updateOwner, confirmOwner diff --git a/wherehows-web/app/routes/datasets/dataset.js b/wherehows-web/app/routes/datasets/dataset.js index 506576c5bc..8bea7c959e 100644 --- a/wherehows-web/app/routes/datasets/dataset.js +++ b/wherehows-web/app/routes/datasets/dataset.js @@ -13,11 +13,8 @@ import { augmentObjectsWithHtmlComments } from 'wherehows-web/utils/api/datasets/columns'; -import { - readDatasetOwners, - getUserEntities, - isRequiredMinOwnersNotConfirmed -} from 'wherehows-web/utils/api/datasets/owners'; +import { readDatasetOwners, getUserEntities } from 'wherehows-web/utils/api/datasets/owners'; +import { isRequiredMinOwnersNotConfirmed } from 'wherehows-web/constants/datasets/owner'; import { readDataset, datasetUrnToId, readDatasetView } from 'wherehows-web/utils/api/datasets/dataset'; import isDatasetUrn from 'wherehows-web/utils/validators/urn'; diff --git a/wherehows-web/app/utils/api/datasets/owners.ts b/wherehows-web/app/utils/api/datasets/owners.ts index 5ee01e53e2..a05aabfd0e 100644 --- a/wherehows-web/app/utils/api/datasets/owners.ts +++ b/wherehows-web/app/utils/api/datasets/owners.ts @@ -1,14 +1,13 @@ -import { ApiRoot, ApiStatus } from 'wherehows-web/utils/api/shared'; -import { datasetUrlById } from 'wherehows-web/utils/api/datasets/shared'; +import { IOwner, IOwnerPostResponse, IOwnerResponse } from 'wherehows-web/typings/api/datasets/owners'; import { IPartyEntity, IPartyEntityResponse, IPartyProps, IUserEntityMap } from 'wherehows-web/typings/api/datasets/party-entities'; -import { IOwner, IOwnerPostResponse, IOwnerResponse } from 'wherehows-web/typings/api/datasets/owners'; +import { datasetUrlById } from 'wherehows-web/utils/api/datasets/shared'; import { getJSON, postJSON } from 'wherehows-web/utils/api/fetcher'; -import { arrayFilter } from 'wherehows-web/utils/array'; +import { ApiRoot, ApiStatus } from 'wherehows-web/utils/api/shared'; /** * Defines a string enum for valid owner types @@ -51,12 +50,6 @@ enum OwnerSource { Other = 'OTHER' } -/** - * The minimum required number of owners with a confirmed status - * @type {number} - */ -const minRequiredConfirmed = 2; - /** * Constructs the dataset owners url * @param {number} id the id of the dataset @@ -184,31 +177,7 @@ const readPartyEntitiesMap = (partyEntities: Array): IUserEntityMa {} ); -/** - * Given an IOwner object, determines if it qualifies as a valid confirmed owner - * @param {IOwner} - * @return {boolean} - */ -const isValidConfirmedOwner = ({ confirmedBy, type, idType, isActive }: IOwner): boolean => - !!confirmedBy && type === OwnerType.Owner && idType === OwnerIdType.User && isActive; - -/** - * Filters out a list of valid confirmed owners in a list of owners - * @type {(array: Array = []) => Array} - */ -const validConfirmedOwners = arrayFilter(isValidConfirmedOwner); - -/** - * Checks that the required minimum number of confirmed users is met with the type Owner and idType User - * @param {Array} owners the list of owners to check - * @return {boolean} - */ -const isRequiredMinOwnersNotConfirmed = (owners: Array = []): boolean => - validConfirmedOwners(owners).length < minRequiredConfirmed; - export { - validConfirmedOwners, - isRequiredMinOwnersNotConfirmed, readDatasetOwners, readPartyEntities, readPartyEntitiesMap,