processGptResponse = (docView: DocumentView, textToDocMap: Map, gptOutput: string, questionType: GPTDocCommand) => undoable(() => { switch (questionType) { // reset collection based on question typefc case GPTDocCommand.Sort: docView.Document[docView.ComponentView?.fieldKey + '_sort'] = docSortings.Chat; break; case GPTDocCommand.Filter: docView.ComponentView?.hasChildDocs?.().forEach(d => TagItem.removeTagFromDoc(d, GPTPopup.ChatTag)); break; } // prettier-ignore gptOutput.split(DescriptionSeperator).filter(item => item.trim() !== '') // Split output into individual document contents .map(docContentRaw => docContentRaw.replace(/\n/g, ' ').trim()) .map(docContentRaw => ({doc: textToDocMap.get(docContentRaw.split(DataSeperator)[0]), data: docContentRaw.split(DataSeperator)[1] })) // the find the corresponding Doc using textToDoc map .filter(({doc}) => doc).map(({doc, data}) => ({doc:doc!, data})) // filter out undefined values .forEach(({doc, data}, index) => { switch (questionType) { case GPTDocCommand.Sort: doc[ChatSortField] = index; break; case GPTDocCommand.AssignTags: data && TagItem.addTagToDoc(doc, data.startsWith('#') ? data : '#'+data[0].toLowerCase()+data.slice(1) ); break; case GPTDocCommand.Filter: TagItem.addTagToDoc(doc, GPTPopup.ChatTag); Doc.setDocFilter(docView.Document, 'tags', GPTPopup.ChatTag, 'check'); break; } }); // prettier-ignore }, '')();