From e5d70ebde220caabe4d662cc09ab7ebfd107b1f2 Mon Sep 17 00:00:00 2001 From: rijkvanzanten Date: Tue, 3 Nov 2020 17:51:16 -0500 Subject: [PATCH] Fix nested m2m updates Fixes #849 --- api/src/services/payload.ts | 2 ++ app/src/interfaces/many-to-many/use-sort.ts | 22 ++++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/api/src/services/payload.ts b/api/src/services/payload.ts index 71e8bac47a..55b20288ea 100644 --- a/api/src/services/payload.ts +++ b/api/src/services/payload.ts @@ -325,6 +325,8 @@ export class PayloadService { const relatedRecord: Partial = payload[relation.many_field]; const hasPrimaryKey = relatedRecord.hasOwnProperty(relation.one_primary); + if (['string', 'number'].includes(typeof relatedRecord)) continue; + let relatedPrimaryKey: PrimaryKey = relatedRecord[relation.one_primary]; const exists = hasPrimaryKey && !!(await itemsService.readByKey(relatedPrimaryKey)); diff --git a/app/src/interfaces/many-to-many/use-sort.ts b/app/src/interfaces/many-to-many/use-sort.ts index 5fb40674bb..925593c815 100644 --- a/app/src/interfaces/many-to-many/use-sort.ts +++ b/app/src/interfaces/many-to-many/use-sort.ts @@ -10,6 +10,17 @@ export default function useSort( ) { const sort = ref({ by: sortField.value || fields.value[0], desc: false }); + const sortedItems = computed(() => { + const sField = sortField.value; + if (sField === null || sort.value.by !== sField) return null; + + const desc = sort.value.desc; + const sorted = sortBy(items.value, [sField]); + return desc ? sorted.reverse() : sorted; + }); + + return { sort, sortItems, sortedItems }; + function sortItems(newItems: Record[]) { const sField = sortField.value; if (sField === null) return; @@ -21,15 +32,4 @@ export default function useSort( emit(itemsSorted); } - - const sortedItems = computed(() => { - const sField = sortField.value; - if (sField === null || sort.value.by !== sField) return null; - - const desc = sort.value.desc; - const sorted = sortBy(items.value, [sField]); - return desc ? sorted.reverse() : sorted; - }); - - return { sort, sortItems, sortedItems }; }