@@ -245,49 +245,47 @@ def fetch_app_templates(version: str) -> dict[str, Template]:
245245 """
246246
247247 def get_release_by_tag (tag : str ) -> dict | None :
248- response = net .get (constants .Reflex .RELEASES_URL )
248+ url = f"{ constants .Reflex .RELEASES_URL } /tags/v{ tag } "
249+ response = net .get (url )
250+ if response .status_code == 404 :
251+ return None
249252 response .raise_for_status ()
250- releases = response .json ()
251- for release in releases :
252- if release ["tag_name" ] == f"v{ tag } " :
253- return release
254- return None
253+ return response .json ()
255254
256255 release = get_release_by_tag (version )
257256 if release is None :
258257 console .warn (f"No templates known for version { version } " )
259258 return {}
260259
261- assets = release .get ("assets" , [])
262- asset = next ((a for a in assets if a ["name" ] == "templates.json" ), None )
263- if asset is None :
260+ asset_map = {
261+ a ["name" ]: a ["browser_download_url" ] for a in release .get ("assets" , [])
262+ }
263+
264+ templates_url = asset_map .get ("templates.json" )
265+ if not templates_url :
264266 console .warn (f"Templates metadata not found for version { version } " )
265267 return {}
266- templates_url = asset ["browser_download_url" ]
267268
268- templates_data = net .get (templates_url , follow_redirects = True ).json ()["templates" ]
269+ templates_data = (
270+ net .get (templates_url , follow_redirects = True ).json ().get ("templates" , [])
271+ )
269272
270- for template in templates_data :
271- if template ["name" ] == "blank" :
272- template ["code_url" ] = ""
273- continue
274- template ["code_url" ] = next (
275- (
276- a ["browser_download_url" ]
277- for a in assets
278- if a ["name" ] == f"{ template ['name' ]} .zip"
279- ),
280- None ,
281- )
273+ known_fields = {f .name for f in dataclasses .fields (Template )}
282274
283275 filtered_templates = {}
284- for tp in templates_data :
285- if tp ["hidden" ] or tp ["code_url" ] is None :
276+ for template in templates_data :
277+ code_url = (
278+ ""
279+ if template ["name" ] == "blank"
280+ else asset_map .get (f"{ template ['name' ]} .zip" )
281+ )
282+ if template ["hidden" ] or code_url is None :
286283 continue
287- known_fields = {f .name for f in dataclasses .fields (Template )}
288- filtered_templates [tp ["name" ]] = Template (** {
289- k : v for k , v in tp .items () if k in known_fields
284+ filtered_templates [template ["name" ]] = Template (** {
285+ k : v for k , v in template .items () if k in known_fields
290286 })
287+ filtered_templates [template ["name" ]].code_url = code_url
288+
291289 return filtered_templates
292290
293291
0 commit comments