   render: =>
     # this is actually "beatmapset"
     beatmapset = @props.beatmap
+
+    @showVisual = !beatmapset.nsfw || (currentUser?.user_preferences?.beatmapset_show_nsfw ? false)
 
     showHypeCounts = beatmapset.hype?
     if showHypeCounts

              el BeatmapIcon, beatmap: b

    div
      className: 'beatmapset-panel js-audio--player'
      'data-audio-url': beatmapset.preview_url
      div className: 'beatmapset-panel__panel',
        a
          href: laroute.route('beatmapsets.show', beatmapset: beatmapset.id)
          className: 'beatmapset-panel__header',
          el Img2x,
            className: 'beatmapset-panel__image'
            onError: @hideImage
            src: beatmapset.covers.card
          div className: 'beatmapset-panel__image-overlay'
          div className: 'beatmapset-panel__status-container',
            if beatmapset.video

              @renderDownloadLink()

          div className: 'beatmapset-panel__difficulties', difficulties
      if @showVisual
        button
          type: 'button'
          className: 'beatmapset-panel__play js-audio--play'
      div className: 'beatmapset-panel__shadow'


