Skip to content

Commit b18777e

Browse files
authored
Merge pull request #15 from aboutsource/feature/8069_update_delete
Feature/8069 update delete
2 parents 85d60bf + 408323d commit b18777e

File tree

5 files changed

+60
-21
lines changed

5 files changed

+60
-21
lines changed

LICENSE

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,11 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1919
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2020
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2121
SOFTWARE.
22+
23+
24+
# Icons
25+
26+
Icons published by Font-Awesome, licensed under a Creative Commons Attribution
27+
4.0 International License; CC BY 4.0 License
28+
(https://creativecommons.org/licenses/by/4.0/) as stated in
29+
https://github.com/FortAwesome/Font-Awesome/blob/6.x/LICENSE.txt

public/rotate-solid.svg

Lines changed: 1 addition & 0 deletions
Loading

public/trash-can-solid.svg

Lines changed: 1 addition & 0 deletions
Loading

src/toggl.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,14 +91,14 @@ export class TogglService {
9191
return togglTask;
9292
}
9393

94-
async track(tracking, description) {
94+
async track(tracking) {
9595
const togglTask = await this.addTask(tracking);
9696

9797
await this.#gateway.startTimeEntry(
9898
togglTask.workspace_id,
9999
togglTask.project_id,
100100
togglTask.id,
101-
description,
101+
tracking.description,
102102
);
103103
}
104104

src/trello.js

Lines changed: 48 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
import { TogglGateway, TogglService } from "./toggl.js";
22

3+
const withErrorMessage = async function (t, fnc) {
4+
try {
5+
await fnc(t);
6+
} catch (error) {
7+
t.alert({ message: error.message });
8+
throw error;
9+
}
10+
};
11+
312
const stripStoryPointsAndTaskToken = function (name) {
413
return name
514
.replace(/^(\s*\(\d+\))?\s*/, "") // story points, e.g. (3)
615
.replace(/\s*#\w+\s*$/, ""); // task token, e.g. #orga_5417
716
};
817

9-
const track = async function (t) {
10-
const token = await t.loadSecret("togglToken");
11-
if (token === null) {
12-
throw new Error("Toggl API Token not configured");
13-
}
14-
15-
const togglGateway = new TogglGateway(token);
16-
const togglService = new TogglService(togglGateway);
17-
18+
const extractTrackingData = async function (t) {
1819
const card = await t.card("name", "labels", "idShort", "shortLink");
1920

2021
const projectLabels = card.labels
@@ -28,24 +29,52 @@ const track = async function (t) {
2829
}
2930
const project = projectLabels[0];
3031

31-
const tracking = {
32+
return {
3233
project,
3334
task: `${project}_${card.idShort}_${card.shortLink}`,
35+
description: stripStoryPointsAndTaskToken(card.name),
3436
};
37+
};
3538

36-
await togglService.track(tracking, stripStoryPointsAndTaskToken(card.name));
39+
const setTrackingData = async function (t, tracking) {
40+
await t.set("card", "shared", "tracking", tracking);
41+
};
3742

38-
t.set("card", "shared", "tracking", tracking);
39-
t.alert({ message: `Started trekking #${tracking.task}`});
43+
const track = async function (t) {
44+
const token = await t.loadSecret("togglToken");
45+
if (token === null) {
46+
throw new Error("Toggl API Token not configured");
47+
}
48+
const togglService = new TogglService(new TogglGateway(token));
49+
50+
const tracking = await extractTrackingData(t);
51+
52+
await togglService.track(tracking);
53+
await setTrackingData(t, tracking);
54+
t.alert({ message: `Started trekking #${tracking.task}` });
55+
};
56+
57+
const updateTracking = async function (t) {
58+
const tracking = await extractTrackingData(t);
59+
await setTrackingData(t, tracking);
60+
61+
t.alert({ message: `Updated trekking #${tracking.task}` });
62+
};
63+
64+
const deleteTracking = async function (t) {
65+
t.remove("card", "shared", "tracking");
66+
67+
t.alert({ message: "Deleted trekking" });
4068
};
4169

4270
export default {
4371
track: async function (t) {
44-
try {
45-
await track(t);
46-
} catch (error) {
47-
t.alert({ message: error.message });
48-
throw error;
49-
}
72+
await withErrorMessage(t, track);
73+
},
74+
updateTracking: async function (t) {
75+
await withErrorMessage(t, updateTracking);
76+
},
77+
deleteTracking: async function (t) {
78+
await withErrorMessage(t, deleteTracking);
5079
},
5180
};

0 commit comments

Comments
 (0)