@@ -100,7 +100,8 @@ defmodule PlausibleWeb.StatsController do
100100 hide_footer?: if ( ce? ( ) || demo , do: false , else: site_role != :public ) ,
101101 consolidated_view?: consolidated_view? ,
102102 consolidated_view_available?: consolidated_view_available? ,
103- team_identifier: team_identifier
103+ team_identifier: team_identifier ,
104+ limited_to_segment_id: nil
104105 )
105106
106107 ! stats_start_date && can_see_stats? ->
@@ -396,12 +397,28 @@ defmodule PlausibleWeb.StatsController do
396397 not Teams . locked? ( shared_link . site . team ) ->
397398 current_user = conn . assigns [ :current_user ]
398399 site_role = get_fallback_site_role ( conn )
399- shared_link = Plausible.Repo . preload ( shared_link , site: :owners )
400+ shared_link = Plausible.Repo . preload ( shared_link , site: [ :owners ] , segment: [ ] )
400401 stats_start_date = Plausible.Sites . stats_start_date ( shared_link . site )
401402
402403 flags = get_flags ( current_user , shared_link . site )
403-
404- { :ok , segments } = Plausible.Segments . get_all_for_site ( shared_link . site , site_role )
404+ limited_to_segment_id = shared_link . segment && shared_link . segment . id
405+
406+ segments =
407+ if is_nil ( limited_to_segment_id ) do
408+ { :ok , segments } = Plausible.Segments . get_all_for_site ( shared_link . site , site_role )
409+ segments
410+ else
411+ shared_link . segment
412+ |> Map . take ( [
413+ :id ,
414+ :name ,
415+ :type ,
416+ :inserted_at ,
417+ :updated_at ,
418+ :segment_data
419+ ] )
420+ |> List . wrap ( )
421+ end
405422
406423 embedded? = conn . params [ "embed" ] == "true"
407424
@@ -435,7 +452,8 @@ defmodule PlausibleWeb.StatsController do
435452 # no shared links for consolidated views
436453 consolidated_view?: false ,
437454 consolidated_view_available?: false ,
438- team_identifier: team_identifier
455+ team_identifier: team_identifier ,
456+ limited_to_segment_id: limited_to_segment_id
439457 )
440458 end
441459 end
0 commit comments