Skip to content

Commit

Permalink
feat: Allow Card UpdateBuilder methods that update user-related field…
Browse files Browse the repository at this point in the history
…s to use BravoUser objects or userId strings.
  • Loading branch information
adam-coster committed Aug 24, 2021
1 parent a14ee8e commit 7fff8a3
Showing 1 changed file with 18 additions and 9 deletions.
27 changes: 18 additions & 9 deletions src/lib/entities/BravoCard.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,23 @@ import type {
FavroApiParamsCardUpdate,
FavroApiParamsCardUpdateArrayField,
} from '$/types/FavroCardUpdateTypes.js';
import { ExtractKeysByValue } from '$/types/Utility.js';
import { BravoEntity } from '$lib/BravoEntity.js';
import { assertBravoClaim } from '../errors.js';
import {
ensureArrayExistsAndAddUnique,
ensureArrayExistsAndAddUniqueBy,
isMatch,
removeFromArray,
stringsOrObjectsToStrings,
wrapIfNotArray,
} from '../utility.js';
import type { BravoColumn } from './BravoColumn.js';
import {
BravoCustomField,
BravoCustomFieldDefinition,
} from './BravoCustomField.js';
import type { BravoUser } from './users.js';

/**
* A Card update can be pretty complex, and to save API
Expand All @@ -29,7 +32,7 @@ import {
* easy to construct a complex update with a chaining-based
* approach.
*/
class BravoCardUpdateBuilder {
export class BravoCardUpdateBuilder {
private update: FavroApiParamsCardUpdate = {};
constructor() {}

Expand All @@ -43,28 +46,34 @@ class BravoCardUpdateBuilder {
return this;
}

assign(userIds: string[]) {
assign(usersOrIds: (string | BravoUser)[]) {
return this.addToUniqueArray(
'addAssignmentIds',
userIds,
stringsOrObjectsToStrings(usersOrIds, 'userId'),
'removeAssignmentIds',
);
}

unassign(userIds: string[]) {
unassign(usersOrIds: (string | BravoUser)[]) {
return this.addToUniqueArray(
'removeAssignmentIds',
userIds,
stringsOrObjectsToStrings(usersOrIds, 'userId'),
'addAssignmentIds',
);
}

completeAssignment(userIds: string[]) {
return this.setAssignmentCompletion(userIds, true);
completeAssignment(usersOrIds: (string | BravoUser)[]) {
return this.setAssignmentCompletion(
stringsOrObjectsToStrings(usersOrIds, 'userId'),
true,
);
}

uncompleteAssignment(userIds: string[]) {
return this.setAssignmentCompletion(userIds, false);
uncompleteAssignment(usersOrIds: (string | BravoUser)[]) {
return this.setAssignmentCompletion(
stringsOrObjectsToStrings(usersOrIds, 'userId'),
false,
);
}

addTagsByName(names: string[]) {
Expand Down

0 comments on commit 7fff8a3

Please sign in to comment.