Returns a fresh signed URL for playing back a session's recording, or
signedUrl: null if the audio is no longer available.
The shared Supabase project runs a 48h cleanup cron against the
session-recordings bucket (see legacy chron-bucket-cleanup). Sessions
retain their file_url in the DB forever but the underlying blob is
deleted after 48h. Rather than rendering a silently broken <audio>
element, we ask Supabase to mint a signed URL and treat any failure as
"the file is gone" — createSignedUrlFromFileUrl returns an error for
missing objects (or unparseable URLs), which we surface as a null
signedUrl so the UI can hide the playback section cleanly.
Returns a fresh signed URL for playing back a session's recording, or
signedUrl: nullif the audio is no longer available.The shared Supabase project runs a 48h cleanup cron against the
session-recordingsbucket (see legacychron-bucket-cleanup). Sessions retain theirfile_urlin the DB forever but the underlying blob is deleted after 48h. Rather than rendering a silently broken<audio>element, we ask Supabase to mint a signed URL and treat any failure as "the file is gone" —createSignedUrlFromFileUrlreturns an error for missing objects (or unparseable URLs), which we surface as a null signedUrl so the UI can hide the playback section cleanly.