diff --git a/src/lib/components/list-editor/list-editor.svelte b/src/lib/components/list-editor/list-editor.svelte index e8ce0ff06..4cf0652dc 100644 --- a/src/lib/components/list-editor/list-editor.svelte +++ b/src/lib/components/list-editor/list-editor.svelte @@ -62,6 +62,11 @@ export let blockInteraction = false; export let addOnMount: string | undefined = undefined; + /** + * Pass an array of keys for items which the user will not be able to add to the list. + */ + export let blockedKeys: string[] = []; + $: selectedPercentages = Object.fromEntries( Object.entries(percentages).filter(([slug]) => selected.includes(slug)), ); @@ -90,6 +95,8 @@ let gitProject = await gitProjectService.getByUrl(inputValue); const id = gitProject.source.url; + if (blockedKeys.includes(id)) throw new Error('Project ID is already used'); + // Prevent duplicates. if (selected.indexOf(id) === -1) { items[id] = projectItem(gitProject); @@ -124,6 +131,8 @@ : await ensStore.reverseLookup(inputValue); assert(address); + if (blockedKeys.includes(address)) throw new Error('This address is already used'); + if (items[address]) { isAddingProject = false; return; diff --git a/src/lib/flows/edit-project-splits/steps/edit-dependency-list.svelte b/src/lib/flows/edit-project-splits/steps/edit-dependency-list.svelte index e6d5c259f..cddbff14c 100644 --- a/src/lib/flows/edit-project-splits/steps/edit-dependency-list.svelte +++ b/src/lib/flows/edit-project-splits/steps/edit-dependency-list.svelte @@ -27,6 +27,7 @@ bind:percentages={$context.dependencySplits.percentages} bind:items={$context.dependencySplits.items} bind:valid={formValid} + blockedKeys={$context.maintainerSplits.selected} />