@@ -778,6 +778,18 @@ jQuery(document).ready(function ($) {
778778 ) ;
779779 }
780780
781+ // Determine if layers have ever been configured/stored for this map. An
782+ // empty stored object (e.g. all layers removed by the user) still counts
783+ // as configured, so default layers are not re-added after a refresh.
784+ let layers_never_configured =
785+ ! window . localStorage ||
786+ ( window . localStorage . getItem (
787+ mapbox_library_api . dt_maps_layers_cookie_id ,
788+ ) === null &&
789+ window . localStorage . getItem (
790+ mapbox_library_api . dt_maps_layers_cookie_id_by_slug ,
791+ ) === null ) ;
792+
781793 // Convert parent object to array of layer objects.
782794 let layer_cookies = [ ] ;
783795 if (
@@ -788,24 +800,56 @@ jQuery(document).ready(function ($) {
788800 ( [ k , v ] ) => v ,
789801 ) ;
790802 }
791- // Default to showing all contacts if no cookies detected.
792- if ( layer_cookies . length === 0 && dt_maps_layers_cookie === false ) {
793- let default_cookie = {
794- post_type : 'contacts' ,
795- field_key : 'query_all' ,
796- display_order : 0 ,
797- displayed : true ,
798- color : mapbox_library_api . add_records_generate_hex_color ( ) ,
799- } ;
800- default_cookie [ 'id' ] =
801- mapbox_library_api . add_records_generate_captured_state_snapshot_payload_id (
802- default_cookie ,
803- ) ;
804- layer_cookies . push ( default_cookie ) ;
805-
806- // Persist default cookie.
803+ // Default to showing all contacts, all groups and all users when layers
804+ // have never been configured for this map. Once the user removes the
805+ // layers (leaving an empty stored object), the defaults are not re-added
806+ // on refresh.
807+ if ( layer_cookies . length === 0 && layers_never_configured ) {
807808 dt_maps_layers_cookie = { } ;
808- dt_maps_layers_cookie [ '' + default_cookie [ 'id' ] ] = default_cookie ;
809+
810+ // Build the default layer specs, only including post types that are
811+ // available on this map.
812+ let post_type_options = mapbox_library_api . obj . settings . post_types ;
813+ let system_options =
814+ mapbox_library_api . obj . settings . post_types_system_options ;
815+ let default_layers = [ ] ;
816+ if ( post_type_options && post_type_options [ 'contacts' ] ) {
817+ default_layers . push ( {
818+ post_type : 'contacts' ,
819+ layer_name : post_type_options [ 'contacts' ] . label ,
820+ } ) ;
821+ }
822+ if ( post_type_options && post_type_options [ 'groups' ] ) {
823+ default_layers . push ( {
824+ post_type : 'groups' ,
825+ layer_name : post_type_options [ 'groups' ] . label ,
826+ } ) ;
827+ }
828+ if ( system_options && system_options [ 'users' ] ) {
829+ default_layers . push ( {
830+ post_type : 'system-users' ,
831+ layer_name : system_options [ 'users' ] . label ,
832+ } ) ;
833+ }
834+
835+ $ . each ( default_layers , function ( idx , layer ) {
836+ let default_cookie = {
837+ post_type : layer . post_type ,
838+ field_key : 'query_all' ,
839+ display_order : idx ,
840+ displayed : true ,
841+ layer_name : layer . layer_name ,
842+ color : mapbox_library_api . add_records_generate_hex_color ( ) ,
843+ } ;
844+ default_cookie [ 'id' ] =
845+ mapbox_library_api . add_records_generate_captured_state_snapshot_payload_id (
846+ default_cookie ,
847+ ) ;
848+ layer_cookies . push ( default_cookie ) ;
849+ dt_maps_layers_cookie [ '' + default_cookie [ 'id' ] ] = default_cookie ;
850+ } ) ;
851+
852+ // Persist default layers.
809853 window . SHAREDFUNCTIONS . save_json_to_local_storage (
810854 mapbox_library_api . dt_maps_layers_cookie_id_by_slug ,
811855 dt_maps_layers_cookie ,
0 commit comments