Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-08-10 21:09:46 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-08-10 21:09:46 +0300
commit50ecbfaf1bfe883056ab366c8e4a28fd4574c6fa (patch)
treedc1034549eff45c7f057971da443aa1570bcebd3 /app/assets/javascripts/super_sidebar
parentaaabf6eb167d1a0bb2357f331bd411923ede37a6 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/super_sidebar')
-rw-r--r--app/assets/javascripts/super_sidebar/components/frequent_items_list.vue44
-rw-r--r--app/assets/javascripts/super_sidebar/utils.js28
2 files changed, 44 insertions, 28 deletions
diff --git a/app/assets/javascripts/super_sidebar/components/frequent_items_list.vue b/app/assets/javascripts/super_sidebar/components/frequent_items_list.vue
index 342e1284e86..eb3402f0666 100644
--- a/app/assets/javascripts/super_sidebar/components/frequent_items_list.vue
+++ b/app/assets/javascripts/super_sidebar/components/frequent_items_list.vue
@@ -1,9 +1,11 @@
<script>
import { GlButton, GlTooltipDirective } from '@gitlab/ui';
-import * as Sentry from '@sentry/browser';
-import AccessorUtilities from '~/lib/utils/accessor';
import { __ } from '~/locale';
-import { getTopFrequentItems, formatContextSwitcherItems } from '../utils';
+import {
+ getItemsFromLocalStorage,
+ removeItemFromLocalStorage,
+ formatContextSwitcherItems,
+} from '../utils';
import ItemsList from './items_list.vue';
export default {
@@ -43,35 +45,21 @@ export default {
},
},
created() {
- this.getItemsFromLocalStorage();
+ this.cachedFrequentItems = formatContextSwitcherItems(
+ getItemsFromLocalStorage({
+ storageKey: this.storageKey,
+ maxItems: this.maxItems,
+ }),
+ );
},
methods: {
- getItemsFromLocalStorage() {
- if (!AccessorUtilities.canUseLocalStorage()) {
- return;
- }
- try {
- const parsedCachedFrequentItems = JSON.parse(localStorage.getItem(this.storageKey));
- const topFrequentItems = getTopFrequentItems(parsedCachedFrequentItems, this.maxItems);
- this.cachedFrequentItems = formatContextSwitcherItems(topFrequentItems);
- } catch (e) {
- Sentry.captureException(e);
- }
- },
handleItemRemove(item) {
- try {
- // Remove item from local storage
- const parsedCachedFrequentItems = JSON.parse(localStorage.getItem(this.storageKey));
- localStorage.setItem(
- this.storageKey,
- JSON.stringify(parsedCachedFrequentItems.filter((i) => i.id !== item.id)),
- );
+ removeItemFromLocalStorage({
+ storageKey: this.storageKey,
+ item,
+ });
- // Update the list
- this.cachedFrequentItems = this.cachedFrequentItems.filter((i) => i.id !== item.id);
- } catch (e) {
- Sentry.captureException(e);
- }
+ this.cachedFrequentItems = this.cachedFrequentItems.filter((i) => i.id !== item.id);
},
},
i18n: {
diff --git a/app/assets/javascripts/super_sidebar/utils.js b/app/assets/javascripts/super_sidebar/utils.js
index 3b17a35c5bc..5b46425d223 100644
--- a/app/assets/javascripts/super_sidebar/utils.js
+++ b/app/assets/javascripts/super_sidebar/utils.js
@@ -1,3 +1,4 @@
+import * as Sentry from '@sentry/browser';
import AccessorUtilities from '~/lib/utils/accessor';
import { FREQUENT_ITEMS, FIFTEEN_MINUTES_IN_MS } from '~/frequent_items/constants';
import { truncateNamespace } from '~/lib/utils/text_utility';
@@ -84,4 +85,31 @@ export const formatContextSwitcherItems = (items) =>
link,
}));
+export const getItemsFromLocalStorage = ({ storageKey, maxItems }) => {
+ if (!AccessorUtilities.canUseLocalStorage()) {
+ return [];
+ }
+
+ try {
+ const parsedCachedFrequentItems = JSON.parse(localStorage.getItem(storageKey));
+ return getTopFrequentItems(parsedCachedFrequentItems, maxItems);
+ } catch (e) {
+ Sentry.captureException(e);
+ return [];
+ }
+};
+
+export const removeItemFromLocalStorage = ({ storageKey, item }) => {
+ try {
+ const parsedCachedFrequentItems = JSON.parse(localStorage.getItem(storageKey));
+ const filteredItems = parsedCachedFrequentItems.filter((i) => i.id !== item.id);
+ localStorage.setItem(storageKey, JSON.stringify(filteredItems));
+
+ return filteredItems;
+ } catch (e) {
+ Sentry.captureException(e);
+ return [];
+ }
+};
+
export const ariaCurrent = (isActive) => (isActive ? 'page' : null);