Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[EP-364] Adding project_tags #1402

Merged
merged 5 commits into from
Mar 22, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions KsApi/models/Project.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public struct Project {
public var staffPick: Bool
public var state: State
public var stats: Stats
public var tags: [String]?
public var urls: UrlsEnvelope
public var video: Video?

Expand Down Expand Up @@ -248,6 +249,7 @@ extension Project: Decodable {
case slug
case staffPick = "staff_pick"
case state
case tags
case urls
case video
}
Expand All @@ -272,6 +274,7 @@ extension Project: Decodable {
self.staffPick = try values.decode(Bool.self, forKey: .staffPick)
self.state = try values.decode(State.self, forKey: .state)
self.stats = try Project.Stats(from: decoder)
self.tags = try values.decodeIfPresent([String].self, forKey: .tags)
self.urls = try values.decode(UrlsEnvelope.self, forKey: .urls)
self.video = try values.decodeIfPresent(Video.self, forKey: .video)
}
Expand Down
7 changes: 7 additions & 0 deletions KsApi/models/ProjectTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -310,4 +310,11 @@ final class ProjectTests: XCTestCase {

XCTAssertTrue(project.stats.goalMet)
}

func testTags() {
let tags = ["Witchstarter", "Arts", "Games"]
let project = Project.template |> Project.lens.tags .~ tags
XCTAssertEqual(3, project.tags?.count)
XCTAssertEqual("Witchstarter, Arts, Games", project.tags?.joined(separator: ", "))
}
}
63 changes: 43 additions & 20 deletions KsApi/models/lenses/ProjectLenses.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ extension Project {
creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls,
video: $1.video
) }
)

Expand All @@ -20,7 +21,7 @@ extension Project {
creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug, staffPick:
$1.staffPick, state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
$1.staffPick, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls, video: $1.video
) }
)

Expand All @@ -31,7 +32,7 @@ extension Project {
country: $1.country, creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization,
photo: $1.photo, prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $0, state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
staffPick: $0, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls, video: $1.video
) }
)

Expand All @@ -42,7 +43,8 @@ extension Project {
creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls,
video: $1.video
) }
)

Expand All @@ -53,7 +55,8 @@ extension Project {
creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls,
video: $1.video
) }
)

Expand All @@ -64,7 +67,8 @@ extension Project {
country: $1.country, creator: $0, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls,
video: $1.video
) }
)

Expand All @@ -75,7 +79,8 @@ extension Project {
country: $1.country, creator: $1.creator, memberData: $1.memberData, dates: $0, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls,
video: $1.video
) }
)

Expand All @@ -86,7 +91,8 @@ extension Project {
country: $1.country, creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $0,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls,
video: $1.video
) }
)

Expand All @@ -97,7 +103,8 @@ extension Project {
country: $1.country, creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $0, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls,
video: $1.video
) }
)

Expand All @@ -108,7 +115,8 @@ extension Project {
country: $1.country, creator: $1.creator, memberData: $0, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls,
video: $1.video
) }
)

Expand All @@ -119,7 +127,8 @@ extension Project {
country: $1.country, creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $0, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls,
video: $1.video
) }
)

Expand All @@ -130,7 +139,8 @@ extension Project {
country: $1.country, creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $0, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls,
video: $1.video
) }
)

Expand All @@ -141,7 +151,8 @@ extension Project {
country: $1.country, creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $0,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls,
video: $1.video
) }
)

Expand All @@ -152,7 +163,8 @@ extension Project {
country: $1.country, creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $0, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls,
video: $1.video
) }
)

Expand All @@ -163,7 +175,7 @@ extension Project {
country: $1.country, creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $0, slug: $1.slug, staffPick: $1.staffPick,
state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls, video: $1.video
) }
)

Expand All @@ -175,7 +187,7 @@ extension Project {
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $0,
staffPick: $1.staffPick,
state: $1.state, stats: $1.stats, urls: $1.urls, video: $1.video
state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls, video: $1.video
) }
)

Expand All @@ -186,7 +198,7 @@ extension Project {
country: $1.country, creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $0, stats: $1.stats, urls: $1.urls, video: $1.video
staffPick: $1.staffPick, state: $0, stats: $1.stats, tags: $1.tags, urls: $1.urls, video: $1.video
) }
)

Expand All @@ -197,7 +209,18 @@ extension Project {
country: $1.country, creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $0, urls: $1.urls, video: $1.video
staffPick: $1.staffPick, state: $1.state, stats: $0, tags: $1.tags, urls: $1.urls, video: $1.video
) }
)

public static let tags = Lens<Project, [String]?>(
view: { $0.tags },
set: { Project(
availableCardTypes: $1.availableCardTypes, blurb: $1.blurb, category: $1.category,
country: $1.country, creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, tags: $0, urls: $1.urls, video: $1.video
) }
)

Expand All @@ -208,7 +231,7 @@ extension Project {
country: $1.country, creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, urls: $0, video: $1.video
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $0, video: $1.video
) }
)

Expand All @@ -219,7 +242,7 @@ extension Project {
country: $1.country, creator: $1.creator, memberData: $1.memberData, dates: $1.dates, id: $1.id,
location: $1.location, name: $1.name, personalization: $1.personalization, photo: $1.photo,
prelaunchActivated: $1.prelaunchActivated, rewardData: $1.rewardData, slug: $1.slug,
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, urls: $1.urls, video: $0
staffPick: $1.staffPick, state: $1.state, stats: $1.stats, tags: $1.tags, urls: $1.urls, video: $0
) }
)
}
Expand Down
1 change: 1 addition & 0 deletions KsApi/models/templates/ProjectTemplates.swift
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ extension Project {
staffPick: false,
state: .live,
stats: .template,
tags: ["Action & Adventure", "Adaptation", "Board Games"],
urls: Project.UrlsEnvelope(
web: Project.UrlsEnvelope.WebEnvelope(
project: "https://www.kickstarter.com/projects/creator/a-fun-project",
Expand Down
1 change: 1 addition & 0 deletions Library/Tracking/KSRAnalytics.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1492,6 +1492,7 @@ private func projectProperties(
props["has_video"] = project.video != nil
props["prelaunch_activated"] = project.prelaunchActivated
props["rewards_count"] = project.rewards.count
props["tags"] = project.tags?.joined(separator: ", ")
props["updates_count"] = project.stats.updatesCount

let now = dateType.init().date
Expand Down
Loading