Ghost/ghost/admin/app/routes/explore/index.js
Aileen Nowak ec14f78ba3 Removed usage of did-insert hook and simplified openExploreWindow method
- We don't actually utilise the history handling for Explore, as it's not a full screen modal and therefore don't need passing in previous routes before opening the iframe
- Removed usage of `did-insert` livecycle hook and reverted to usage of `contructor` and `willDestroy` instead to add and remove message event listener
2023-08-11 10:47:47 +01:00

81 lines
2.8 KiB
JavaScript

import AuthenticatedRoute from 'ghost-admin/routes/authenticated';
import {action} from '@ember/object';
import {inject as service} from '@ember/service';
export default class ExploreIndexRoute extends AuthenticatedRoute {
@service explore;
@service store;
@service router;
@service feature;
beforeModel(transition) {
super.beforeModel(...arguments);
// Usage of query param to ensure that sites can be submitted across
// older versions of Ghost where the `connect` part lives in the
// explore route directly. By using the query param, we avoid causing
// a 404 and handle the redirect here.
if (transition.to?.queryParams?.new === 'true') {
this.explore.isIframeTransition = false;
return this.router.transitionTo('explore.connect');
}
// Ensure the explore window is set to open
if (transition.to?.localName === 'index') {
this.explore.isIframeTransition = true;
this.explore.openExploreWindow();
}
}
model() {
return this.store.findAll('integration');
}
@action
willTransition(transition) {
let isExploreTransition = false;
if (transition) {
let destinationUrl = (typeof transition.to === 'string')
? transition.to
: (transition.intent
? transition.intent.url
: '');
if (destinationUrl?.includes('/explore')) {
isExploreTransition = true;
this.explore.isIframeTransition = isExploreTransition;
if (destinationUrl?.includes('/explore/submit')) {
// only show the submit page if the site is already submitted
// and redirect to the connect page if not.
if (Object.keys(this?.explore?.siteData).length >= 1) {
this.controllerFor('explore').submitExploreSite();
} else {
transition.abort();
return this.router.transitionTo('explore.connect');
}
} else {
let path = destinationUrl.replace(/explore\//, '');
path = path === '/' ? '/explore/' : path;
if (destinationUrl?.includes('/explore/about')) {
window.open(`${this.explore.exploreUrl}about/`, '_blank').focus();
path = '/explore/';
}
// Send the updated route to the iframe
this.explore.sendRouteUpdate({path});
}
}
}
this.explore.toggleExploreWindow(isExploreTransition);
}
buildRouteInfoMetadata() {
return {
titleToken: 'Explore'
};
}
}