Home Reference Source

js/ui/write/post.js

import StackExchangeImportViewController from '~/controllers/StackExchangeImportViewController';
import ActionControllerDelegate from '~/delegate/ActionControllerDelegate';
import FormControllerDelegate from '~/delegate/FormControllerDelegate';
import CategoryListViewController from '~/controllers/CategoryListViewController';
import PopoverViewController from '~/controllers/PopoverViewController';
import SwappingViewController from '~/controllers/SwappingViewController';
import ModalViewController from '~/controllers/ModalViewController';
import ModalViewTemplate from '~/template/ModalViewTemplate';
import ForeignInteractor from '~/interactors/ForeignInteractor';
import ModalController from '~/controllers/ModalController';
import ViewController from '~/controllers/ViewController';
import FormConstraint from '~/controllers/Form/FormConstraint';
import ModalTemplate from '~/template/ModalTemplate';
import Template, { TemplateType } from '~/template/Template';
import StackExchange from '~/models/StackExchange';
import ErrorManager, { HandleUnhandledPromise } from '~/helpers/ErrorManager';
import * as Post from '~/models/Post';

const root = document.getElementById("post-write");
if (root) {
    const rootView = new SwappingViewController(root);

    // Load the view
    import('~/template/WritePost/WritePostTemplate').then(async ({ default: WritePostTemplate }) => {

        const writePostTemplate = new WritePostTemplate();
        rootView.displayAlternate(writePostTemplate);

    }).catch(HandleUnhandledPromise);
}

// Create the popover button
export const CREATE_POST_MORE_BUTON = document.getElementById('create-post__trigger');
export const CREATE_POST_MORE_POPOVER = document.getElementById('create-post__more');

// Create SE template
export const IMPORT_FROM_STACKEXCHANGE_TRIGGER = document.getElementById('create-post__StackExchangeImport__trigger');
export const IMPORT_FROM_STACKEXCHANGE = document.getElementById('create-post__StackExchangeImport');
export const IMPORT_FROM_STACKEXCHANGE_LOGIN = document.getElementById('create-post__StackExchangeImport__login');

if (CREATE_POST_MORE_BUTON) {
    const popover = new PopoverViewController(
        null,
        CREATE_POST_MORE_BUTON,
        new Template(CREATE_POST_MORE_POPOVER)
    );

    // Create Stack Exchange import
    const StackExchangeImportModal = new ModalViewTemplate(
        new Template(IMPORT_FROM_STACKEXCHANGE, TemplateType.move),
        {
            title: 'PPCG Importer',
            subtitle: 'Import your posts from codegolf.stackexchange.com'
        }
    );

    IMPORT_FROM_STACKEXCHANGE_TRIGGER.addEventListener("click", () => {
        ModalViewController.shared
            .present(StackExchangeImportModal)
            .catch(HandleUnhandledPromise);
    });

    async function StackExchangeImportLogin() {
        const stackExchange = await StackExchange.authorize();

        new StackExchangeImportViewController(
            IMPORT_FROM_STACKEXCHANGE,
            stackExchange
        );
    }

    IMPORT_FROM_STACKEXCHANGE_LOGIN.addEventListener("click", () => {
        StackExchangeImportLogin()
    })
}