@@ -104,7 +104,7 @@ extension Project {
104104 ) }
105105 )
106106
107- public static let category = Lens < Project , Project . Category > (
107+ public static let category = Lens < Project , Project . Category ? > (
108108 view: { $0. category } ,
109109 set: { Project (
110110 availableCardTypes: $1. availableCardTypes, blurb: $1. blurb, category: $0, country: $1. country,
@@ -133,6 +133,47 @@ extension Project {
133133 ) }
134134 )
135135
136+ public static let categoryName = Lens < Project , String > (
137+ view: { $0. category? . name ?? " " } ,
138+ set: { newName, project in
139+ let updatedCategory : Project . Category ? = project. category. map { category in
140+ Project . Category ( id: category. id, name: newName)
141+ }
142+
143+ return Project (
144+ availableCardTypes: project. availableCardTypes,
145+ blurb: project. blurb,
146+ category: updatedCategory,
147+ country: project. country,
148+ creator: project. creator,
149+ extendedProjectProperties: project. extendedProjectProperties,
150+ memberData: project. memberData, dates: project. dates,
151+ displayPrelaunch: project. displayPrelaunch, flagging: project. flagging, id: project. id,
152+ lastWave: project. lastWave,
153+ location: project. location,
154+ name: project. name,
155+ pledgeManager: project. pledgeManager,
156+ pledgeOverTimeCollectionPlanChargeExplanation: project
157+ . pledgeOverTimeCollectionPlanChargeExplanation,
158+ pledgeOverTimeCollectionPlanChargedAsNPayments: project
159+ . pledgeOverTimeCollectionPlanChargedAsNPayments,
160+ pledgeOverTimeCollectionPlanShortPitch: project. pledgeOverTimeCollectionPlanShortPitch,
161+ pledgeOverTimeMinimumExplanation: project. pledgeOverTimeMinimumExplanation,
162+ personalization: project. personalization, photo: project. photo,
163+ isInPostCampaignPledgingPhase: project. isInPostCampaignPledgingPhase,
164+ postCampaignPledgingEnabled: project. postCampaignPledgingEnabled,
165+ prelaunchActivated: project. prelaunchActivated,
166+ redemptionPageUrl: project. redemptionPageUrl,
167+ rewardData: project. rewardData,
168+ sendMetaCapiEvents: project. sendMetaCapiEvents, slug: project. slug,
169+ staffPick: project. staffPick, state: project. state, stats: project. stats, tags: project. tags,
170+ urls: project. urls,
171+ video: project. video, watchesCount: project. watchesCount,
172+ isPledgeOverTimeAllowed: project. isPledgeOverTimeAllowed
173+ )
174+ }
175+ )
176+
136177 public static let country = Lens < Project , Country > (
137178 view: { $0. country } ,
138179 set: { Project (
0 commit comments