From 56cd8a282e5c5dab3eb49be332448a8991470288 Mon Sep 17 00:00:00 2001 From: shampton Date: Fri, 2 Aug 2019 10:38:26 -0700 Subject: [PATCH] Visual review app gitlab storage keys Move away from using generic LocalStorage and SessionStorage keys which could be used by the customer for their own application. --- .../visual_review_toolbar/components/comment.js | 6 +++--- .../visual_review_toolbar/components/comment_mr_note.js | 4 ++-- .../visual_review_toolbar/components/comment_storage.js | 8 ++++---- .../visual_review_toolbar/components/login.js | 4 ++-- .../visual_review_toolbar/components/mr_id.js | 4 ++-- .../visual_review_toolbar/shared/constants.js | 9 +++++++++ .../javascripts/visual_review_toolbar/shared/index.js | 6 ++++++ .../javascripts/visual_review_toolbar/store/state.js | 6 +++--- .../visual-review-tools-constant-storage-keys.yml | 5 +++++ 9 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 changelogs/unreleased/visual-review-tools-constant-storage-keys.yml diff --git a/app/assets/javascripts/visual_review_toolbar/components/comment.js b/app/assets/javascripts/visual_review_toolbar/components/comment.js index 20effc1751d..a03dc14b319 100644 --- a/app/assets/javascripts/visual_review_toolbar/components/comment.js +++ b/app/assets/javascripts/visual_review_toolbar/components/comment.js @@ -1,5 +1,5 @@ import { nextView } from '../store'; -import { localStorage, COMMENT_BOX, LOGOUT } from '../shared'; +import { localStorage, COMMENT_BOX, LOGOUT, STORAGE_MR_ID, STORAGE_TOKEN } from '../shared'; import { clearNote } from './note'; import { buttonClearStyles } from './utils'; import { addForm } from './wrapper'; @@ -27,8 +27,8 @@ const comment = state => { // If we reach a design where we can logout from multiple views, promote this // to it's own package const logoutUser = state => { - localStorage.removeItem('token'); - localStorage.removeItem('mergeRequestId'); + localStorage.removeItem(STORAGE_TOKEN); + localStorage.removeItem(STORAGE_MR_ID); state.token = ''; state.mergeRequestId = ''; diff --git a/app/assets/javascripts/visual_review_toolbar/components/comment_mr_note.js b/app/assets/javascripts/visual_review_toolbar/components/comment_mr_note.js index f71ffbf4f20..da67763261c 100644 --- a/app/assets/javascripts/visual_review_toolbar/components/comment_mr_note.js +++ b/app/assets/javascripts/visual_review_toolbar/components/comment_mr_note.js @@ -1,5 +1,5 @@ import { nextView } from '../store'; -import { localStorage, CHANGE_MR_ID_BUTTON, COMMENT_BOX } from '../shared'; +import { localStorage, CHANGE_MR_ID_BUTTON, COMMENT_BOX, STORAGE_MR_ID } from '../shared'; import { clearNote } from './note'; import { buttonClearStyles } from './utils'; import { addForm } from './wrapper'; @@ -18,7 +18,7 @@ const selectedMrNote = state => { }; const clearMrId = state => { - localStorage.removeItem('mergeRequestId'); + localStorage.removeItem(STORAGE_MR_ID); state.mergeRequestId = ''; }; diff --git a/app/assets/javascripts/visual_review_toolbar/components/comment_storage.js b/app/assets/javascripts/visual_review_toolbar/components/comment_storage.js index 32a9e7e2f05..49c9400437e 100644 --- a/app/assets/javascripts/visual_review_toolbar/components/comment_storage.js +++ b/app/assets/javascripts/visual_review_toolbar/components/comment_storage.js @@ -1,7 +1,7 @@ import { selectCommentBox } from './utils'; -import { sessionStorage } from '../shared'; +import { sessionStorage, STORAGE_COMMENT } from '../shared'; -const getSavedComment = () => sessionStorage.getItem('comment') || ''; +const getSavedComment = () => sessionStorage.getItem(STORAGE_COMMENT) || ''; const saveComment = () => { const currentComment = selectCommentBox(); @@ -9,12 +9,12 @@ const saveComment = () => { // This may be added to any view via top-level beforeunload listener // so let's skip if it does not apply if (currentComment && currentComment.value) { - sessionStorage.setItem('comment', currentComment.value); + sessionStorage.setItem(STORAGE_COMMENT, currentComment.value); } }; const clearSavedComment = () => { - sessionStorage.removeItem('comment'); + sessionStorage.removeItem(STORAGE_COMMENT); }; export { getSavedComment, saveComment, clearSavedComment }; diff --git a/app/assets/javascripts/visual_review_toolbar/components/login.js b/app/assets/javascripts/visual_review_toolbar/components/login.js index 4a6976ef2fd..20ab01bc690 100644 --- a/app/assets/javascripts/visual_review_toolbar/components/login.js +++ b/app/assets/javascripts/visual_review_toolbar/components/login.js @@ -1,5 +1,5 @@ import { nextView } from '../store'; -import { localStorage, LOGIN, TOKEN_BOX } from '../shared'; +import { localStorage, LOGIN, TOKEN_BOX, STORAGE_TOKEN } from '../shared'; import { clearNote, postError } from './note'; import { rememberBox, submitButton } from './form_elements'; import { selectRemember, selectToken } from './utils'; @@ -22,7 +22,7 @@ const storeToken = (token, state) => { const rememberMe = selectRemember().checked; if (rememberMe) { - localStorage.setItem('token', token); + localStorage.setItem(STORAGE_TOKEN, token); } state.token = token; diff --git a/app/assets/javascripts/visual_review_toolbar/components/mr_id.js b/app/assets/javascripts/visual_review_toolbar/components/mr_id.js index f51e9631dd2..695b3af8aa0 100644 --- a/app/assets/javascripts/visual_review_toolbar/components/mr_id.js +++ b/app/assets/javascripts/visual_review_toolbar/components/mr_id.js @@ -1,5 +1,5 @@ import { nextView } from '../store'; -import { MR_ID, MR_ID_BUTTON, localStorage } from '../shared'; +import { MR_ID, MR_ID_BUTTON, STORAGE_MR_ID, localStorage } from '../shared'; import { clearNote, postError } from './note'; import { rememberBox, submitButton } from './form_elements'; import { selectForm, selectMrBox, selectRemember } from './utils'; @@ -23,7 +23,7 @@ const storeMR = (id, state) => { const rememberMe = selectRemember().checked; if (rememberMe) { - localStorage.setItem('mergeRequestId', id); + localStorage.setItem(STORAGE_MR_ID, id); } state.mergeRequestId = id; diff --git a/app/assets/javascripts/visual_review_toolbar/shared/constants.js b/app/assets/javascripts/visual_review_toolbar/shared/constants.js index a56ea378b14..0d5b666ab0a 100644 --- a/app/assets/javascripts/visual_review_toolbar/shared/constants.js +++ b/app/assets/javascripts/visual_review_toolbar/shared/constants.js @@ -15,6 +15,12 @@ const REMEMBER_ITEM = 'gitlab-remember-item'; const REVIEW_CONTAINER = 'gitlab-review-container'; const TOKEN_BOX = 'gitlab-token'; +// Storage keys +const STORAGE_PREFIX = '--gitlab'; // Using `--` to make the prefix more unique +const STORAGE_MR_ID = `${STORAGE_PREFIX}-merge-request-id`; +const STORAGE_TOKEN = `${STORAGE_PREFIX}-token`; +const STORAGE_COMMENT = `${STORAGE_PREFIX}-comment`; + // colors — these are applied programmatically // rest of styles belong in ./styles const BLACK = 'rgba(46, 46, 46, 1)'; @@ -39,6 +45,9 @@ export { REMEMBER_ITEM, REVIEW_CONTAINER, TOKEN_BOX, + STORAGE_MR_ID, + STORAGE_TOKEN, + STORAGE_COMMENT, BLACK, CLEAR, MUTED, diff --git a/app/assets/javascripts/visual_review_toolbar/shared/index.js b/app/assets/javascripts/visual_review_toolbar/shared/index.js index 751eae74dde..d8ccb170592 100644 --- a/app/assets/javascripts/visual_review_toolbar/shared/index.js +++ b/app/assets/javascripts/visual_review_toolbar/shared/index.js @@ -14,6 +14,9 @@ import { REMEMBER_ITEM, REVIEW_CONTAINER, TOKEN_BOX, + STORAGE_MR_ID, + STORAGE_TOKEN, + STORAGE_COMMENT, BLACK, CLEAR, MUTED, @@ -41,6 +44,9 @@ export { REMEMBER_ITEM, REVIEW_CONTAINER, TOKEN_BOX, + STORAGE_MR_ID, + STORAGE_TOKEN, + STORAGE_COMMENT, BLACK, CLEAR, MUTED, diff --git a/app/assets/javascripts/visual_review_toolbar/store/state.js b/app/assets/javascripts/visual_review_toolbar/store/state.js index 741a5c7d99c..b7853bb0723 100644 --- a/app/assets/javascripts/visual_review_toolbar/store/state.js +++ b/app/assets/javascripts/visual_review_toolbar/store/state.js @@ -1,5 +1,5 @@ import { comment, login, mrForm } from '../components'; -import { localStorage, COMMENT_BOX, LOGIN, MR_ID } from '../shared'; +import { localStorage, COMMENT_BOX, LOGIN, MR_ID, STORAGE_MR_ID, STORAGE_TOKEN } from '../shared'; const state = { browser: '', @@ -74,8 +74,8 @@ const initializeState = (wind, doc) => { }; const getInitialView = () => { - const token = localStorage.getItem('token'); - const mrId = localStorage.getItem('mergeRequestId'); + const token = localStorage.getItem(STORAGE_TOKEN); + const mrId = localStorage.getItem(STORAGE_MR_ID); if (token) { state.token = token; diff --git a/changelogs/unreleased/visual-review-tools-constant-storage-keys.yml b/changelogs/unreleased/visual-review-tools-constant-storage-keys.yml new file mode 100644 index 00000000000..4c9b048aaa3 --- /dev/null +++ b/changelogs/unreleased/visual-review-tools-constant-storage-keys.yml @@ -0,0 +1,5 @@ +--- +title: Fix visual review app storage keys +merge_request: 31427 +author: +type: fixed