Ghost/ghost/admin/app/controllers/explore.js
Aileen Booker 6c9f8ec32d
Improved URL syncing between Admin and Explore (#15640)
no issue

Improve the route communication between Ghost Admin and Ghost Explore to
reflect route changes in the URL and correctly navigate to Explore sub
routes
2022-10-21 11:48:18 +01:00

57 lines
1.8 KiB
JavaScript

import Controller from '@ember/controller';
import {action} from '@ember/object';
import {inject as service} from '@ember/service';
export default class ExploreController extends Controller {
@service explore;
@service router;
get exploreCredentials() {
const explore = this.model.findBy('slug', 'ghost-explore');
const adminKey = explore.adminKey;
return adminKey.secret;
}
get visibilityClass() {
return this.explore.isIframeTransition ? 'explore iframe-explore-container' : ' explore fullscreen-explore-container';
}
@action
closeConnect() {
if (this.explore.isIframeTransition) {
this.explore.sendRouteUpdate({path: '/explore'});
this.router.transitionTo('/explore');
} else {
this.router.transitionTo('/dashboard');
}
}
@action
submitExploreSite() {
const token = this.exploreCredentials;
const apiUrl = this.explore.apiUrl;
const query = new URLSearchParams();
query.append('token', token);
query.append('url', apiUrl);
if (this.explore.isIframeTransition) {
this.explore.sendRouteUpdate({path: this.explore.submitRoute, queryParams: query.toString()});
// Set a short timeout to give Explore enough time to navigate
// to the submit page and fetch the required site data
setTimeout(() => {
this.explore.toggleExploreWindow(true);
}, 500);
} else {
// Ghost Explore URL to submit a new site
const destination = new URL(`${this.explore.exploreUrl}${this.explore.submitRoute}`);
destination.search = query;
window.location = destination.toString();
}
}
}