Allow to set tag in description

This commit is contained in:
Manuel Bouza 2019-03-26 16:00:02 +01:00
parent f49c0bdc3d
commit 1b1fae6f7a
3 changed files with 52 additions and 7 deletions

View File

@ -10,6 +10,7 @@ import {
ERROR_UNKNOWN,
ERROR_UNAUTHORIZED,
ERROR_UPGRADE_REQUIRED,
extractAndSetTag,
findProjectByValue,
findProjectByIdentifier,
findTask,
@ -80,13 +81,11 @@ class App extends Component {
seconds:
this.changeset.hours &&
new TimeInputParser(this.changeset.hours).parseSeconds(),
description: service?.description
description: service?.description,
tag: ""
}
return {
...defaults,
...this.changeset
}
return { ...defaults, ...this.changeset }
}
componentDidMount() {
@ -124,7 +123,7 @@ class App extends Component {
chrome.runtime.sendMessage({
type: "createActivity",
payload: {
activity: this.changesetWithDefaults,
activity: extractAndSetTag(this.changesetWithDefaults),
service
}
})

View File

@ -86,3 +86,16 @@ export const formatDate = date => format(date, "YYYY-MM-DD")
export const extensionSettingsUrl = () =>
`chrome://extensions/?id=${chrome.runtime.id}`
export const extractAndSetTag = changeset => {
let { description } = changeset
const match = description.match(/^#(\S+)/)
if (!match) {
return changeset
}
return {
...changeset,
description: description.replace(/^#\S+\s/, ""),
tag: match[1]
}
}

View File

@ -3,7 +3,8 @@ import {
findProjectByValue,
findProjectByIdentifier,
findTask,
groupedProjectOptions
groupedProjectOptions,
extractAndSetTag
} from "../../src/js/utils"
import { map } from "lodash/fp"
@ -86,4 +87,36 @@ describe("utils", () => {
])
})
})
describe("extractAndSetTag", () => {
it("sets the correct tag and updates description", () => {
const changeset = {
description: "#meeting Lorem ipsum",
tag: ""
}
expect(extractAndSetTag(changeset)).toEqual({
description: "Lorem ipsum",
tag: "meeting"
})
})
it("only matches tag at the beginning", () => {
const changeset = {
description: "Lorem #meeting ipsum",
tag: ""
}
expect(extractAndSetTag(changeset)).toEqual(changeset)
})
it("returns the changeset if not tag is set", () => {
const changeset = {
description: "Without tag",
tag: ""
}
expect(extractAndSetTag(changeset)).toEqual(changeset)
})
})
})