Browse Source

Update algolia to latest

Jordi Boggiano 6 years ago
parent
commit
20943d8037

+ 0 - 2
src/Packagist/WebBundle/Controller/WebController.php

@@ -79,8 +79,6 @@ class WebController extends Controller
         if ($req->getRequestFormat() !== 'json') {
             return $this->render('PackagistWebBundle:Web:search.html.twig', [
                 'packages' => [],
-                'tags' => array_map('htmlentities', (array) $tagsFilter),
-                'type' => htmlentities($typeFilter),
             ]);
         }
 

+ 30 - 24
src/Packagist/WebBundle/Resources/public/js/search.js

@@ -10,27 +10,41 @@ if (decodeURI(location.search).match(/[<>]/)) {
     location.replace(location.pathname);
 }
 
-if (algoliaConfig.tags) {
-    searchParameters.disjunctiveFacets = ['tags'];
-    searchParameters.disjunctiveFacetsRefinements = {
-        tags: algoliaConfig.tags,
-    };
-}
-
-if (algoliaConfig.type) {
-    searchParameters.hierarchicalFacets = [{attributes: ['type'], name: 'type'}];
-    searchParameters.hierarchicalFacetsRefinements = {
-        type: [algoliaConfig.type],
-    };
-}
-
 var searchThrottle = null;
 var search = instantsearch({
     appId: algoliaConfig.app_id,
     apiKey: algoliaConfig.search_key,
     indexName: algoliaConfig.index_name,
-    urlSync: {
-        trackedParameters: ['query', 'attribute:*', 'page']
+    routing: {
+        stateMapping: {
+            stateToRoute: function (uiState) {
+                return {
+                    query: uiState.query,
+                    type: uiState.menu && uiState.menu.type,
+                    tags: uiState.refinementList && uiState.refinementList.tags && uiState.refinementList.tags.join('~'),
+                    page: uiState.page,
+                };
+            },
+            routeToState: function (routeState) {
+                if (routeState.q) {
+                    routeState.query = routeState.q;
+                }
+                if (routeState.query === undefined || routeState.query === '') {
+                    return {};
+                }
+
+                return {
+                    query: routeState.query,
+                    menu: {
+                        type: routeState.type
+                    },
+                    refinementList: {
+                        tags: routeState.tags && routeState.tags.split('~'),
+                    },
+                    page: routeState.page
+                };
+            },
+        },
     },
     searchFunction: function(helper) {
         var searchResults = $('#search-container');
@@ -38,8 +52,6 @@ var search = instantsearch({
         if (helper.state.query === ''
             && helper.state.hierarchicalFacetsRefinements.type === undefined
             && (helper.state.disjunctiveFacetsRefinements.tags === undefined || helper.state.disjunctiveFacetsRefinements.tags.length === 0)
-            && algoliaConfig.tags.length === 0
-            && algoliaConfig.type.length === 0
         ) {
             searchResults.addClass('hidden');
         } else {
@@ -185,9 +197,3 @@ search.addWidget(
 );
 
 search.start();
-
-if (algoliaConfig.tags.length || algoliaConfig.type.length) {
-    search.helper.once('change', function (e) {
-        window.history.replaceState(null, 'title', window.location.pathname);
-    });
-}

+ 1 - 3
src/Packagist/WebBundle/Resources/views/layout.html.twig

@@ -204,15 +204,13 @@
 
         <script>
             var algoliaConfig = {{ algolia|json_encode|raw }};
-            algoliaConfig.tags = {{ tags|default([])|json_encode|raw }};
-            algoliaConfig.type = {{ type|default('')|json_encode|raw }};
         </script>
 
         <script src="{{ asset('libs/jquery-2.1.4.min.js') }}"></script>
         <script src="{{ asset('libs/humane-3.2.2.min.js') }}"></script>
         <script src="{{ asset('bundles/packagistweb/js/layout.js') }}"></script>
         <script src="{{ asset('libs/bootstrap-3.3.5/js/bootstrap.min.js')}}"></script>
-        <script src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.2.2/dist/instantsearch.min.js"></script>
+        <script src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.7.4/dist/instantsearch.min.js"></script>
         <script src="{{ asset('bundles/packagistweb/js/search.js') }}"></script>
 
         {%- if not app.debug and google_analytics.ga_key %}