fix: don't recognize emails in quick add magic (#1335)
Co-authored-by: kolaente <k@knt.li> Reviewed-on: https://kolaente.dev/vikunja/frontend/pulls/1335 Co-authored-by: konrad <k@knt.li> Co-committed-by: konrad <k@knt.li>
This commit is contained in:
parent
76fe2ceac6
commit
ed88fb91bc
3 changed files with 21 additions and 6 deletions
|
@ -13,6 +13,7 @@
|
||||||
"lint": "eslint --ignore-pattern '*.test.*' ./src --ext .vue,.js,.ts",
|
"lint": "eslint --ignore-pattern '*.test.*' ./src --ext .vue,.js,.ts",
|
||||||
"cypress:open": "cypress open",
|
"cypress:open": "cypress open",
|
||||||
"test:unit": "vitest run",
|
"test:unit": "vitest run",
|
||||||
|
"test:unit-watch": "vitest watch",
|
||||||
"test:frontend": "cypress run",
|
"test:frontend": "cypress run",
|
||||||
"browserslist:update": "npx browserslist@latest --update-db"
|
"browserslist:update": "npx browserslist@latest --update-db"
|
||||||
},
|
},
|
||||||
|
|
|
@ -33,6 +33,13 @@ describe('Parse Task Text', () => {
|
||||||
expect(result.assignees[0]).toBe('user')
|
expect(result.assignees[0]).toBe('user')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should ignore email addresses', () => {
|
||||||
|
const text = 'Lorem Ipsum email@example.com'
|
||||||
|
const result = parseTaskText(text)
|
||||||
|
|
||||||
|
expect(result.text).toBe(text)
|
||||||
|
})
|
||||||
|
|
||||||
describe('Date Parsing', () => {
|
describe('Date Parsing', () => {
|
||||||
it('should not return any date if none was provided', () => {
|
it('should not return any date if none was provided', () => {
|
||||||
const result = parseTaskText('Lorem Ipsum')
|
const result = parseTaskText('Lorem Ipsum')
|
||||||
|
|
|
@ -117,23 +117,30 @@ export const parseTaskText = (text: string, prefixesMode: PrefixMode = PrefixMod
|
||||||
const getItemsFromPrefix = (text: string, prefix: string): string[] => {
|
const getItemsFromPrefix = (text: string, prefix: string): string[] => {
|
||||||
const items: string[] = []
|
const items: string[] = []
|
||||||
|
|
||||||
const itemParts = text.split(prefix)
|
const itemParts = text.split(' ' + prefix)
|
||||||
|
if (text.startsWith(prefix)) {
|
||||||
|
const firstItem = text.split(prefix)[1]
|
||||||
|
itemParts.unshift(firstItem)
|
||||||
|
}
|
||||||
|
|
||||||
itemParts.forEach((p, index) => {
|
itemParts.forEach((p, index) => {
|
||||||
// First part contains the rest
|
// First part contains the rest
|
||||||
if (index < 1) {
|
if (index < 1) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let labelText
|
p = p.replace(prefix, '')
|
||||||
|
|
||||||
|
let itemText
|
||||||
if (p.charAt(0) === '\'') {
|
if (p.charAt(0) === '\'') {
|
||||||
labelText = p.split('\'')[1]
|
itemText = p.split('\'')[1]
|
||||||
} else if (p.charAt(0) === '"') {
|
} else if (p.charAt(0) === '"') {
|
||||||
labelText = p.split('"')[1]
|
itemText = p.split('"')[1]
|
||||||
} else {
|
} else {
|
||||||
// Only until the next space
|
// Only until the next space
|
||||||
labelText = p.split(' ')[0]
|
itemText = p.split(' ')[0]
|
||||||
}
|
}
|
||||||
items.push(labelText)
|
items.push(itemText)
|
||||||
})
|
})
|
||||||
|
|
||||||
return Array.from(new Set(items))
|
return Array.from(new Set(items))
|
||||||
|
|
Loading…
Reference in a new issue