@@ -69,6 +69,9 @@ export default function Feed(): React.ReactElement {
6969 const [ selectGbfsVersions , setSelectGbfsVersions ] = useState < string [ ] > (
7070 searchParams . get ( 'gbfs_versions' ) ?. split ( ',' ) ?? [ ] ,
7171 ) ;
72+ const [ selectedLicenses , setSelectedLicenses ] = useState < string [ ] > (
73+ searchParams . get ( 'licenses' ) ?. split ( ',' ) ?? [ ] ,
74+ ) ;
7275 const [ activePagination , setActivePagination ] = useState (
7376 searchParams . get ( 'o' ) !== null ? Number ( searchParams . get ( 'o' ) ) : 1 ,
7477 ) ;
@@ -130,6 +133,10 @@ export default function Feed(): React.ReactElement {
130133 version : areGBFSFiltersEnabled
131134 ? selectGbfsVersions . join ( ',' ) . replaceAll ( 'v' , '' )
132135 : undefined ,
136+ license_ids :
137+ selectedLicenses . length > 0
138+ ? selectedLicenses . join ( ',' )
139+ : undefined ,
133140 } ,
134141 } ,
135142 } ) ,
@@ -143,6 +150,7 @@ export default function Feed(): React.ReactElement {
143150 isOfficialFeedSearch ,
144151 selectedFeatures ,
145152 selectGbfsVersions ,
153+ selectedLicenses ,
146154 ] ) ;
147155
148156 useEffect ( ( ) => {
@@ -169,6 +177,9 @@ export default function Feed(): React.ReactElement {
169177 if ( selectGbfsVersions . length > 0 ) {
170178 newSearchParams . set ( 'gbfs_versions' , selectGbfsVersions . join ( ',' ) ) ;
171179 }
180+ if ( selectedLicenses . length > 0 ) {
181+ newSearchParams . set ( 'licenses' , selectedLicenses . join ( ',' ) ) ;
182+ }
172183 if ( isOfficialFeedSearch ) {
173184 newSearchParams . set ( 'official' , 'true' ) ;
174185 }
@@ -187,6 +198,7 @@ export default function Feed(): React.ReactElement {
187198 selectedFeedTypes ,
188199 selectedFeatures ,
189200 selectGbfsVersions ,
201+ selectedLicenses ,
190202 isOfficialFeedSearch ,
191203 ] ) ;
192204
@@ -214,6 +226,11 @@ export default function Feed(): React.ReactElement {
214226 setSelectGbfsVersions ( [ ...newGbfsVersions ] ) ;
215227 }
216228
229+ const newLicenses = searchParams . get ( 'licenses' ) ?. split ( ',' ) ?? [ ] ;
230+ if ( newLicenses . join ( ',' ) !== selectedLicenses . join ( ',' ) ) {
231+ setSelectedLicenses ( [ ...newLicenses ] ) ;
232+ }
233+
217234 const newSearchOfficial = Boolean ( searchParams . get ( 'official' ) ) ?? false ;
218235 if ( newSearchOfficial !== isOfficialFeedSearch ) {
219236 setIsOfficialFeedSearch ( newSearchOfficial ) ;
@@ -265,6 +282,7 @@ export default function Feed(): React.ReactElement {
265282 } ) ;
266283 setSelectedFeatures ( [ ] ) ;
267284 setSelectGbfsVersions ( [ ] ) ;
285+ setSelectedLicenses ( [ ] ) ;
268286 setIsOfficialFeedSearch ( false ) ;
269287 }
270288
@@ -400,6 +418,7 @@ export default function Feed(): React.ReactElement {
400418 isOfficialFeedSearch = { isOfficialFeedSearch }
401419 selectedFeatures = { selectedFeatures }
402420 selectedGbfsVersions = { selectGbfsVersions }
421+ selectedLicenses = { selectedLicenses }
403422 setSelectedFeedTypes = { ( feedTypes ) => {
404423 setActivePagination ( 1 ) ;
405424 setSelectedFeedTypes ( { ...feedTypes } ) ;
@@ -416,6 +435,10 @@ export default function Feed(): React.ReactElement {
416435 setSelectGbfsVersions ( versions ) ;
417436 setActivePagination ( 1 ) ;
418437 } }
438+ setSelectedLicenses = { ( licenses ) => {
439+ setActivePagination ( 1 ) ;
440+ setSelectedLicenses ( licenses ) ;
441+ } }
419442 isOfficialTagFilterEnabled = { isOfficialTagFilterEnabled }
420443 areFeatureFiltersEnabled = { areFeatureFiltersEnabled }
421444 areGBFSFiltersEnabled = { areGBFSFiltersEnabled }
@@ -515,8 +538,24 @@ export default function Feed(): React.ReactElement {
515538 />
516539 ) ) }
517540
541+ { selectedLicenses . map ( ( license ) => (
542+ < Chip
543+ color = 'primary'
544+ variant = 'outlined'
545+ size = 'small'
546+ label = { license }
547+ key = { license }
548+ onDelete = { ( ) => {
549+ setSelectedLicenses ( [
550+ ...selectedLicenses . filter ( ( sl ) => sl !== license ) ,
551+ ] ) ;
552+ } }
553+ />
554+ ) ) }
555+
518556 { ( selectedFeatures . length > 0 ||
519557 selectGbfsVersions . length > 0 ||
558+ selectedLicenses . length > 0 ||
520559 isOfficialFeedSearch ||
521560 selectedFeedTypes . gtfs_rt ||
522561 selectedFeedTypes . gtfs ||
0 commit comments