@@ -66,6 +66,9 @@ export default function Feed(): React.ReactElement {
6666 const [ selectGbfsVersions , setSelectGbfsVersions ] = useState < string [ ] > (
6767 searchParams . get ( 'gbfs_versions' ) ?. split ( ',' ) ?? [ ] ,
6868 ) ;
69+ const [ selectedLicenses , setSelectedLicenses ] = useState < string [ ] > (
70+ searchParams . get ( 'licenses' ) ?. split ( ',' ) ?? [ ] ,
71+ ) ;
6972 const [ activePagination , setActivePagination ] = useState (
7073 searchParams . get ( 'o' ) !== null ? Number ( searchParams . get ( 'o' ) ) : 1 ,
7174 ) ;
@@ -127,6 +130,10 @@ export default function Feed(): React.ReactElement {
127130 version : areGBFSFiltersEnabled
128131 ? selectGbfsVersions . join ( ',' ) . replaceAll ( 'v' , '' )
129132 : undefined ,
133+ license_ids :
134+ selectedLicenses . length > 0
135+ ? selectedLicenses . join ( ',' )
136+ : undefined ,
130137 } ,
131138 } ,
132139 } ) ,
@@ -140,6 +147,7 @@ export default function Feed(): React.ReactElement {
140147 isOfficialFeedSearch ,
141148 selectedFeatures ,
142149 selectGbfsVersions ,
150+ selectedLicenses ,
143151 ] ) ;
144152
145153 useEffect ( ( ) => {
@@ -166,6 +174,9 @@ export default function Feed(): React.ReactElement {
166174 if ( selectGbfsVersions . length > 0 ) {
167175 newSearchParams . set ( 'gbfs_versions' , selectGbfsVersions . join ( ',' ) ) ;
168176 }
177+ if ( selectedLicenses . length > 0 ) {
178+ newSearchParams . set ( 'licenses' , selectedLicenses . join ( ',' ) ) ;
179+ }
169180 if ( isOfficialFeedSearch ) {
170181 newSearchParams . set ( 'official' , 'true' ) ;
171182 }
@@ -181,6 +192,7 @@ export default function Feed(): React.ReactElement {
181192 selectedFeedTypes ,
182193 selectedFeatures ,
183194 selectGbfsVersions ,
195+ selectedLicenses ,
184196 isOfficialFeedSearch ,
185197 ] ) ;
186198
@@ -208,6 +220,11 @@ export default function Feed(): React.ReactElement {
208220 setSelectGbfsVersions ( [ ...newGbfsVersions ] ) ;
209221 }
210222
223+ const newLicenses = searchParams . get ( 'licenses' ) ?. split ( ',' ) ?? [ ] ;
224+ if ( newLicenses . join ( ',' ) !== selectedLicenses . join ( ',' ) ) {
225+ setSelectedLicenses ( [ ...newLicenses ] ) ;
226+ }
227+
211228 const newSearchOfficial = Boolean ( searchParams . get ( 'official' ) ) ?? false ;
212229 if ( newSearchOfficial !== isOfficialFeedSearch ) {
213230 setIsOfficialFeedSearch ( newSearchOfficial ) ;
@@ -259,6 +276,7 @@ export default function Feed(): React.ReactElement {
259276 } ) ;
260277 setSelectedFeatures ( [ ] ) ;
261278 setSelectGbfsVersions ( [ ] ) ;
279+ setSelectedLicenses ( [ ] ) ;
262280 setIsOfficialFeedSearch ( false ) ;
263281 }
264282
@@ -396,6 +414,7 @@ export default function Feed(): React.ReactElement {
396414 isOfficialFeedSearch = { isOfficialFeedSearch }
397415 selectedFeatures = { selectedFeatures }
398416 selectedGbfsVersions = { selectGbfsVersions }
417+ selectedLicenses = { selectedLicenses }
399418 setSelectedFeedTypes = { ( feedTypes ) => {
400419 setActivePagination ( 1 ) ;
401420 setSelectedFeedTypes ( feedTypes ) ;
@@ -412,6 +431,10 @@ export default function Feed(): React.ReactElement {
412431 setSelectGbfsVersions ( versions ) ;
413432 setActivePagination ( 1 ) ;
414433 } }
434+ setSelectedLicenses = { ( licenses ) => {
435+ setActivePagination ( 1 ) ;
436+ setSelectedLicenses ( licenses ) ;
437+ } }
415438 isOfficialTagFilterEnabled = { isOfficialTagFilterEnabled }
416439 areFeatureFiltersEnabled = { areFeatureFiltersEnabled }
417440 areGBFSFiltersEnabled = { areGBFSFiltersEnabled }
@@ -511,8 +534,24 @@ export default function Feed(): React.ReactElement {
511534 />
512535 ) ) }
513536
537+ { selectedLicenses . map ( ( license ) => (
538+ < Chip
539+ color = 'primary'
540+ variant = 'outlined'
541+ size = 'small'
542+ label = { license }
543+ key = { license }
544+ onDelete = { ( ) => {
545+ setSelectedLicenses ( [
546+ ...selectedLicenses . filter ( ( sl ) => sl !== license ) ,
547+ ] ) ;
548+ } }
549+ />
550+ ) ) }
551+
514552 { ( selectedFeatures . length > 0 ||
515553 selectGbfsVersions . length > 0 ||
554+ selectedLicenses . length > 0 ||
516555 isOfficialFeedSearch ||
517556 selectedFeedTypes . gtfs_rt ||
518557 selectedFeedTypes . gtfs ||
0 commit comments