Skip to content

Commit 75d607a

Browse files
committed
Filter for tasks when fetching running timers
1 parent 2766aac commit 75d607a

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

Clockify/ClockifyContext.cs

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,10 @@ public async Task<TimeEntryDtoImpl> GetRunningTimerAsync()
121121
{
122122
return null;
123123
}
124-
125-
if (string.IsNullOrEmpty(_projectName))
124+
125+
if (string.IsNullOrEmpty(_projectName) && string.IsNullOrEmpty(_timerName))
126126
{
127-
return string.IsNullOrEmpty(_timerName)
128-
? timeEntries.Data.FirstOrDefault()
129-
: timeEntries.Data.FirstOrDefault(t => t.Description == _timerName);
127+
return timeEntries.Data.FirstOrDefault(t => string.IsNullOrEmpty(_timerName) || t.Description == _timerName);
130128
}
131129

132130
var project = await FindMatchingProjectAsync(workspace.Id);
@@ -135,10 +133,12 @@ public async Task<TimeEntryDtoImpl> GetRunningTimerAsync()
135133
{
136134
return null;
137135
}
136+
137+
var task = await FindMatchingTaskAsync(workspace.Id, project.Id, _taskName);
138138

139-
return string.IsNullOrEmpty(_timerName)
140-
? timeEntries.Data.FirstOrDefault(t => t.ProjectId == project.Id)
141-
: timeEntries.Data.FirstOrDefault(t => t.ProjectId == project.Id && t.Description == _timerName);
139+
return timeEntries.Data.FirstOrDefault(t => t.ProjectId == project.Id
140+
&& (string.IsNullOrEmpty(_timerName) || t.Description == _timerName)
141+
&& (string.IsNullOrEmpty(_taskName) || string.IsNullOrEmpty(task) || t.TaskId == task));
142142
}
143143

144144
public async Task UpdateSettings(PluginSettings settings)
@@ -258,18 +258,25 @@ private async Task<ProjectDtoImpl> FindMatchingProjectAsync(string workspaceId)
258258
return project.Single();
259259
}
260260

261-
private async Task<string> FindOrCreateTaskAsync(string workspaceId, string projectId, string taskName)
261+
private async Task<string> FindMatchingTaskAsync(string workspaceId, string projectId, string taskName)
262262
{
263263
var taskResponse = await _clockifyClient.FindAllTasksAsync(workspaceId, projectId, name: taskName, pageSize: 5000);
264264

265-
if (!taskResponse.IsSuccessful || taskResponse.Data == null)
265+
if (!taskResponse.IsSuccessful || taskResponse.Data == null || !taskResponse.Data.Any())
266266
{
267267
return null;
268268
}
269269

270-
if (taskResponse.Data.Any())
270+
return taskResponse.Data.First().Id;
271+
}
272+
273+
private async Task<string> FindOrCreateTaskAsync(string workspaceId, string projectId, string taskName)
274+
{
275+
var task = await FindMatchingTaskAsync(workspaceId, projectId, taskName);
276+
277+
if (!string.IsNullOrEmpty(task))
271278
{
272-
return taskResponse.Data.First().Id;
279+
return task;
273280
}
274281

275282
var taskRequest = new TaskRequest

0 commit comments

Comments
 (0)