import store from '../../store';
import googleHelper from './helpers/googleHelper';
import providerRegistry from './providerRegistry';

export default providerRegistry.register({
  id: 'bloggerPage',
  getToken(location) {
    const token = store.getters['data/googleTokens'][location.sub];
    return token && token.isBlogger ? token : null;
  },
  getUrl(location) {
    return `https://www.blogger.com/blogger.g?blogID=${location.blogId}#editor/target=page;pageID=${location.pageId}`;
  },
  getDescription(location) {
    const token = this.getToken(location);
    return `${location.pageId} — ${location.blogUrl} — ${token.name}`;
  },
  publish(token, html, metadata, publishLocation) {
    return googleHelper.uploadBlogger(
      token,
      publishLocation.blogUrl,
      publishLocation.blogId,
      publishLocation.pageId,
      metadata.title,
      html,
      null,
      null,
      null,
      true,
    )
      .then(page => ({
        ...publishLocation,
        blogId: page.blog.id,
        pageId: page.id,
      }));
  },
  makeLocation(token, blogUrl, pageId) {
    const location = {
      providerId: this.id,
      sub: token.sub,
      blogUrl,
    };
    if (pageId) {
      location.pageId = pageId;
    }
    return location;
  },
});