Ghost/ghost/admin/app/services/config.js
Kevin Ansfield 35860fad70 Removed usage of /configuration/timezones/ endpoint
no issue
- replaced timezones endpoint with `@tryghost/timezone-data` module
2019-02-26 12:37:50 +07:00

71 lines
1.8 KiB
JavaScript

import Ember from 'ember';
import RSVP from 'rsvp';
import Service, {inject as service} from '@ember/service';
import timezoneData from '@tryghost/timezone-data';
import {computed} from '@ember/object';
// ember-cli-shims doesn't export _ProxyMixin
const {_ProxyMixin} = Ember;
export default Service.extend(_ProxyMixin, {
ajax: service(),
ghostPaths: service(),
session: service(),
content: null,
init() {
this._super(...arguments);
this.content = {};
},
fetch() {
let promises = [];
promises.push(this.fetchUnauthenticated());
if (this.session.isAuthenticated) {
promises.push(this.fetchAuthenticated());
}
return RSVP.all(promises);
},
fetchUnauthenticated() {
let siteUrl = this.ghostPaths.url.api('site');
return this.ajax.request(siteUrl).then(({site}) => {
// normalize url to non-trailing-slash
site.blogUrl = site.url.replace(/\/$/, '');
site.blogTitle = site.title;
delete site.url;
delete site.title;
Object.assign(this.content, site);
}).then(() => {
this.notifyPropertyChange('content');
});
},
fetchAuthenticated() {
let configUrl = this.ghostPaths.url.api('config');
return this.ajax.request(configUrl).then(({config}) => {
Object.assign(this.content, config);
}).then(() => {
this.notifyPropertyChange('content');
});
},
availableTimezones: computed(function () {
return RSVP.resolve(timezoneData);
}),
blogDomain: computed('blogUrl', function () {
let blogUrl = this.get('blogUrl');
let blogDomain = blogUrl
.replace(/^https?:\/\//, '')
.replace(/\/?$/, '');
return blogDomain;
})
});