Update URL fragment when operations & tags are shown or hidden
This commit is contained in:
18
src/core/plugins/deep-linking/index.js
Normal file
18
src/core/plugins/deep-linking/index.js
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
// import reducers from "./reducers"
|
||||||
|
// import * as actions from "./actions"
|
||||||
|
// import * as selectors from "./selectors"
|
||||||
|
import * as specWrapActions from "./spec-wrap-actions"
|
||||||
|
import * as layoutWrapActions from "./layout-wrap-actions"
|
||||||
|
|
||||||
|
export default function() {
|
||||||
|
return {
|
||||||
|
statePlugins: {
|
||||||
|
spec: {
|
||||||
|
wrapActions: specWrapActions
|
||||||
|
},
|
||||||
|
layout: {
|
||||||
|
wrapActions: layoutWrapActions
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
28
src/core/plugins/deep-linking/layout-wrap-actions.js
Normal file
28
src/core/plugins/deep-linking/layout-wrap-actions.js
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
export const show = (ori, system) => (...args) => {
|
||||||
|
ori(...args)
|
||||||
|
try {
|
||||||
|
let [thing, shown] = args
|
||||||
|
let [type] = thing
|
||||||
|
|
||||||
|
if(type === "operations-tag" || type === "operations") {
|
||||||
|
if(!shown) {
|
||||||
|
return window.location.hash = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
if(type === "operations") {
|
||||||
|
let [, operationId, tag] = thing
|
||||||
|
window.location.hash = `/${tag}/${operationId}`
|
||||||
|
}
|
||||||
|
|
||||||
|
if(type === "operations-tag") {
|
||||||
|
let [, tag] = thing
|
||||||
|
window.location.hash = `/${tag}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch(e) {
|
||||||
|
// This functionality is not mission critical, so if something goes wrong
|
||||||
|
// we'll just move on
|
||||||
|
console.error(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
0
src/core/plugins/deep-linking/spec-wrap-actions.js
Normal file
0
src/core/plugins/deep-linking/spec-wrap-actions.js
Normal file
@@ -10,6 +10,7 @@ import auth from "core/plugins/auth"
|
|||||||
import util from "core/plugins/util"
|
import util from "core/plugins/util"
|
||||||
import SplitPaneModePlugin from "core/plugins/split-pane-mode"
|
import SplitPaneModePlugin from "core/plugins/split-pane-mode"
|
||||||
import downloadUrlPlugin from "core/plugins/download-url"
|
import downloadUrlPlugin from "core/plugins/download-url"
|
||||||
|
import deepLinkingPlugin from "core/plugins/deep-linking"
|
||||||
|
|
||||||
import App from "core/components/app"
|
import App from "core/components/app"
|
||||||
import AuthorizationPopup from "core/components/auth/authorization-popup"
|
import AuthorizationPopup from "core/components/auth/authorization-popup"
|
||||||
@@ -131,6 +132,7 @@ export default function() {
|
|||||||
auth,
|
auth,
|
||||||
ast,
|
ast,
|
||||||
SplitPaneModePlugin,
|
SplitPaneModePlugin,
|
||||||
downloadUrlPlugin
|
downloadUrlPlugin,
|
||||||
|
deepLinkingPlugin
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user