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:
Diffstat (limited to 'app/assets/javascripts/jira_connect/subscriptions/utils.js')
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/utils.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/app/assets/javascripts/jira_connect/subscriptions/utils.js b/app/assets/javascripts/jira_connect/subscriptions/utils.js
new file mode 100644
index 00000000000..ecd1a31339a
--- /dev/null
+++ b/app/assets/javascripts/jira_connect/subscriptions/utils.js
@@ -0,0 +1,73 @@
+import AccessorUtilities from '~/lib/utils/accessor';
+import { ALERT_LOCALSTORAGE_KEY } from './constants';
+
+const isFunction = (fn) => typeof fn === 'function';
+
+/**
+ * Persist alert data to localStorage.
+ */
+export const persistAlert = ({ title, message, linkUrl, variant } = {}) => {
+ if (!AccessorUtilities.isLocalStorageAccessSafe()) {
+ return;
+ }
+
+ const payload = JSON.stringify({ title, message, linkUrl, variant });
+ localStorage.setItem(ALERT_LOCALSTORAGE_KEY, payload);
+};
+
+/**
+ * Return alert data from localStorage.
+ */
+export const retrieveAlert = () => {
+ if (!AccessorUtilities.isLocalStorageAccessSafe()) {
+ return null;
+ }
+
+ const initialAlertJSON = localStorage.getItem(ALERT_LOCALSTORAGE_KEY);
+ // immediately clean up
+ localStorage.removeItem(ALERT_LOCALSTORAGE_KEY);
+
+ if (!initialAlertJSON) {
+ return null;
+ }
+
+ return JSON.parse(initialAlertJSON);
+};
+
+export const getJwt = () => {
+ return new Promise((resolve) => {
+ if (isFunction(AP?.context?.getToken)) {
+ AP.context.getToken((token) => {
+ resolve(token);
+ });
+ } else {
+ resolve();
+ }
+ });
+};
+
+export const getLocation = () => {
+ return new Promise((resolve) => {
+ if (isFunction(AP?.getLocation)) {
+ AP.getLocation((location) => {
+ resolve(location);
+ });
+ } else {
+ resolve();
+ }
+ });
+};
+
+export const reloadPage = () => {
+ if (isFunction(AP?.navigator?.reload)) {
+ AP.navigator.reload();
+ } else {
+ window.location.reload();
+ }
+};
+
+export const sizeToParent = () => {
+ if (isFunction(AP?.sizeToParent)) {
+ AP.sizeToParent();
+ }
+};