summaryrefslogtreecommitdiff
path: root/Hutch/Networking/ProjectService.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-13 19:44:44 -0500
committerChristian Cleberg <[email protected]>2026-04-13 19:44:44 -0500
commitfe1ccc69661603d419a642a450e4ac9e1258adb0 (patch)
tree386455b6b5468abdd9dfa46dd4802b10da8b77a2 /Hutch/Networking/ProjectService.swift
parent6ec9754ce34f331641b000eddef3d44bca2631a5 (diff)
downloadhutch-3.1.3.tar.gz
hutch-3.1.3.tar.bz2
hutch-3.1.3.zip
fix: centralize URLs, tighten models, and polish SwiftUI bindingsv3.1.3
- Add shared HutchDeepLinkURL constants for app, widgets, and tests. - Bump marketing version to 3.1.2 and build to 70 (app + widget extension). - Point Hutch stats default base URL at HutchStatsAPI; add SRHTWebURL status incident feed and reuse it from SystemStatusService. - Group Project into Metadata and Resources; split ContributionStatsResponse into StatsWindow and StatsTotals with updated decoding and tests. - Replace @Bindable usage with explicit Bindings in Profile, Projects list, and repository ACL flows; simplify Home pinned-item helper; add no-op bodies on cancel alert buttons where the compiler requires a statement. - Move repository row build-status indicator next to the relative-updated caption and reserve a fixed 8×8 slot so the row does not jump when status loads. - Use NSString.lastPathComponent for build artifact filenames; collapse duplicate ACL error branches; minor HutchStats HTTP and XMLParserDelegate cleanups. - Point widgets at HutchDeepLinkURL helpers; align tests with the new response and URL types.
Diffstat (limited to 'Hutch/Networking/ProjectService.swift')
-rw-r--r--Hutch/Networking/ProjectService.swift47
1 files changed, 25 insertions, 22 deletions
diff --git a/Hutch/Networking/ProjectService.swift b/Hutch/Networking/ProjectService.swift
index 93ce71f..bd8ccdc 100644
--- a/Hutch/Networking/ProjectService.swift
+++ b/Hutch/Networking/ProjectService.swift
@@ -372,17 +372,21 @@ struct ProjectService: Sendable {
if mailingListsCursor == nil, sourcesCursor == nil, trackersCursor == nil {
return Project(
- id: project.rid,
- name: project.name,
- description: project.description,
- website: project.website,
- visibility: project.visibility,
- tags: project.tags,
- updated: project.updated,
- mailingLists: deduplicate(mailingLists),
- sources: deduplicate(sources),
- trackers: deduplicate(trackers),
- isFullyLoaded: true
+ metadata: .init(
+ id: project.rid,
+ name: project.name,
+ description: project.description,
+ website: project.website,
+ visibility: project.visibility,
+ tags: project.tags,
+ updated: project.updated
+ ),
+ resources: .init(
+ mailingLists: deduplicate(mailingLists),
+ sources: deduplicate(sources),
+ trackers: deduplicate(trackers),
+ isFullyLoaded: true
+ )
)
}
}
@@ -390,17 +394,16 @@ struct ProjectService: Sendable {
private static func makeSummaryProject(from summary: ProjectSummaryPayload) -> Project {
Project(
- id: summary.rid,
- name: summary.name,
- description: summary.description,
- website: summary.website,
- visibility: summary.visibility,
- tags: summary.tags,
- updated: summary.updated,
- mailingLists: [],
- sources: [],
- trackers: [],
- isFullyLoaded: false
+ metadata: .init(
+ id: summary.rid,
+ name: summary.name,
+ description: summary.description,
+ website: summary.website,
+ visibility: summary.visibility,
+ tags: summary.tags,
+ updated: summary.updated
+ ),
+ resources: .init(mailingLists: [], sources: [], trackers: [], isFullyLoaded: false)
)
}