Fix iOS list response decoding to match plain-array backend responses

GET /clients and GET /projects return bare arrays, not wrapped objects.
Remove ClientListResponse and ProjectListResponse wrapper structs and
update ClientsViewModel, ProjectsViewModel, and TimerViewModel to decode
[Client] and [Project] directly.
This commit is contained in:
2026-02-19 19:05:43 +01:00
parent 48cd82ab4f
commit 39d6ea00d9
5 changed files with 4 additions and 16 deletions

View File

@@ -15,11 +15,10 @@ final class ClientsViewModel: ObservableObject {
error = nil
do {
let response: ClientListResponse = try await apiClient.request(
clients = try await apiClient.request(
endpoint: APIEndpoint.clients,
authenticated: true
)
clients = response.clients
try await database.saveClients(clients)

View File

@@ -16,17 +16,15 @@ final class ProjectsViewModel: ObservableObject {
error = nil
do {
let clientsResponse: ClientListResponse = try await apiClient.request(
clients = try await apiClient.request(
endpoint: APIEndpoint.clients,
authenticated: true
)
clients = clientsResponse.clients
let projectsResponse: ProjectListResponse = try await apiClient.request(
projects = try await apiClient.request(
endpoint: APIEndpoint.projects,
authenticated: true
)
projects = projectsResponse.projects
try await database.saveProjects(projects)

View File

@@ -37,11 +37,10 @@ final class TimerViewModel: ObservableObject {
try await database.cacheTimer(activeTimer)
// Fetch projects
let response: ProjectListResponse = try await apiClient.request(
projects = try await apiClient.request(
endpoint: APIEndpoint.projects,
authenticated: true
)
projects = response.projects
// Set selected project if timer has one
if let timerProject = activeTimer?.project {

View File

@@ -8,10 +8,6 @@ struct Client: Codable, Identifiable, Equatable, Hashable {
let updatedAt: String
}
struct ClientListResponse: Codable {
let clients: [Client]
}
struct CreateClientInput: Codable {
let name: String
let description: String?

View File

@@ -16,10 +16,6 @@ struct ClientReference: Codable, Equatable, Hashable {
let name: String
}
struct ProjectListResponse: Codable {
let projects: [Project]
}
struct CreateProjectInput: Codable {
let name: String
let description: String?